当前位置: 首页 > news >正文

网络安全(加密, Hashing, 证书, SSL/TLS等)学习小结

网上看到的一些关于网络安全的学习资料小结。

对称加密: 通信双方共享同一个密钥。发送方用它来加密,接收方用它来解密。
非对称加密: 有公钥和私钥。

现在的做法一般是用非对称加密生成?钥(公钥还是私钥?)用于传输?,然后再用对称加密进行通信。

加密 : 公钥加密,私钥解密 (公钥是lock,私钥是key)
数字签名证书: 私钥加密(生成签名),公钥解密(验证签名)

既然是加密,那肯定是不希望别人知道我的消息,所以只有我才能解密,所以可得出公钥负责加密,私钥负责解密;同理,既然是签名,那肯定是不希望有人冒充我发消息,只有我才能发布这个签名,所以可得出私钥负责签名,公钥负责验证。

对称加密分为两大类: 序列型 stream cipher 和 分组型 block cipher (更流行).
stream cipher: RC4
RC4: secret key 通过RC4 会生成一个无限长的序列,Plain Text跟RC4进行操作(比如说异或)会生成加密文本。不安全。
block cipher: DES, 3DES, AES, BLOWFISH, RC5, RC6.
非对称加密: RSA

Hash函数最快,其次是对称加密,再是非对称加密。

计算机中的Hash表主要用来存储和查找。
密码学中的Hash函数用途:

  1. 完整性检测(下载文件,解压文件)
    • 注意:奇偶校验和CRC校验都没有抗数据篡改的能力。Hash函数也不可以,但加上key就可以(见数字签名)。
  2. 登录验证,校对密码(加上salt)
  3. 数字签名(加上key)
  4. 区块链

Hash算法有:

  1. MD5: 128 bits
  2. SHA-1: 160 bits
  3. SHA-2
    • SHA-224 224 bits
    • SHA-256 256 bits
    • SHA-384 384 bits
    • SHA-512 512 bits
  4. Whirlpool
  5. SHA-3
  6. SM3

MAC: Message Authentication Code 用来确保消息完整性
HMAC: Hash-based MAC

TLS 1.3之前是MAC, then encrypt
1. plaintext先通过Hash function运算,结果再加上key,生成MAC
2. plaintext再加上MAC进行Encryption,生成Ciphertext
TLS 1.3之后通信双方可以自己定义是MAC then encypt,还是encrypt then MAC
SHA256 + RSA加密,最常见。

数字签名和指纹区别:
指纹只是校验用的,数字签名才是防黑客篡改。

查看证书: 浏览器,命令行
openssl x509 -text -noout -in amazon.cer

CIA原则:
Confidentiality: 保密 (可以通过加密,权限管理和敏感信息不被暴露来实现)
Integrity: 数据内容完整,没有被篡改 (可以通过数字签名校验来实现)
Availability: 不让人家无限制调用你的服务

微软提出的STRIDE模型:
欺骗(Spoofing)
篡改(Tampering):也就是资料修改
否认(Repudiation)
资讯泄露(Information disclosure),可能是私隐泄露或是资料外泄
阻断服务攻击(Denial of service)
特权提升(Elevation of privilege):例如黑客把自己的权限提高

实战原则:

  1. 白名单和黑名单:白名单更严格
  2. 最小权限原则: 人家需要什么权限就给他什么权限,不要图省事给Admin原则
  3. 纵深防御:各个层面都需要考虑安全 (网络层,数据库层,操作系统层)
  4. 数据和代码分离原则: (注入攻击,缓存区溢出) 不要把用户输入作为命令的一部分。
  5. 不可预测性。在设计代码的时候,ID最好是随机变化。

DoS: 拒绝服务 (例如大量的攻击,持续发送SYN包)
用防护墙可以防止网络层攻击。
如何防止应用层DoS攻击?核心是对资源进行限制。不然黑客就会滥用服务。
1. 负载均衡(至少不会攻击同一台服务器。)
2. 限流
3. 缓存(在缓存区就把请求给处理了)
DDoS: Distributed DoS (攻击来自不同IP)

