[关闭]
@ensis 2016-02-09T08:21:31.000000Z 字数 1261 阅读 2112

关于OpenSSL CVE-2016-0701漏洞的分析

未分类


今天在乌云知识库看到了360云安全团队对于CVE-2016-0701漏洞分析的文章,文中提及对漏洞发现者博客中的做法不得其解且对“多次握手”颇有疑惑。因为我一直在关注TLS协议安全方面的消息,便仔细去看了那篇博文,在这里阐述下我的理解。

背景

简单描述下DH密钥交换协议的话,就是双方各自选择只有自己知道的,计算 ,互相交换后,可协商出密钥

在TLS协议中,static DH和DHE的不同在于服务器选择的private DH exponent是固定不变的还是每次都变化的。

CVE-2016-0701的攻击效果就是在服务器使用static DH或使用DHE但重复使用private DH exponent时,攻击者可以通过和服务器进行多次握手来恢复出private DH exponent。

攻击方法

首先假设被攻击服务器的private DH exponent为固定不变的,那么每次与客户端通信时都会发送 (

攻击者的攻击过程如下:

攻击的核心在于,在攻击者给服务器发送后,服务器会计算双方协商的密钥s并将其用作加密握手Finished消息的密钥,这里;而攻击者计算的也可看做是在计算密钥s,只不过是通过穷举j的值,当时,,也就是双方计算出的s是相同的,这样双方后续握手的Finished消息所用的密钥就相同,通信可以正常进行。

总结

因此,多次握手是为了找到正确的j。而原博中的yb = g*xa (mod p) * B,我认为应当是mod p)(本文中的g'即原博中的B)。

如果大家有不同的看法,欢迎一起讨论交流。

【update】经与作者确认,确认是typo,原博已更新

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注