SWEET32: TLS 64位分组密码生日攻击(CVE-2016-2183)

  • A+
所属分类:漏洞分享

/uploads/allimg/c160828/14H35293950b0-1a55.png

原链: https://access.redhat.com/articles/2548661

译者: Au2o3t@360GearTeam

审校: Terence@360GearTeam

译者注:

该问题的攻击条件苛刻。攻击者需要得到大量密文,论文里作者是通过30个小时,610GB数据实现。另外,需要明文中重要信息大量重复(这也是最终能解密出来的内容),并且要已知若干明文以及其在整个几百G数据中的位置。


概述


分组密码在SSL/TLS协议中的特定配置会遭到碰撞攻击。


背景


传统64位块分组密码在使用CBC模式时很容易被碰撞攻击。SSL/TLS协议所有支持使用3DES对称加密的密码套件都受影响(例如 ECDHE-RSA-DES-CBC3-SHA)。红帽企业版Linux67自带的OpenSSL版本中,基于DES的密码套件的优先级在AES-256AES-128之下,因此只有显式禁用 AES-128 AES-256DES密码才会启用。红帽企业版Linux5自带的OpenSSL版本中,基于DES的密码套件的优先级在AES-256AES-128之间,因此只有显式禁用 AES-256DES密码才会启用。

分组密码的安全性取决于密钥长度。因此,对分组密码最好的攻击是穷尽搜索密钥空间,其具有2^k复杂度。然而当分组密码使用如CBC模式加密大数据时,块长度对安全性的影响也不可忽视。

当使用CBC模式时,在使用同一密钥加密2^(n/2)块数据后将存在生日攻击,两密文块能够发生碰撞。这意味着存在相同的输入。结合几个条件(下面讨论)将可用于从加密数据中获取明文。


攻击的实用性


1、首先,DES/3DES SSL/TLS 中唯一使用64位块的密码。如前所述,包含3DES的密码套件优先级低于其它密码套件。

2、要攻击64位分组密码,至少需要获取32GB以上密文。在SSL/TLS的情况,这需要在一个会话中完成(新会话会重商对称密钥)。因此HTTPS长连接会受影响。

3、在许多情况下,仅恢复两明文块之间的异或是不足以构成有实际影响的攻击的。但若满足下面条件,则可实施攻击:

·同一秘密被重复发送

·已知部分明文

4、研究论文中提到的攻击的概念证明中,假设了一些认证令牌在整个通信过程中在服务器和客户端之前传递(令牌可以是一个用于基本身份验证的凭据)。此时攻击者在被攻击网站运行一个恶意的 JavaScript 脚本,通过暴力攻击来获取凭据。


缓解措施


1SSL/TLS配置中 AES 优先级应高于 DES。红帽企业版Linux67自带的OpenSSL版本中已经这样做了。

2、红帽企业版Linux5自带的OpenSSL版本中,3DES的优先级在AES-256和AES-128之间,因此不应禁用基于 AES-256 的密码套件。

3、使用OpenSSL的服务器,不应禁用AES-128和AES-256密码套件。红帽企业版Linux自带的Apache版本使用默认密码串,其中AES优先于DES/3DES密码套件。


解决方案


1、这一缺陷出于DES/3DES密码的设计,并不是实现问题。

2、这个缺陷不直接影响红帽企业版Linux5、6、7中的任何密码库(OpenSSL,NSS和GnuTLS),因在默认密码列表配置中有若干优先级高于3DES的更强的密码套件。

3、对于红帽企业版Linux5,不要禁用基于 AES-256 的密码套件。对于红帽企业版Linux6和7,不要禁用基于 AES-128 或 AES-256 的密码套件。


上游的安全修复:


OpenSSL

OpenSSL 已评估为低危级别的安全问题,他们已在1.0.2分支中将3DES密码套件由类别“高”移至“中”,并将在即将发布的新版本中默认设为禁用。

NSS:

Mozilla正为所有密码套件做数据限制。


相关问题


上游 OpenVPN 也易受 Sweet32 攻击(CVE-2016-6329)。红帽的OpenVPN实现不受该缺陷影响。


参考


https://access.redhat.com/security/cve/CVE-2016-2183

https://sweet32.info/

  • 我的微信
  • 这是我的微信扫一扫
  • weinxin
  • 我的微信公众号
  • 我的微信公众号扫一扫
  • weinxin

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: