ssl应用数据零字节神话

时间:2016-03-17 13:00:12

标签: ssl wireshark traffic tls1.2

最近我分析了几个SSL / TLS应用程序包,我发现在SSL / TLS应用程序数据包的最开始,有些数据包以固定的7个零字节开始,这很有趣。

http://gnuplot.sourceforge.net/docs_4.2/node162.html

TLS 1.2 application data example 1

我不知道为什么会这样?直观地,加密的消息应该是随机字节。

2 个答案:

答案 0 :(得分:2)

我认为这是伽罗瓦反模式所特有的特殊性。 Wireshark所谓的“加密应用程序数据”在本例中为GenericAEADCipher,在RFC 5246, section 6.2.3.3中定义,并以:

开头
opaque nonce_explicit[SecurityParameters.record_iv_length];

RFC 5288, section 3描述了GCM的这个字段:

  

每个不同的nonce_explicit的每个值必须是不同的   调用任何固定密钥的GCM加密功能。没有   满足这种唯一性要求会严重降低安全性。   nonce_explicit可以是64位序列号。

nonce不需要是随机的,也不是不可预测的 - 但绝对必须是唯一的(参见this answer)。使用TLS记录序列号(不是TCP序列号!)是确保一个连接内唯一性的好方法,因此NSS遵循该建议(参见lib/ssl/ssl3con.c,第2148-2167行和第2994-行 - NSS中的3016(3.27.1)。

因此,在新的TLS连接开始时,该nonce将只是一堆零。请注意,在第二个屏幕截图中,最后一个字节已经是01 - 大概是连接中的第二个记录。

答案 1 :(得分:0)

每个SSL组块中的7个前导0意味着它不太可能是SSL加密数据。必须有一些混淆,或者这只是SSL流/块中隐藏的数据通道。