TLS/SSL 协议详解 (19) Encrypted handshake message

来源:互联网 发布:sql server 2005 sp2 编辑:程序博客网 时间:2024/05/29 10:51

  其实这个报文的目的就是告诉对端自己在整个握手过程中收到了什么数据,发送了什么数据。来保证中间没人篡改报文。

  计算方法也比较简单,将之前所有的握手数据(包括接受、发送),计算md运算,然后计算prf,然后就是使用协商好的对称密钥进行加密了。


MD运算:

md算法根据协议、算法不同,计算方式不一样。

(1)对于TLS1.2,摘要算法是sha256,即md_result = sha256(all_handshake);

(2)对于TLS1.0 1.1,摘要算法是md5sha1结果的拼接,即 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。


原创粉丝点击