Merge branch 'master' of gitee.com:Eyestorm/notes

This commit is contained in:
Estom
2021-06-21 07:34:23 +08:00
6 changed files with 89 additions and 54 deletions

View File

@@ -26,14 +26,16 @@
### 签名与签名验证概念
* 摘要对需要传输的文本做一个HASH计算一般采用SHA1SHA2来获得。
* 签名,使用私钥对需要传输的文本的摘要进行加密,得到的密文即被称为该次传输过程的签名。(看最下面的一部分就明白了)
* 签名验证,数据接收端,拿到传输文本,但是需要确认该文本是否就是发送发出的内容,中途是否曾经被篡改。因此拿自己持有的公钥对签名进行解密(密钥对中的一种密钥加密的数据必定能使用另一种密钥解密。)得到了文本的摘要然后使用与发送方同样的HASH算法计算摘要值再与解密得到的摘要做对比发现二者完全一致则说明文本没有被篡改过。
* 签名,首先使用文本摘要算法进行摘要,然后使用私钥对需要传输的文本的摘要进行加密,得到的密文即被称为该次传输过程的签名。
* 签名验证,数据接收端,拿到传输文本,拿自己持有的公钥对签名进行解密得到了文本的摘要然后使用与发送方同样的HASH算法计算摘要值再与解密得到的摘要做对比发现二者完全一致则说明文本没有被篡改过。
* 防止文本被替代,是发送者本人发送的数据(私钥签名)
* 防止文本被篡改,没有被第三方进行修改(摘要指纹)
### 秘钥算法目标
* 加密,保证数据的隐私性。肯定是不希望别人知道我的消息,所以只要我才能解密。所以得出,公钥负责加密,私钥负责解密。
* 签名,保证数据的完整性。那肯定是不希望有人冒充我发消息,只有我才能发布这个签名, 所以得出,私钥负责签名,公钥负责验证
* 签名,保证数据的完整性。那肯定是不希望有人冒充我发消息,不希望消息被篡改,只有我才能发布这个签名, 所以得出,私钥负责签名,公钥负责验证,并使用消息摘要验证其准确性
## 2 非对称加密RSA实现
@@ -57,7 +59,11 @@
![](image/2021-06-15-22-28-36.png)
AES加密算法涉及4种操作字节替代SubBytes、行移位ShiftRows、列混淆MixColumns和轮密钥加AddRoundKey。下图给出了AES加解密的流程从图中可以看出1解密算法的每一步分别对应加密算法的逆操作2加解密所有操作的顺序正好是相反的。正是由于这几点再加上加密算法与解密算法每步的操作互逆保证了算法的正确性。加解密中每轮的密钥分别由种子密钥经过密钥扩展算法得到。算法中16字节的明文、密文和轮子密钥都以一个4x4的矩阵表示。
AES加密算法涉及4种操作字节替代SubBytes、行移位ShiftRows、列混淆MixColumns和轮密钥加AddRoundKey。下图给出了AES加解密的流程从图中可以看出
1. 解密算法的每一步分别对应加密算法的逆操作.
2. 加解密所有操作的顺序正好是相反的。
正是由于这几点再加上加密算法与解密算法每步的操作互逆保证了算法的正确性。加解密中每轮的密钥分别由种子密钥经过密钥扩展算法得到。算法中16字节的明文、密文和轮子密钥都以一个4x4的矩阵表示。
## 4 非对称加密RSA+对称加密AES
![](image/2021-06-15-22-28-00.png)
@@ -91,7 +97,7 @@ AES加密算法涉及4种操作字节替代SubBytes、行移位Shift
### 概念
为了保证公钥的可信性,提供第三方的认证。保证公钥没有被篡改。相当于由第三方可信机构发起的一次摘要----签名----签名验证过程。主要确认了目标公钥的证书的可信性。
为了保证公钥的可信性,提供第三方的认证。保证公钥没有被篡改。相当于由第三方可信机构发起的一次消息摘要算法----签名----签名验证过程。主要确认了目标公钥的证书的可信性。
一个证书包含以下内容:
* 可信的证书的发布机构

View File

