加密

基本概念:

加密:混淆数据的机制,避免被其它人看到;

身份验证:验证消息的来源是否正确;

完整性:消息是否被伪造和篡改;

对称加密:加密和解密的key是同一个;

非对称加密:加密和解密的key不是同一个,但是加密key和解密key是一一对应的;

TLS:传输层安全, 加密信息在报文中的位置

 

应用层(HTTP,电子邮件,即时通讯...)
会话层(TLS)
物理层
数据链路层
网络层(IP)
传输层(TCP/UDP)
Protocol加密验证身份完整性压缩(可选)分片

 

要想在TLS层中为数据加密,就需要在应用层中采用HTTPS,相较于HTTP,HTTPS是HTTP的升级版,增加了数据加密的功能。

TLS过程:

 

发送端
1:SYN
5:client key exchange
change chiper spec finished
7:应用数据
接收端
2:SYN ACK
3:ACK client hello
4:server hello
certificate
serverhello done
6:change chiper spec finished
8:应用数据
28ms
56ms
TCP连接完成
84ms
112m s
140ms
168ms
196ms
224ms

 

1~2 : TLS是在TCP层之上运行,意味着先要建立TCP连接(三次握手)。

3: 建立TCP连接后,发送端给服务端发送TLS协议版本、支持的加密套件列表。

4: 接收端从发送端发送过来支持的加密套件列表中选择一个加密套件,生成一对非对称加密(公钥+私钥),再把公钥和自己的认证证书发给发送端(认证证书,用于发送端验证服务端的可靠性)。

5: 发送端生成一对对称加密密钥,然后用接收端的公钥加密后,再加上自己的认证证书发送给接收端。

6:接收端通过私钥解密成发送端的对称加密密钥,然后验证消息的可靠性(mac校验),然后给发送回复finished。

7:发送端通过堆成密钥解密信息,mac验证。

8: 建立信道,发送数据。

 

为什么要用非堆成加密密钥对对称加密密钥进行加密? 因为非对称密钥对数据的加密和解密非常耗时,基于性能考虑,采用对称加密密钥对数据进行加密。

为什么发送端不直接把对称密钥发给接收端?因为是明文发送,消息容易被监听窃取。

posted @ 2020-05-27 19:32  DesignMe  阅读(171)  评论(0)    收藏  举报