我试图理解TLS的Finished消息的内容。我使用WireShark来捕捉浏览器和互联网之间的流量。当选择的密码房是AES_GCM时,我注意到了一种“奇怪”。由于它是一个流密码,它没有填充,所以,如果我做对了,在Finished消息中发送的数据应该是:
也就是说,总共有36个字节。“问题”是Finished消息包大小为40字节。
下面是:

Hello Requests?再来一个这个..。客户端用176个字节数据包回答:

我遗漏了什么?
发布于 2015-06-27 06:58:02
编辑:我没有意识到我回答的时候,但这是一个欺骗的TLS中疯狂完成的消息
因为Wireshark不能解码加密的记录,所以正如@Stackz所建议的那样,HelloRequest的解码是正确的。它无论如何都会尝试,并且只有当它检测到解码失败时,它才会抑制解码并显示“加密握手消息”。在这里,它没有发现解码完全是假的。
每个握手消息(在握手记录中)都以前缀1字节msg_type和3字节长度开头,参见https://www.rfc-editor.org/rfc/rfc5246#section-7.4。因此,你有:
*8个字节显式
* 16字节加密1byte=0x14类型,3bytes=0x00000C len,12字节verify_data
* 16字节
共计40
在客户端,客户端可能会立即发起另一次握手;136个字节对于ClientHello来说是可行的,特别是如果“优化”了服务器刚刚同意的内容。
https://security.stackexchange.com/questions/57804
复制相似问题