我听说有一个名为Logjam的“新” TLS漏洞,它的作用以及如何防止它?

评论

您提供的链接可以很好地回答您的问题,包括“我该怎么办?”。部分。

这根本不是“新”漏洞。如此向后兼容在这点上是一个坏主意。

#1 楼

TL; DR

SSL / TLS客户端和服务器同意使用一些弱密码。好吧,事实证明弱加密是弱加密。


详细信息

执行SSL / TLS协议时,客户端会发送受支持的密码套件列表,然后服务器选择一个。在初始握手结束时,交换了一些Finished消息,并使用新协商的加密算法对其进行了加密/保护,这些消息的内容是所有前面所有消息的散列。

一个主动的攻击者(MitM攻击)可能试图操纵客户端发送的密码套件列表,以删除所有“强”的密码套件,仅保留客户端和服务器所支持的最弱的密码套件。但是,这会破坏Finished消息。因此,这些消息(除其他角色外)还可以检测到此类降级攻击。

从理论上讲,这很好。除非客户端和服务器都支持如此弱的密码套件,否则MitM攻击者可以立即将其破解,解开整个加密层并实时修复Finished消息。这就是这里发生的情况。


更详细地

使用“ DHE”密码套件时(如“ Diffie-Hellman Ephemeral”中的),服务器发送“ DH参数”(模数和生成器),客户端和服务器将使用该参数执行Diffie-Hellman密钥交换。此外,服务器使用其私钥(通常是RSA密钥,因为每个人实际上都使用RSA)对消息进行签名。客户端验证该签名(公钥是服务器证书中的公钥),然后继续使用DH参数完成密钥交换。

碰巧的是,在上个世纪,美国有一些相当严格的加密货币出口法规,这催生了“出口密码套件”,即与这些法规兼容的弱加密。许多SSL服务器仍支持这些“导出密码套件”。特别是,某些使用DHE并要求DH模数不超过512位的密码套件。此外,服务器中的大多数SSL使用相同的模数,因为使用SSL库随附的SSL比生成自己的SSL容易。与其他人重复使用相同的模数不是什么大问题; DH可以忍受。但是,这意味着,如果攻击者投入大量计算来破坏使用给定模数p的一个DH实例,则同一攻击者可以重用几乎所有工作来破坏使用相同模数p的其他实例。

所以攻击是这样的:


攻击者处于MitM位置;在这里,他可以实时修改数据流,
攻击者会更改客户端发送的密码套件列表,以指定使用导出DHE密码套件,
服务器遵从并发送512位模数p,
仍然说服客户端正在执行非导出DHE,但是DH模数是DH模数,因此客户端可以很好地接受来自服务器的弱/导出模数,
攻击者使用对该值p的预先计算来实时破坏DH并修复Finished消息。导出DH参数未标记为“用于导出”,因此与包含非导出DH参数的ServerKeyExchange消息是无法区分的(保存模数长度)。但是,我要说的是真正的缺陷并不存在。真正的问题是,即使客户端和服务器都知道使用512位DH模数也很弱,他们仍然接受使用它。 br />嗯,一如既往:安装软件供应商的补丁程序。实际上,这不用说。

在客户端,Microsoft已经修补Internet Explorer以拒绝使用过小的模数。现在可以通过Mozilla以插件的形式对Firefox进行修复。预计很快就会有其他浏览器供应商(Opera,Chrome ...)出现。 。有关详情,请参见该页面。请注意,ServerKeyExchange可以不受所有这些干扰,因为显然它除DSS服务器证书外从未支持过DHE密码套件,并且没有人使用DSS服务器证书。

请注意,ECDHE密码套件在其中“ EC”的意思是“椭圆曲线”在这里没有危险,因为:
总体而言,客户仅支持一些特定的曲线(通常只有两个曲线,P-256和P-384),而且两个曲线都不脆弱,无法折断(不是现在,在可预见的将来)或者是


国家安全局又如何呢?位DH。这是一个很大的延伸。根据我的经验,民族国家确实有很多资源并且善于运用,但这与成功破解硬加密货币不同。

但是,如果您担心1024位DH“太弱”,建议使用2048位(无论如何还是建议使用)或ECDHE。

