[译]缓解BEAST对TLS攻击的方式
原文链接:https://community.qualys.com/blogs/securitylabs/2011/10/17/mitigating-the-beast-attack-on-tls
原文发表时间:2011.10.17
本博文仅仅是上述原文的翻译,仅供研究参考,本人不对准确性作任何保证,侵立删,如有转载,需自行承担所有责任。如有翻译不准确的地方,欢迎指教。
更新 (2013.3.19):这篇博文建议使用RC4来缓解BEAST攻击,但最先的发现显示RC比以前所知道的更为弱。目前针对RC4的攻击还无法实用。惟一安全的选择是AES-GCM密码套件,仅在TLS1.2中支持。你可以在新近撰写的博文中查看更多信息。
在这个夏天,有关一种新的SSL攻击手段的说法正在流传。Opera发布了一个补丁,但是没有说是什么补丁。最终一些聪明的人从越来越多的消息中发现了这种攻击的情况。但是攻击的技术细节仍旧是个谜,最后在Thai的博文中得到解释。Thierry Zoller的博文综合了各个链接的情况。
实际上,这种攻击多年前就曾被提出,虽然无法实际应用,但是TLS1.1仍然修复了该问题。最新的攻击技术做了一些优化,使得这种攻击变得可行了。
为了缓解这种攻击,我认为最好通过客户端的方式进行,虽然可能会由于兼容性问题导致无法访问某些网站。对抗BEAST的唯一方式是使用RC4密码套件,正如在PhoneFactor的博文中提到的。
下面给出在Apache中设置的例子:
SSLHonorCipherOrder On
SSLCipherSuite RC4-SHA:HIGH:!ADH
并不是所有人都喜欢RC4,尽管尚未有足够的证据证明它在SSL/TLS中是不安全的。如果你的服务器支持TLS1.1+,你可以尝试Steve Caligo给出的建议:
SSLHonorCipherOrder On
SSLCipherSuite ECDHE-RSA-AES128-SHA256:AES128-GCM-SHA256:RC4:HIGH:!MD5:!aNULL:!EDH
上述设置是将TLS1.2置为最前的位置,以便支持该协议的客户端选择它,该版本是不受BEAST攻击影响的。接着是用于TLS1.0的RC4算法。
我们来看一些没有用的缓解方法:
- 服务端支持TLS 1.1+是个好的开始,但是并不会有太大帮助,因为现在还只有很少一部分客户端支持高版本的协议。即使客户端支持TLS 1.1+协议,还是无法防止中间人攻击强制降级到TLS1.0.(关于对抗降级攻击的信息,参看TLS WG邮件列表的这个主题。)
- 服务端启用空分片技术(?详情参看OpenSSL描述)也没有用。TLS 1.0使用两个初始向量(IVs),分别用于客户端和服务端的通信信道。BEAST利用的脆弱性是在客户端的,无法通过服务端的设置解决。
- 压缩被认为可以使攻击无效,但是TLS 1.1+的协议对客户端的支持并不一致(?)。
更新(2012.1.20): 通过测试昨天发布的OpenSSL 1.0.1-beta2,我发现即使是在TLSv1.0的连接中也会尝试使用AES-CBC-SHA256算法。因此我从建议中将其移除,用另外两个TLSv1.2的密码套件取代。