随机数: 用作蜜钥
不能用日期或时间做seed
不用用简单的rand()函数。JAVA里面有security包,用其它时间比如用户鼠标点击数作为seed。
Linux里面的/dev/random 和 /dev/urandom比较安全一些。
通过增大随机数空间或者组合随机数可以增加安全。

黑客攻防:

  1. 文件上传攻击: 黑客把一个包含木马程序的文件直接上传。可以通过限制文件后缀类型(比用MIME格式限制好)和文件大小来防止。
    如果黑客把木马程序直接写到文件内容里面,可以通过压缩或resize文件来破坏可能包含的HTML代码。
    另外一些好办法:
    a)把接受上传的文件服务器单独分开。把文件服务器和应用服务器分开。
    b)把存放文件的目录权限设为只读,不给它执行权限。
    c)随机数改写文件名和文件路径,让黑客找不到上传的文件。
    d)如果网站不需要文件上传功能,就关闭文件上传功能。
  2. 文件包含漏洞: 文件包含其他文件,
    不推荐include *,不要用通配符。这样如果有文件上传漏洞,恶意代码就会被包含进去。
    远程文件包含功能,不用的话,关闭。

#############################
SSL/TLS 学习小结
#############################
SSL/TLS 的目的有3个:

  1. Confidentiality - Data is only accessible by Client and Server. 通过加密encription来实现
  2. Integrity - Data is not modified between Client and Server. 通过Hashing来实现
  3. Authentication - Client/Server are indeed who they say they are. 通过PKI(public key infrastructure)来实现

// Replay: 在Client和Server之间的第三者把截取的消息发送多次。
Anti-Replay:
1) Provided with build-in sequence numbers.
2) Built in to Integrity + Authentication mechanism.

// Repudiation: dishonest sender.
Non-Repudiation:
1) Sender cannot later deny sending a message
2) Byproduct of Integrity + Authentication
If the message is protected by Integrity and Authentication, then we know no one is modifying this message.

SSL/TLS ecosystem involves three key players:

  1. Client:
    • Entity initiating the TLS handshake
    • Web Browser
      • Phone, Apps, Smart Toaster, Internet of Things
      • Optionally authenticated (rare)
  2. Server:
    • Entity receiving the TLS handshake
    • Web Server
      • Apache, IIS, NginX, etc…
      • Load Balancer or SSL Accelerator
    • Always authenticatied
  3. Certification Authority (CA)
    • Governing Entity that issues Certificates
    • Trusted by Client and Server
    • Provides Trust Anchor
      • If we trust the CA, we trust what the CA trusts
    • Five organizations secure 98% of the Internet (IdenTrust, DigiCert, Sectigo, GoDaddy, GlobalSign)

Hashing 算法四原则:

  1. Infeasible to produce a given digest
  2. Impossible to extract original message
  3. Slight changes produce drastic differences
  4. Resulting digest is fixed width (length)

Sender光Hashing Message还不能保证Message不会被中间者篡改,因为中间者可以篡改Message并加上自己的Hashing值。
如果Sender Hashing (Secret Key+Message),可以保证Message不会被中间者篡改,因为中间者得不到Secret Key。
如果Receiver 收到后验证Hash值正确,说明:

  1. 消息没有被篡改 //Integrity
  2. Sender有着同一个Secret Key //Authentication

MAC: Message Authentication Code

  • Concept combining Message + Secret Key when calculating digest
  • Provides Integrity and Authentication for Bulk data transfer
    HMAC: Hash Based Message Authentication Code (MAC的工业标准实现)
  • RFC 2104
  • 描述如何Combine Message 和 Key。Sender 和 Receiver都必须遵循同样的Combination,不然Hashing值还是不match。

Data Integrity:

  • Hashing Algorithm
    • INPUT: Message
    • OUTPUT: Digest
    • Example: MD5, SHA1, etc…
  • MAC - Message Authentication Code
    • INPUT: Message + Secret Key
    • OUTPUT: Digest
    • Example: HMAC (Hash Based Message Authentication Code)

