安全建议2868725:推荐禁用RC4
鉴于近期对RC4流密码偏差的实际攻击研究,微软建议客户在其服务中启用TLS1.2,并采取措施逐步淘汰和弃用其TLS实现中的RC4。微软推荐使用TLS1.2与AES-GCM作为更安全的替代方案,这将提供类似的性能。
背景
RC4由Ron Rivest于1987年开发,是最早广泛使用的流密码之一。它最初用于商业应用,在软件实现中比替代方案更快,并因其成本低、速度快且易于实现和使用而逐渐普及。
流密码与块密码
流密码生成与明文长度相同的伪随机比特流,然后通过XOR操作伪随机流和明文以生成密文。这与块密码不同,块密码将明文分块、填充到块大小并加密块。
问题历史
RC4包括密钥调度算法(KSA)和伪随机生成器(PRG),两者都需要健壮以确保密码安全。除了RC4的实现问题(如文档加密和802.11 WEP实现),KSA中存在一些显著问题,导致PRG输出前几个字节出现问题。
伪随机生成器(PRG)只有在输出与随机数据流无法区分时才安全。2001年,Mantin和Shamir发现RC4输出存在显著偏差,特别是第二个输出字节为“0”。自2001年以来,攻击和研究不断演进,日本神户大学的研究人员的工作在评估RC4使用风险时尤为重要。他们的发现显示RC4输出前257个字节存在额外显著偏差,以及对RC4的实际明文恢复攻击。
明文恢复攻击显示被动攻击者收集用不同密钥加密的密文。给定2^32个不同密钥的密文,前257个字节的明文以超过0.5的概率被恢复。
由于SSL/TLS实现无法丢弃早期RC4输出而不进行协议级更改,此攻击证明了对常见实现中RC4攻击的实用性。
互联网使用RC4的情况
评估新安全研究的客户影响和涉及风险的第一步是评估公共和客户环境的状态。使用500万个站点的样本,我们发现58%的站点不使用RC4,而约43%使用。在使用RC4的43%中,只有3.9%要求其使用。因此,默认禁用RC4有可能将RC4使用减少近40%。
微软的响应
今天的更新提供了客户测试和禁用RC4的工具。Internet Explorer 11(IE 11)和Windows 8.1的发布为客户提供了更安全的默认设置。
IE 11默认启用TLS1.2,并在TLS握手期间不再使用基于RC4的密码套件。
有关这些更改的更多详细信息,请参阅IE 11博客。
对于应用程序开发人员,我们在SChannel中实现了额外选项,允许其使用而不涉及RC4。
今天的更新
今天的更新KB 2868725为Windows 7、Windows 8、Windows RT、Server 2008 R2和Server 2012提供了Windows 8.1 RC4更改的支持。这些更新不会更改现有设置,客户必须实施更改(如下所述)以帮助保护其环境免受RC4弱点的影响。
行动呼吁
微软强烈鼓励客户评估、测试和实施以下禁用RC4的选项,以增加客户端、服务器和应用程序的安全性。微软推荐启用TLS1.2和AES-GCM。运行在Windows上且具有自定义SSL/TLS实现(如Mozilla Firefox和Google Chrome)的客户端和服务器不会受到SChannel更改的影响。
如何完全禁用RC4
不希望使用RC4密码套件的客户端和服务器,无论另一方支持的密码如何,可以通过设置以下注册表键完全禁用RC4密码套件。这样,任何必须使用RC4的客户端或服务器都无法建立连接。部署此设置的客户端将无法连接到需要RC4的站点,而部署此设置的服务器将无法服务必须使用RC4的客户端。
|
|
其他应用程序如何防止使用基于RC4的密码套件
RC4并非默认对所有应用程序关闭。直接调用SChannel的应用程序将继续使用RC4,除非它们选择加入安全选项。使用SChannel的应用程序可以通过在SCHANNEL_CRED结构中向SChannel传递SCH_USE_STRONG_CRYPTO标志来阻止其连接使用RC4密码套件。如果需要保持兼容性,则它们还可以实现不回退此标志的备用方案。
微软建议客户升级到TLS1.2并使用AES-GCM。在现代硬件上,AES-GCM具有类似的性能特征,并且是比RC4更安全的替代方案。
- William Peteroy, MSRC
我要感谢Windows、Internet Explorer和.NET团队在这项工作中的努力,以及MSRC工程团队的Ali Rahbar和Suha Can的辛勤工作和投入。我还要感谢Matthew Green在他的博客上对此及其他应用密码学问题的出色撰写。