基于 Diffie-Hellman 的密钥交换协商,为什么会发现只有少数素数是常用的?什么和谁决定了质数?
使用安全素数不是更安全吗?(例如:p = 2q + 1)
*问题基于这篇文章:
基于 Diffie-Hellman 的密钥交换协商,为什么会发现只有少数素数是常用的?什么和谁决定了质数?
使用安全素数不是更安全吗?(例如:p = 2q + 1)
*问题基于这篇文章:
编辑#2 (11/09/15) - 我通读了几篇文章和一篇论文。请参阅底部以获取更多评论。
我阅读了这篇文章,虽然我没有关于以下内容的直接数据,所以猜测我的工作。
这里有多种因素。
交易所要求双方拥有 Base Prime。它应该是 Safe Prime(或 Sophie-Germain Prime)。如果客户端没有,服务器会发送过来。双方都应该使用安全的随机数生成器来创建他们的指数。计算的结构应该使得成功和失败花费相同的挂钟时间。
生成大型 Primes 并不难,但它适用于初学者。最好有一个软件为你做这件事。该软件必须使用安全的随机数生成器。大多数人只会使用出于习惯、无知或懒惰而预先提供的任何键(质数)。
很可能大部分有问题的软件都没有设计为允许更改素数。编写软件的工程师通常与用户一样不了解适当的安全方法。我不是贬义的意思;无知,如“缺乏知识”。
从哪儿开始!
几十年前,几个研究生计算部分离散对数矩阵并攻击 Sun 的网络密码验证方案,一个较短的密钥 (768) 完全在能力范围内。请参阅本答案末尾的参考资料。如果 NSA(或任何人)今天有能力计算已知 1024 位密钥的部分,我不会感到惊讶。
如果客户端没有 Prime 并从服务器请求它,则可以通过替换传输到客户端的 Prime 来攻击该协议。
更好的是,DH 容易受到中间人攻击,特别是对于从服务器请求 Prime 的客户端,但即使它没有。DH 算法依赖于计算的安全指数。但是,它不依赖任何其他数据——服务器和客户端无需相互证明即可建立安全会话。如果客户端的密码(或它的哈希)以某种方式混合到 DH 密钥协商中而没有任何信息泄漏并保持完美的前向保密,那么客户端可以确信服务器是合法的。查找 SPEKE 和 DHEKE 算法以了解这一点。无论如何,作为 MITM 的 NSA 会创建两个 DH 会话,一个与客户端,另一个与服务器,并在两者之间传输时记录所有数据。十分简单。
文章指出,NSA 依靠众所周知的 Prime 来攻击会话。我参考了我提到的关于计算离散对数部分矩阵的论文。如果现在可以通过硬件改进,1024 位密钥将不会为观察者攻击提供保密性。
谁说运行 DH 算法的机器没有以其他方式受到损害?也许,他们泄露了关键数据或在以正确方式查询时放弃了它?已经发布了很多关于 NSA 如何破坏每一个计算硬件的信息,也许除非他们需要,否则他们不会费心破坏算法,而是闯入机器并直接获取会话加密密钥?
编辑
其他 DH 攻击:
g^(A*B)%P
应该在 P 的场上以 1:1 或 2:1 映射;一个糟糕的 P 可以将大量数字映射到一个计算上可行的小集合。如上所述,这是它的要点。最后,我将添加更多关于 TLS+DH+RSA 密码套件的内容,以展示另一个漏洞。
首先,NSA 似乎破坏了一些用于 Diffie-Hellman 密钥交换的常用 DH 组(Safe Prime P + Generator g)。正如我上面所指出的,至少在十年左右之前,这次攻击是由几个研究生(仍然没有参考资料)对 Sun 用于网络密码验证的 768 DH 密钥完成的。攻击是观察者攻击,因此不需要中间人。破坏任何特定组所需的工作量非常大。但是,一旦被破坏,所有使用它的交易所现在都可能受到损害。
从理论上讲,DH 密钥交换提供了完美的前向保密(而 RSA 则没有)。一旦 DH 组被破坏,任何使用该组的交换都不会被破坏,它也会被破坏(即记录的交换可以被破坏),因此该组不再具有完美的前向保密性。这也意味着专门的攻击者可以破解不常见的 DH 密钥。假设这对于 1024 位密钥是可能的,因此对于 DH,将密钥长度增加到 2048。您应该已经为 RSA 使用了更大的密钥长度。
接下来,研究人员提出了一些值得注意的观点。这篇论文涵盖了 Logjam,我不会详细解释它,只是说它是 MITM,密码套件降级攻击。聪明,但在算法上并不复杂。
我强烈敦促任何有兴趣阅读这篇论文的人。这是梦幻般的。这是摘要的第二段。
我们继续考虑具有 768 位和 1024 位组的 Diffie-Hellman。我们估计,即使在 1024 位的情况下,在给定民族国家资源的情况下,计算也是合理的。数以百万计的服务器使用少量固定或标准化的组;对单个 1024 位组执行预计算将允许对 18% 的流行 HTTPS 站点进行被动窃听,第二组将允许解密到 66% 的 IPsec VPN 和 26% 的 SSH 服务器的流量。仔细阅读已发布的 NSA 泄密文件表明,该机构对 VPN 的攻击与实现这样的突破是一致的。我们得出结论,转向更强大的密钥交换方法应该是 Internet 社区的优先事项。
这几乎说明了一切。被 NSA 破解的固定密钥允许观察者(被动)破解许多安全网络协议。因此,请勿使用预配置或通用密钥(如果可能)和/或延长您的密钥长度。
至于 TLS+DH+RSA 密码套件,这在更高的密钥长度下是否安全?
我敢说它不会受到观察者的攻击,但是,它仍然会受到中间人攻击,这就是方法。
在这种模式下,服务器使用其 RSA 密钥 ( ) 签署其 DH 临时文件Sign((g^B)%P,RSA_Key_Server)
。这意味着,DH 交换的服务器部分已通过身份验证。假设签名在到达客户端时是有效的并且服务器证书没有被撤销,客户端可以安全地进行 DH 交换,知道只有服务器可以完成它。
那么,MITM 怎么可能呢?两种方式,一种比另一种更有可能。两者都依赖于客户端未能进行正确的签名检查。
首先,客户端在其密钥库中有太多的根证书颁发机构(许多浏览器有超过 100 个)。其中一些根 CA 不可信。MITM 获取相关远程站点的服务器证书,位于中间并使用自己的证书 ( Sign((g^B2)%P,RSA_Key_Middle_Server)
) 进行签名。客户端将验证签名,假设服务器是真实的并完成与服务器的 DH 交换。同时,中间服务器可以运行自己的客户端与真实服务器进行交换,并观察其间的所有数据。
其次,我认为这种可能性较小。客户端无法检查已撤销的证书,而 MITM 拥有已撤销的私钥,因此它可以像原来的真实服务器一样进行签名。客户不会知道,因为它没有检查撤销。中间服务器,再次与远程真实服务器运行另一个 DH 交换并位于中间。
故事的寓意是注意您的客户端配置并增加您的密钥长度。
编辑#3:在几十年前找到了对 DH 攻击的引用:
BA LaMacchia 和 AM Odlyzko。计算素数域中的离散对数。设计、代码和密码学,1:46-62,1991。
打破它们的一种方法是找到绕过它的方法。几乎总是有各种方法可以绕过所有类型的安全性。我赞同“如果人能建造它,人就能摧毁它”的心态。
您可以在常见的软件中,例如,当然,在. 我们不要忘记。然后你有一些东西,比如预装了后门的硬件。Install
backdoors
Adobe Flash
PDF
Java
Windows services
您所要做的就是正确执行。在许多平台和几乎任何编程语言中都有很多方法可以做到这一点。implement
something
that allows
to run
arbitrary code
有目的地实施安全漏洞是某些机构真正喜欢做的事情之一。
然后甚至不需要加密。当有许多不同的方法时,谁会关心您的四层 Dalek 博士加密 VPN 连接?