Encryption:

  1. 简单的加密Message is not scalable。因为加密方法一样,如果接收到的加密结果一样,接收方1可以知道接收方2的Message。
  2. Key Based Encryption 针对每个接收方生成一个不同的Secret Key, allows encryption to scale to the whole Internet.
    • Combines industry vetted algorithm with a Secret Key
      • Algorithm is created by experts
      • Secret Keys can be randomly generated
  3. Two types of Key Based Encryption
    • Symmetric Encryption - Ideal for Bulk Data

      • Encrypt and Decrypt using the same keys
      • Strength: Faster - Lower CPU Cost
      • Strength: Cipher text is the same size as Plain Text
      • Weakness: Secret key must be shared - Less Secure
      • Examples:
        • DES 56 bit key
        • RC4 128 bit key
        • 3DES 168 bit key
        • AES 128, 192, or 256 bit keys
        • ChaCha20 128 or 256 bit keys
    • Asymmetric Encryption - Restricted to Limited Data

      • Encrypt and Decrypt using different keys
      • Two different keys are mathematically related
      • What one key Encrypts, only the other can Decrypts
        – One key will be made Public
        – Other key will be kept Private
      • Weakness: Slower - Requires much larger key sizes
      • Weakness: Cipher text expansion
      • Strength: Private Key is never shared - More Secure
      • Examples:
        • DSA
        • RSA - Recommended Key Size 2048 bits
        • Diffie-Hellman
        • ECDSA
        • ECDH

相关文章:

网络安全(加密, Hashing, 证书, SSL/TLS等)学习小结

网上看到的一些关于网络安全的学习资料小结。 对称加密: 通信双方共享同一个密钥。发送方用它来加密,接收方用它来解密。 非对称加密: 有公钥和私钥。 现在的做法一般是用非对称加密生成?钥(公钥还是私钥?)用于传输?&#xff0…...

缓冲技术在嵌入式中的应用

引言 在嵌入式中,不可避免地会遇到数据的收发。 其实,数据的收发有很多情况。 总体上,分为数据的收和发: 其中,数据发送是一个主动的行为,我们对要发送数据的数量特点等都是知道的,比如我们通过…...

vscode交叉编译cmake工程,toolchains设置

在 Visual Studio Code 中编译 CMake 项目时,使用自定义工具链(toolchains)可以很有用,特别是当你需要交叉编译或使用不同的编译器时。以下是在 Visual Studio Code 中使用自定义工具链的一般步骤,以aarch64的嵌入式为…...

MATLAB算法实战应用案例精讲-【优化算法】季节优化算法(SOA)(附MATLAB代码实现)

前言 世界上许多地方一年有四个季节:春、夏、秋、冬。每个季节的天气都不一样。随着天气的变化,生物,尤其是树木会改变它们的行为来适应天气。森林中的每一个个体都被称为一棵树。在满足终止条件之前,森林中的树木通过类似于自然界树木生命周期的四种操作:更新、竞争、播种…...

DevOps持续集成与交付

概述 Jenkins是一个支持容器化部署的、使用Java运行环境的开源软件,使用Jenkins平台可以定制化不同的流程与任务、以自动化的机制支持DevOps领域中的CI与CD,在软件开发与运维的流程中自动化地执行软件工程项目的编译、构建、打包、测试、发布以及部署&a…...

lambda的使用案例(1)

