Group of Software Security In Progress

GoSSIP @ LoCCS.Shanghai Jiao Tong University

安全事件追踪 -- SSL Freak Attack

2015年3月3日,一个新发现的关于SSL的安全漏洞引起了大家的关注,这个漏洞相关的攻击被称为FREAK(全称:Factoring RSA Export Keys)攻击,也就是分解RSA出口密钥。从名字可窥知,这个攻击的可以达成的原因是所谓的RSA出口密钥。出口密钥是一个历史遗留问题,被称作是从九十年代来的僵尸。问题源于美国对出口到国外的密码算法强度加以限制,对应到RSA中,密钥的长度就被限制为512bit(有兴趣的童鞋可以去查一下早期的IE和Netscape浏览器以前使用的对称密码算法RC4的密钥长度)。这里的密钥长度就对应了密码算法的强度,对于RSA算法来说,安全性可以认为基本依赖于大整数分解的问题的困难性(并非严格等价),如果公钥N可以被分解,那么就可以得到私钥,从而通信的内容可以被解密。

要理解为什么FREAK攻击会威胁到用户安全,就要从安全通信协议SSL说起,在通信过程中,为了保护用户数据的安全性,数据使用SSL协议进行加密传输。SSL协议在开始的握手阶段,客户端和服务器会对接下来通信使用的密码套件进行协商,正常情况下客户端提供一组按照优先级从高到底排列的密码套件给服务器,服务器依次查看并选择自己支持的最高的套件版本进行后续通信。之后,客户端和服务器便使用协商好的密码套件进行通信。

如果客户端在提供的列表中提供了RSA_EXPORT这个套件,而服务器又支持RSA_EXPORT密码套件,那么攻击者可以发起中间人攻击,使得服务器和客户端协商后的密码套件为RSA_EXPORT。

此外,即使客户端提供的密码套件列表中不包含RSA_EXPORT,如果客户端使用的OpenSSL版本是0.9.8zd之前, 1.0.0中1.0.0p之前, 或1.0.1中1.0.1k之前的版本,并且要连接的服务器持RSA_EXPORT密码套件,那么也可以被降级到使用RSA_EXPORT密码套件(CVE-2015-0204)。此外,苹果iOS和OS X中的SecureTransport库也有这个问题。 因此,可能遭受攻击的客户端包括Google和Apple的设备,很大一部分嵌入式设备以及使用了SSL协议并且没有禁用RSA_EXPRORT套件的软件。

FreakAttack这个网站对IPv4地址空间进行了扫描,发现支持RSA出口密码套件的服务器比例占到了9.7%(刚爆出时是12.2%),其中包括国内著名的搜狐什么值得买17173等网站,详细列表可前往FreakAttack查看,此外,FreakAttack网站还可对你的客户端进行脆弱性检测,告诉你是否会遭受FREAK攻击。

继续回到SSL协议,在握手阶段协商好密码套件后,服务器便将自己的公钥发送给客户端,之后客户端将选择的预主密钥用服务器的公钥加密后发送给服务器,服务器收到后用私钥解密,即可获得预主密钥,之后两方通过预主密钥生成主密钥,即可进行接下来的对称密码加密通信。

在FREAK攻击中,因为在密码套件协商阶段客户端和服务器的协商结果是RSA_EXPORT套件,因此服务器发给客户端的公钥长度就是512bit。我们知道,512bit长度的密钥是容易被分解的,目前在AWS中花费100美元,用几个小时就可以将512bit的密钥分解,分解后即可得到公钥对应的私钥。因此攻击者在成功分解密钥后,即可解密客户端发给服务器的加过密的预主密钥,而获得预主密钥则意味着攻击者获得了解密后续通信数据的能力。

最后,为了让大家有一个感性认识,我们在这里公布一个某国内著名产品使用的RSA 512-bit 公钥,看看大家有没有兴趣分解:

OpenSSLRSAPublicKey{modulus=b489a09ab62d585894f7e6f2f946534374041d2ff4a8d570ad896d22bc038b57f2c7195d12b90cd6eb9d5c3fb5ed4cc79a07e550424917f845fe71662e924179,publicExponent=10001

如有兴趣的童鞋可以给我们发邮件,会有小小礼物赠送哦~