@@ -3,20 +3,28 @@
### 协议简介
SSL/TLS是一种密码通信框架他是世界上使用最广泛的密码通信方法。SSL/TLS综合运用了密码学中的对称密码消息认证码公钥密码数字签名伪随机数生成器等可以说是密码学中的集大成者。
SSL(Secure Socket Layer)安全套接层是1994年由Netscape公司设计的一套协议,并与1995年发布了3.0版本。
TLS(Transport Layer Security)传输层安全是IETF在SSL3.0基础上设计的协议实际上相当于SSL的后续版本。
* SSL(Secure Socket Layer)安全套接层是1994年由Netscape公司设计的一套协议并与1995年发布了3.0版本。
* TLS(Transport Layer Security)传输层安全是IETF在SSL3.0基础上设计的协议,实际上相当于SSL的后续版本。
### 加密算法
包括秘钥生成、加密、解密三个主要过程。
* 非对称加密算法RSADSA/DSS,DiffieHellman
* 对称加密算法AESRC43DES
* HASH算法MD5SHA1SHA256
* Record协议中的MAC(Message Authentication Code)算法
* premaster secret、master secret生成算法
* 秘钥生成算法premaster secret、master secret
### 消息摘要算法
**消息摘要算法**即**HASH算法****消息摘要**Message Digest简要地描述了一分较长的信息或文件它可以被看做一分长文件的**数字指纹**。主要分为以下三类
* MD(Message Digest)消息摘要。生成的消息摘要都是128位的。包括MD2MD4MD5
* SHA(Secure Hash Algorithm)安全散列。固定长度摘要信息。包括SHA-1SHA-2(SHA-224SHA-256SHA-384SHA-512)
* MAC(Message Authentication Code)消息认证码。HMAC(keyed-Hash Message Authentication Code)含有密钥的散列函数算法包含了MD和SHA两个系列的消息摘要算法HMAC只是在原有的MD和SHA算法的基础上添加了密钥。HMAC运算利用hash算法以一个消息M和一个密钥K作为输入生成一个定长的消息摘要作为输出。HMAC算法利用已有的Hash函数关键问题是如何使用密钥。能够通过MD、SHA确保数据的完整性通过秘钥确定数据的身份认证相当于用私钥签名
* MD 系列算法有 HmacMD2、HmacMD4 和 HmacMD5 三种算法;
* SHA 系列算法有 HmacSHA1、HmacSHA224、HmacSHA256、HmacSHA384 和 HmacSHA512 五种算法。
### 协议概念
@@ -77,14 +85,14 @@ TLS主要分为两层
* Application data protocol应用数据协议负责将TLS承载的应用数据传达给通信对象的协议。
## 4 握手协议
## 4 握手协议——典型过程
握手协议是TLS协议中非常重要的协议通过客户端和服务器端的交互和共享一些必要信息从而生成共享密钥和交互证书。
![](image/2021-06-15-23-09-52.png)
![](image/2021-06-15-20-41-00.png)
![](image/2021-06-16-22-33-20.png)
<!-- ![](image/2021-06-15-20-41-00.png) -->
<!-- ![](image/2021-06-16-22-33-20.png) -->
### 4.1 客户端请求SSL内容
### 步骤1 客户端请求SSL内容
* client hello客户端向服务器端发送一个client hello的消息包含下面内容
```
@@ -96,7 +104,7 @@ TLS主要分为两层
6. 可用的压缩方式清单。
```
### 4.2 服务器响应SSL内容
### 步骤2 服务器响应SSL内容
* server hello服务器端收到client hello消息后会向客户端返回一个server hello消息包含如下内容
@@ -116,7 +124,7 @@ TLS主要分为两层
* 可选步骤:CertificateRequest如果是在一个受限访问的环境比如fabric中服务器端也需要向客户端索要证书。如果并不需要客户端认证则不需要此步骤。
* server hello done 服务器端发送server hello done的消息告诉客户端自己的消息结束了。
### 4.3 客户端交换秘钥证书
### 步骤3 客户端交换秘钥证书
* 可选步骤:Certificate。客户端发送客户端证书给服务器。
@@ -128,15 +136,15 @@ TLS主要分为两层
* finished(握手协议结束)客户端告诉服务器端握手协议结束了。
### 4.4 服务器交换秘钥证书
### 步骤4 服务器交换秘钥证书
* ChangeCipherSpec。服务器端告诉客户端自己要切换密码了。
* finished(握手协议结束)服务器端告诉客户端,握手协议结束了。
### 握手协议——RSA握手协议
## 4.1 握手协议——RSA握手协议
![](image/2021-06-17-11-43-17.png)
### 握手协议——DH握手协议
## 4.2 握手协议——DH握手协议
![](image/2021-06-17-11-46-08.png)
@@ -150,9 +158,6 @@ TLS记录协议主要负责消息的压缩加密和认证。当TLS完成握
* 在接收端将数据Record解密验证MAC解压并重组得到密文之后会附加类型版本和长度等其他信息最终组成最后的报文数据。
## 6 master secret密码计算
1. [明文] 客户端发送随机数client_random
2. [明文] 服务器返回随机数server_random
@@ -171,7 +176,37 @@ session_hash = Hash(handshake_messages)
master_secret = PRF(pre_master_secret, "extended master secret",session_hash)[0..47];
```
### 三重握手攻击
## 7 Cipher suite密码套件
### 典型构成
* key establishment (typically a Diffie-Hellman variant or RSA)密钥协商算法(通常是 Diffie-Hellman 变体或 RSA等非对称加密算法
* authentication (the certificate type)身份验证算法证书类型RSA、DSA等签名算法
* confidentiality (a symmetric cipher)机密性算法(对称加密算法)
* integrity (a hash function)完整性算法(消息摘要函数)
### “AES128-SHA”
* RSA for key establishment (implied)
* RSA for authentication (implied)
* 128-bit Advanced Encryption Standard in Cipher Block Chaining (CBC) mode for confidentiality
* 160-bit Secure Hashing Algorithm (SHA) for integrity
### “ECDHE-ECDSA-AES256-GCM-SHA384”
* Elliptic Curve Diffie-Hellman Ephemeral (ECDHE) key exchange for key establishment 椭圆曲线 Diffie-Hellman Ephemeral ( ECDHE ) 密钥交换
* Elliptic Curve Digital Signature Algorithms (ECDSA) for authentication 身份验证的椭圆曲线数字签名算法 ( ECDSA )
* 256-bit Advanced Encryption Standard in Galois/Counter mode (GCM) for confidentiality
* 384-bit Secure Hashing Algorithm for integrity
## 8 中间人攻击
### 中间人攻击模型
![](image/2021-06-21-00-59-31.png)
三重握手(Triple Handshake) (CVE-2014-1295)攻击者A分别与客户端C和服务器S握手协商出同一个主密钥之后令客户端C和服务器S之间重新协商renegotiation或继续resumption会话来握手。可攻破重新协商TLS Exporter RFC5705和"tls-unique" RFC5929。
```
@@ -198,26 +233,3 @@ S向A发送“完成”。A计算其“完成”
与C的连接并将其发送给C。
```
通过以上方式如果使用无“Extended Master Secret”扩展字段的计算方式将发现从C->A和从A->S之间使用的会话密钥是一样的这种叫做未知密钥共享unkown key-shareUKS攻击。当使用扩展主密钥的计算方式时因为有session_hash计算了所有协商消息的hash如果中间攻击者A对协商消息进行改动则客户端和服务端计算的hash值则不一样最后计算出的主密钥也会不同。
## 7 Cipher suite密码套件
### 典型构成
* key establishment (typically a Diffie-Hellman variant or RSA)密钥建立(通常是 Diffie-Hellman 变体或 RSA
* authentication (the certificate type)身份验证(证书类型)
* confidentiality (a symmetric cipher)机密性(对称密码)
* integrity (a hash function)完整性(散列函数)
### “AES128-SHA”
* RSA for key establishment (implied)
* RSA for authentication (implied)
* 128-bit Advanced Encryption Standard in Cipher Block Chaining (CBC) mode for confidentiality
* 160-bit Secure Hashing Algorithm (SHA) for integrity
### “ECDHE-ECDSA-AES256-GCM-SHA384”
* Elliptic Curve Diffie-Hellman Ephemeral (ECDHE) key exchange for key establishment 椭圆曲线 Diffie-Hellman Ephemeral ( ECDHE ) 密钥交换
* Elliptic Curve Digital Signature Algorithms (ECDSA) for authentication 身份验证的椭圆曲线数字签名算法 ( ECDSA )
* 256-bit Advanced Encryption Standard in Galois/Counter mode (GCM) for confidentiality
* 384-bit Secure Hashing Algorithm for integrity

View File

@@ -1 +1,24 @@
![](image/2021-06-17-14-34-10.png)
# TLS实验
> 主要包括两部分实验
> * TLS协议数据内容
> * TLS协议交互过程
## TLS1.3数据内容
## TLS1.3协议交互过程
### 原理
握手是为了协商出一个client和server端都认可的一个对称秘钥典型的秘钥协商算法有两种RSA和ECDH简明介绍下这两种算法会让你对这个过程更加清晰。
## TLS1.3协议交互过程
###
## TLS1.3协议交互过程

View File

@@ -1,6 +0,0 @@
* 非对称加密算法RSADSA/DSS
* 对称加密算法AESRC43DES
* HASH算法MD5SHA1SHA256
* Record协议中的MAC(Message Authentication Code)算法
* premaster secret、master secret生成算法

Binary file not shown.

After

Width:  |  Height:  |  Size: 95 KiB