TLS/SSL 协议详解 (19) Encrypted handshake message
2017-09-07 08:58
253 查看
其实这个报文的目的就是告诉对端自己在整个握手过程中收到了什么数据,发送了什么数据。来保证中间没人篡改报文。
其次,这个报文作用就是确认秘钥的正确性。因为Encrypted handshake message是使用对称秘钥进行加密的第一个报文,如果这个报文加解密校验成功,那么就说明对称秘钥是正确的。
计算方法也比较简单,将之前所有的握手数据(包括接受、发送),计算md运算,然后计算prf,然后就是使用协商好的对称密钥进行加密了。
第一步 MD运算:
md算法根据协议、算法不同,计算方式不一样。
(1)对于TLS1.2,摘要算法是sha256,即md_result = sha256(all_handshake);
(2)对于TLS1.0 1.1,摘要算法是md5和sha1结果的拼接,即 md_result = md5(all_handshake) + sha1(all_handshake)。
(3)特殊情况:如果加密套件中指定了sha384算法,例如RSA_WITH_AES256_CBC_SHA384加密套件,则无论协商使用tls哪个版本,都用sha384,即md_result = sha384(all_handshake)。
第二部 PRF运算:
计算完摘要后,客户端按这种格式:“client finished”+ md_result,作为prf的输入。PRF的输出指定为12字节。12字节的数据前填充4字节message头部信息,就可以送入对称加密流程进行加密了。
PRF运算有机会单讲,其实就是P_HASH运算,P_HASH就是不断hmac运算,直到计算出预定指定长度的值为止。
具体TLS1.0 1.1 和TLS1.2的PRF算法略不同。
我们将prf解密后,可以看到如下格式:
14 代表 finished 类型的message, 00 00 0c 三字节表示后续的prf长度,是12字节。也就是说对称加密的的输入就是
14 00 00 0c + 12字节PRF。
前四个字节就是上面所谓的头。
相关文章推荐
- SSL/TLS 协议详解
- TLS/SSL 协议详解 (4) 运用密码学原理构建安全信道2
- TLS/SSL 协议详解 (9) Client hello
- TLS/SSL 协议详解 (25) https双向认证及常见问题总结
- request:fail ssl hand shake error 微信小程序(已解决!!) TLS1.2版本配置
- TLS/SSL 协议详解(21)证书的选择
- TLS/SSL 协议详解 (5) 运用密码学原理构建安全信道3
- TLS/SSL 协议详解(11) Server Certificate
- HTTPS协议详解(四):TLS/SSL握手过程
- TLS/SSL 协议详解(10) server hello
- TLS/SSL 协议详解(12) server key exchange
- SSL/TLS 协议详解
- TLS/SSL 协议详解(13) certificate request
- TLS/SSL 协议详解 (27) SSL 随机数的作用
- TLS/SSL 协议详解(14) server hello done
- SSL/TLS 协议详解
- TLS/SSL 协议详解 (22)会话复用
- SSL/TLS 协议详解【基于key的对称加密和不对称加密、不基于key的】
- SSL/TLS 协议详解