我们都知道HTTP是明文传输,所以存在窃听、篡改和伪装等风险。为了解决这些问题,https出现了,https在http的应用层和传输层之间增加了一个SSL/TLS层,建立连接时增加了TLS层的四次握手,实现了信息加密、报文校验和身份证书等功能。
今天,我们就来探讨一下,TLS层的信息加密是如何实现的。
https的信息加密是混合加密,也就是对称加密与非对称加密。双方通通信开始前要协商密钥,密钥协商时采用的是非对称加密,进行通信时使用的对称加密。
在密钥协商阶段主要用到以下几种算法:
- RSA算法
- DH算法
- ECDHE算法
RSA算法
TLS第一次握手
clientHello阶段,客户端向服务器发送请求,发送SSL/TLS版本,发送客户端支持的密码套件列表,然后会产生一个随机数(Client Random),发送给服务器,这是生成对称密钥的材料。
第一次握手客户端做的事:
客户端clientHello,客户端发送请求
-
确定SSL/TLS版本
-
客户端生成的随机数,用于生成会话密钥(Client Random)
-
客户端支持的密码套件列表,如RSA算法
TLS第二次握手
服务器会确定自己所支持的SSL/TLS版本,如果不支持,则直接关闭此次连接。在客户