lambda的使用案例 1、分组转换为map Map<String, List<IdaasUserInfoVO>> map userWithOrgVOS1.stream().collect(Collectors.groupingBy(IdaasUserInfoVO::getOrgId));2、map循环 map.forEach(this::saveOrUpdateUser); private void saveOrUpdateUser(String …...

nodejs+vue装修公司CRM系统设计elementui

第3章 系统分析 5 3.1 需求分析 5 3.2 系统可行性分析 5 3.2.1技术可行性&#xff1a;技术背景 5 3.2.2经济可行性 6 3.2.3操作可行性&#xff1a; 6 3.3 项目设计目标与原则 6 3.4系统流程分析 7 3.4.1操作流程 7 3.4.2添加信息流程 8 3.4.3删除信息流程 9 第4章 系统设计 11 …...

开源博客项目Blog .NET Core源码学习(3:数据库操作方式)

开源博客项目Blog采用SqlSugar模块连接并操作数据库&#xff0c;本文学习并记录项目中使用SqlSugar的方式和方法。   首先&#xff0c;数据库连接信息放在了App.Hosting项目的appsettings.json中DbConfig节&#xff0c;支持在DbConfig节配置多个数据库连接信息&#xff0c;以…...

QT--Opencv下报错Mat/imwrite/imread找不到文件

像file not found这类错误 原因是编程系统找不到所指库文件&#xff0c;以此为例&#xff0c;排查自己的每个位置是否有误 1. .pro文件 添加opencv动态库 INCLUDEPATH /usr/include \/usr/include/opencv4 \/usr/include/opencv4/opencv2LIBS /usr/lib/aarch64-linux-gnu…...

风光储一体化能源中心 | 数字孪生智慧能源

自“双碳”目标提出以来&#xff0c;我国能源产业不断朝着清洁低碳化、绿色化的方向发展。其中&#xff0c;风能、太阳能等可再生能源在促进全球能源可持续发展、共建清洁美丽世界中被寄予厚望。风能、太阳能具有波动性、间歇性、随机性等特点&#xff0c;主要通过转化为电能再…...

JavaScript数组分组

数组分组: 含义: 数据按照某个特性归类 1. reducefn(cur, index)作为对象的key,值为按照fn筛选出来的数据 // 利用reduce分组 function group(arr, fn) {// 不是数组if (!Array.isArray(arr)) {return arr}// 不是函数if (typeof fn ! function) {throw new TypeError(fn…...

IEEE PDF eXpress系统报错:TimesNewRoman PS-BoldMT, ItalicMT, PSM

问题&#xff1a; IEEE PDF eXpress系统报错&#xff1a;Errors: Font TimesNewRomanPS-BoldMT, TimesNewRomanPS-ItalicMT, TimesNewRomanPSMT is not embedded (137x on pages 2-6) 答案&#xff1a; 主要原因是PDF的字体嵌入问题&#xff0c;可以看到下图中没有报错中的字体…...

【MATLAB源码-第40期】基于matlab的D*(Dstar)算法栅格路径规划仿真。

1、算法描述 D*算法路径规划 D*算法&#xff08;Dynamic A*&#xff09;是A*算法的一种变种&#xff0c;主要用于在地图中的障碍物信息发生变化时重新计算路径&#xff0c;而不需要从头开始。该算法适用于那些只有部分信息已知的环境中。 工作原理&#xff1a; 1. D*算法首先…...

Pikachu-xxe (xml外部实体注入漏洞)过关笔记

Pikachu-xxe过关笔记 有回显探测是否有回显file:///协议查看本地系统文件php://协议查看php源代码&#xff08;无法查看当前网页代码&#xff0c;只能看别的&#xff09;http://协议爆破开放端口&#xff08;两者的加载时间不同&#xff09; 无回显第一步第二步第三步 运行结果…...

Unity实现设计模式——责任链模式

Unity实现设计模式——责任链模式 责任链模式定义&#xff1a;将请求的发送和接收解耦&#xff0c;让多个接收对象都有机会处理这个请求。将这些接收对象串成一条链&#xff0c;并沿着这条链传递这个请求&#xff0c;直到链上的某个接收对象能够处理它为止。 在职责链模式中&…...

Java中String转换为double类型

这次的java作业是写一个数字转换的小项目&#xff0c;其中从输入框中获取的是String类型&#xff0c;但是要进行数字操作&#xff0c;此时要用到很多操作String类型数据的方法了。 从javafx输入框中获取到String类型后&#xff0c;首先是要判断是否能转换为数字或者小数形式&a…...

不同埋深地下管线的地质雷达响应特征分析

不同埋深地下管线的地质雷达响应特征分析 前言 以混凝土管线为例&#xff0c;建立了不同埋深&#xff08;70cm、100cm、130cm&#xff09;地下管线的二维模型&#xff0c;进行二维地质雷达正演模拟&#xff0c;分析不同材质管线的地质雷达响应特征。 文章目录 不同埋深地下管…...

重新认识mysql

title: “重新认识mysql” createTime: 2022-03-06T15:52:4108:00 updateTime: 2022-03-06T15:52:4108:00 draft: false author: “ggball” tags: [“mysql”] categories: [“db”] description: “” 文章目录 title: "重新认识mysql" createTime: 2022-03-06T15:…...

系统集成|第十九章(笔记)

目录 第十九章 风险管理19.1 风险管理的概述及相关概念19.2 主要过程19.2.1 规划风险管理19.2.2 识别风险19.2.3 实施定性风险分析19.2.4 实施定量风险分析19.2.5 规划风险应对19.2.6 控制风险 上篇&#xff1a;第十八章、安全管理 下篇&#xff1a;第二十章、收尾管理 第十九…...

【Linux】Linux远程访问Windows下的MySQL数据库

1.建立Windows防火墙规则 首先需要开放windows防火墙&#xff0c;针对3306端口单独创建一条规则&#xff0c;允许访问。 打开windows安全中心防火墙与保护&#xff0c;点击高级设置 进入之后&#xff0c;点击入站规则&#xff0c;新建一条规则 新建端口入站规则 端口填写330…...

android安卓core tombstone .pb

Tombstone原理分析_内核工匠的博客-CSDN博客 android tombstone分析_tombstone 分析_良知犹存的博客-CSDN博客 Tombstone简介 当一个native程序开始执行时&#xff0c;系统会注册一些连接到debuggerd的signal handlers。针对进程出现的不同的异常状态&#xff0c;Linux kernel…...

C++简单实现红黑树

目录 一、概念 二、红黑树的性质 三、红黑树的定义 四、红黑树的插入操作 情况一&#xff08;叔叔节点存在且为红色&#xff09;——变色向上调整&#xff1a; 情况二&#xff08;叔叔节点不存在或为黑色&#xff09;——旋转变色&#xff1a; 2.1叔叔节点不存在 2.2叔叔…...

国庆加速度!新增功能点锁定功能,敏捷开发新增估算功能,助力项目快速突破!

大家好&#xff0c;CoCode开发云旗下Co-Project V3.6智能项目管理平台正式发布&#xff0c;平台新增功能点锁定功能、敏捷开发模式新增估算板块和两种估算方式。 功能点锁定功能进一步提高了项目估算的灵活性和准确性&#xff0c;有利于提高项目估算效率&#xff1b;而敏捷开发…...

uniapp 如何动态切换应用图标、名称

有时候我们需要实现类似百度网盘、淘宝APP这种可以动态切换 但是呢这种需求平常非常少见 很多人不知道如何操作 今天就教大家如何实现 这里我们需要用到一款插件Ba-ChangeIcon Ba-ChangeIcon 是一款uniapp动态切换应用图标、名称的插件。可实现过年、过节动态切换应用图标的效…...

CUDA学习笔记0929

一、GPU缓存和变量作用域 1. 缓存类型 &#xff08;1&#xff09;GPU缓存是非可编程存储区域 &#xff08;2&#xff09;GPU包含4类缓存&#xff1a; L1缓存&#xff0c;每个流处理器一个 L2缓存&#xff0c;全部流处理器共享一个 L1和L2都可用于存储本地和全局内存中的数…...

XML-Based Configuration Beans for Ioc Container

XML-Based Configuration XML-based configuration is the traditional way of configuring beans in Spring. <?xml version"1.0" encoding"UTF-8"?> <beans xmlns"http://www.springframework.org/schema/beans"xmlns:xsi"h…...

俞敏洪:董宇辉在北京有房子了!

据媒体报道&#xff0c;9月26日&#xff0c;俞敏洪在直播中透露&#xff0c;董宇辉已经在北京拥有了自己的房子&#xff0c;并且强调这是大家共同努力的结果。 这一消息引起了广泛关注和热议。在此之前&#xff0c;董宇辉曾在公开场合表示&#xff0c;俞敏洪老师为了给他凑钱买…...

蓝桥等考Python组别七级006

第一部分:选择题 1、Python L7 (15分) 下面for循环语句中,变量i的取值范围是( )。 for i in range(9): print(i) 1~90~91~80~8正确答案:D 2、Python L7 (15分) 下面哪一年是闰年?( &#...

港联证券:股市3000点什么意思?

近年来&#xff0c;股市风起云涌&#xff0c;上涨也好&#xff0c;下跌也罢&#xff0c;无一不让人心潮澎湃。但是&#xff0c;如果你听到股市3000点这个数字&#xff0c;你是否知道它意味着什么呢&#xff1f;接下来&#xff0c;我们将从商场体现、微观经济、投资者心态等方面…...

windows 下 vs code 格式化代码(clang-format)

vscode 的格式化代码能力来源于插件&#xff08;有不止一种插件提供格式化功能&#xff09;&#xff0c;而非 vscode 本身 1、安装插件 2、windows 下载 LLVM-17.0.1-win64.exe &#xff08;exe 结尾的安装包&#xff09; Releases llvm/llvm-project GitHub 可以直接把这…...

十堰市公司网站建设/刷僵尸粉网站推广

2019独角兽企业重金招聘Python工程师标准>>> LAMP架构介绍 Linux Apache(httpd) MySQL PHPPHP网站&#xff08;Google、淘宝、百度&#xff09;三个角色可以在一台机器、也可以分开&#xff08;httpd和PHP要在一起&#xff09;httpd、PHP、MySQL工作关系图 PHP去…...

高端网站开发课程sublime/西地那非片能延时多久

如果之间有防火墙的话&#xff0c;还要注意&#xff1a;要使Oracle客户端能正常连接到设置有防火墙的Oracle服务器&#xff0c;单开放一个1521或自定义的监听端口是不够的。昨天晚上为了测试BOM的多层转单层程序&#xff0c;而需要连接到服务器上的Oracle将数据导入。因为服务器…...

织梦做英文网站/seo网站技术培训

Atitit .h5文件上传 v3 1. 上传原理1 2. V3版新特性1 3. Html1 4. Js2 5. uploadV2.js2 6. upServlet &#xff06;  FileUploadService {3 7. 注意&#xff1a;&#xff1a;去除struts的干扰3 8. 参考4 1. 上传原理 FormData apache io 2. V3版新特性 组件化 &#xff0…...

免费网站模板怎么用/抖音关键词排名优化

学习来自风宇blog的博客首页效果 全部用的基本上都是原生的html&#xff0c;css&#xff0c;js特别是flex布局的使用&#xff0c;主轴方向可以是横轴&#xff0c;也可以是纵轴&#xff0c;弹性项还可可以使用百分比sticky粘性布局&#xff0c;作为侧边栏&#xff0c;它不会超出…...

政府网站群应该如何建设/百度app登录

【导语】课件中对每个课题或每个课时的教学内容&#xff0c;教学步骤的安排&#xff0c;教学方法的选择&#xff0c;板书设计&#xff0c;教具或现代化教学手段的应用&#xff0c;各个教学步骤教学环节的时间分配等等&#xff0c;下面是无忧考网整理的初中七年级信息技术下册课…...

做五金的外贸网站有哪些/网店推广的重要性

Red Hat将大力推广RHCT认证 2003年12月9日&#xff0c;全球最大的Linux厂商Red Hat公司在上海召开了Red Hat Enterprise Linux 3产品发布会暨技术讲座&#xff0c;也是Red Hat公司首次在中国大陆举办的产品发布会&#xff0c;此次会议由Red Hat公司和本地培训合作伙伴——文华学…...