HTTPS RSA握手解析
TLS握手过程
解决明文传输的三个风险:
- 窃听
- 信息加密:http交互信息加密,第三方无法获取
- 篡改
- 校验机制:校验信息是否被篡改过,如果有,则警告提示
- 冒充
- 身份证书:证明支付宝是真支付宝
ClientHello: TLS Version, Client Random, Cipher Suites | -> | |
<- | ServerHello: TLS Version, Server Random, Cipher Suites | |
Certificate | ||
ServerHelloDone | ||
ClientKeyExchange: Pubkey | -> | |
ChangeChipherSpec | ||
Finished | ||
<- | ChangeCipherSpec | |
Finished | ||
Application Data | <-> | Application Data |
每行数一个记录,记录是TLS首发数据的基本单位,类似TCP里的segment。多个记录可以组合成一个TCP包发送,所以经过四个消息就可以实现TLS我收,也就是需要2个RTT的时延,然后就可以在安全的通信环境里发送HTTP报文,实现HTTPS协议。
RSA握手过程
在RSA密钥协商算法中,客户端会生成随机密钥,并使用服务端的公钥加密后再传给服务端。
RSA算法缺陷
使用RSA密钥协商算法的最大问题是不支持前向保密。
因为客户端传递随机数给服务端使用的是公钥加密的,服务端收到后会用私钥解密得到随机数。一旦服务器私钥泄露,过去被第三方截获的所有TLS通讯密文都会被破解。为解决这个问题,后面出现了ECDHE算法,现在大多数网站使用的都是ECDHE密钥协商算法。