或者简单地接受那些拥有压倒性资源的人确实拥有压倒性的资源,不会被简单的模数大小击败。那些可能花数十亿美元购买破解机的人还可以用几百美元贿赂孩子,以浏览您的计算机文件和钱包。

评论


最后一段忽略了这一点,并消除了严重的正当关切。没有人会被锡箔纸所遮盖,没人担心国家安全局会以加密攻击为目标,而不是使用更简单,更简单的攻击。威胁模型是Dragnet监视,在这种监视中,您的隐私和安全受到损害的原因不是因为您是目标,而是每个人都因此而受到损害。

–R .. GitHub停止帮助ICE
2015年5月20日19:39

关于:“真正的问题是客户端和服务器接受使用512位DH模数” ... MitM不能仅填充短模数,以便客户端将其接受为“随机选择”长模量恰好是一个很小的数目?还是我们拒绝数值较小而不是位长较小的模量?

–麦克·恩斯沃思(Mike Ounsworth)
15年5月20日在21:04



当我谈到模数大小时,我实际上是指数值大小:模数p如果大于2 ^(k-1)且小于2 ^ k,则大小为k位。当然,任何实现都可能无法正确执行操作。

–托马斯·波宁(Thomas Pornin)
15年5月20日在21:23



#2 楼

Logjam不应真正被称为“新”漏洞-它是FREAK的重制,其针对出口级DH而不是出口级RSA。

实际利用依赖于以下缺陷:


TLS协议很容易遭到攻击者降级其密钥交换协议。
服务器仍在支持出口级Diffie-Hellman(例如512位密钥)
出于性能原因,许多实现对通用素数进行硬编码。可能会滥用此细微差别,以便为使用该质数的任何服务器提前预先计算一部分攻击。由TLS服务在其DH实施中使用。对于512位DH,这大约需要一周的时间。完成此操作后,攻击者可以在每次交换大约1-2分钟内中断与该服务的DH密钥交换。一旦交换中断,攻击者就可以访问会话密钥,从而使他们可以解密所有流量。

可以通过以下方式解决此问题:


请禁用出口级密码。
请使用椭圆曲线DH(ECDHE)而不是有限域DH。
针对较大的素数(例如2048位)生成唯一的DH组,并使用它代替默认的广泛共享的组。旁注,此漏洞中有趣的因素之一是,它与NSA在TLS和IKE(VPN)流量解密领域中报告的功能匹配。在海量流量捕获和解密的情况下,由于大量可用数据可能与已知的共享素数相关联,因此预计算攻击变得特别有效。 :


全文
Logjam PFS部署指南


评论


实际上,对于具有相同模数的其他DH实例重用中断工作的能力意味着很多有趣的数学工作(此攻击之前已发布);还有一点是,与FREAK相反,新攻击不需要使用实现错误。但是,基本概念是相同的:当客户端和服务器可以使用非常弱的加密货币就可以得到应有的收益。

–托马斯·波宁(Thomas Pornin)
2015年5月20日15:54

@ThomasPornin我认为预计算背后存在一些我不知道的加密巫术。顺便说一句,您的回答很好。我比以前更了解。

–多项式
15年5月20日在16:09

“为一个较大的素数(例如2048位)生成唯一的DH组,并使用它代替默认的广泛共享的组。”如果使用的是安全大小(例如2048位)的默认广泛共享组,则没有任何问题。大小是关键部分。共享只会增加影响。

–马特·诺德霍夫(Matt Nordhoff)
15年5月20日在21:46



#3 楼

Logjam是一种密码降级攻击,中间的一个人可以通过使用弱密码来欺骗端点。较弱的密码将使中间的人可以轻松解密所拦截的流量。

与所有其他密码降级攻击一样,防止它的最佳方法是首先禁用弱密码。如果没有弱密码,即使密码降级成功,也将导致强加密。

#4 楼

为了防止Logjam,您可以遵循TLS部署Diffie-Hellman指南的建议,该指南将帮助您配置服务器(Apache HTTP Server,nginx,IIS,Lighttpd,Tomcat,Postfix,Sendmail,Dovecot,HAProxy,OpenSSH,Amazon Elastic Beanstalk):


测试服务器是否安全
生成强大而独特的Diffie-Hellman组
部署ECDHE密码套件
禁用导出密码套件

Mozilla SSL Configuration Generator也是一个很好的配置工具。