三名研究人员发现以前的RSA密码攻击的变体ROBOT攻击能在某些情况下获得解密HTTPS 敏感流量的私钥。“ROBOT” 的全称是“Blichenbacher Oracle 攻击的回归 (Return of Blichenbacher’s Oracle Threat)”,它基于差不多20多年前针对RSA 算法的Blichenbacher攻击。
Blichenbacher攻击简介
1998年,贝尔实验室的研究员Daniel Blichenbacher 发现,当服务器所有人选择通过 RSA 算法处理服务器端密钥交换时,TLS 服务器的操作过程就会出现一个bug。在默认情况下,客户端(浏览器)和服务器开始经由 HTTPS 通信前,客户端会选择通过服务器公钥加密的随机会话密钥。这个被加密的会话密钥会发送给服务器,而服务器会使用私钥来解密信息并保存会话密钥副本以便后续识别每个客户端。
由于 RSA 算法并不安全,因此它会使用一个填充系统在加密会话密钥顶层增加额外的随机层。Blichenbacher发现,如果这个会话密钥是通过 RSA 算法加密且填充系统是 PKCS#11.5,那么攻击者就能将一个随机会话密钥发送到 TLS 服务器并询问是否有效。服务器会以“是”或“否”来回应。也就是说,通过简单的暴力攻击,攻击者就能够测出会话密钥并解密TLS (HTTPS) 服务器和客户端(浏览器)之间的所有 HTTPS 信息。
失败的Blichenbacher攻击防御措施
TLS 标准的设计人员并未更换不安全的 RSA 算法,而是决定增加暴力猜测攻击的实施难度。对于原始的Blichenbacher攻击而言,这种修复方案是不完整且不充分的。此后在2003年、2012年、2014年以及2015年都出现了原始攻击的变体。最近一次研究人员在2016年3月公布了影响三分之一 HTTPS 站点的DROWN 攻击。
ROBOT 攻击现身
目前出现的另外一个变体是 ROBOT 攻击,它也是基于 TLS 创建者在1998年及以后所部署的对抗措施。研究人员表示,问题在于,TLS 标准非常复杂而很多服务器设备供应商未正确执行 TLS 标准 (RFC 5246) 的 7.4.7.1章的内容,即对抗原始Bleichenbacher 攻击的措施。
发现并报告 ROBOT 攻击的三名研究人员指出,思科、Citrix、F5和 Radware 等公司提供的产品在某种配置下都容易遭ROBOT 攻击。这种配置即服务器所有人通过 RSA 算法并使用PKCS #11.5 填充系统来加密 TLS 会话密钥。在补丁发布之前,研究人员及 US-CERT 建议易受攻击设备的管理人员禁用TLS 会话密钥 RSA 加密。这种办法实现起来并不难,因为多数设备还支持比 RSA 算法更好的 ECDH 会话密钥加密。
Alexa前100名的27个站点易受攻击
研究人员指出,虽然 ROBOT 攻击基于19年前的老旧攻击,但在排名Alexa前100的站点中,27个站点易受攻击,其中包括Facebook 和 PayPal在内。研究人员还公布了一个案例,说明如何解密Facebook 流量。排名 Alexa 前100名之后的站点可能也易受攻击。研究人员已发布 Python 脚本帮助服务器管理员扫描易受攻击的主机并在 ROBOT 攻击主页上增加了一个 ROBOT 漏洞检查器。
跟 DROWN 缺陷一样,这个问题的影响同样巨大,因为攻击者能记录 HTTPS 流量并在后续进行解密。还有一点值得注意:攻击者通过 ROBOT 攻击获取的并非是 TLS 服务器密钥,而是每个客户端连接的个人会话密钥。也就是说,攻击者无法访问通用解密密钥,而只是访问某个 HTTPS 会话的一次性密钥。要解密大量 HTTPS 流量,ROBOT 攻击也要投入大量计算能力。