在 Diffie-Hellman 密钥交换中,如何知道共享基本密钥“p”以及如何保护 A 和 B 免受 Eve 的影响?

信息安全 加密 SSH 密钥交换
2021-08-17 11:41:07

我正试图围绕 Hellman、Diffie 和 Merkle 的密钥交换设计展开思考,但在阅读了有关它的Wiki 文章后,我无法弄清楚众所周知的因素(我认为是“p”)是如何形成的?

在最初的外行描述中,他们首先将其描述为:“请注意,黄色油漆已经得到 Alice 和 Bob 的同意”。然而,对交换的原始描述是:“Diffie-Hellman 密钥交换方法允许彼此没有先验知识的两方共同建立共享密钥。”

共享基础“油漆”(我理解为众所周知的素数)从何而来?它是否内置在算法本身中?假设任何人都可以知道,为什么防止中间人攻击使用自己的密钥劫持两个连接并根据攻击者的私钥在两个加密密钥之间提供“翻译”服务不是问题?

3个回答

诀窍是 Alice 和 Bob 可以自由地共享非秘密信息;他们可以同意黄色将是他们的底色,如果 Eve 发现了这一点,这对 Eve 毫无帮助。

当 Eve 截获 Alice 发送给 Bob 的绿色颜料时,她知道它是用黄色和其他颜色制成的,但即使有这么多信息也很难找出其他颜色。

是的,中间人是个问题。中间人是对通信的密钥交换部分的攻击。Diffie-Hellman 对此没有帮助。

共享基础“油漆”(我理解为众所周知的素数)从何而来?它是否内置在算法本身中?

可以以纯文本形式发送

假设任何人都可以知道,为什么防止中间人攻击使用自己的密钥劫持两个连接并根据攻击者的私钥在两个加密密钥之间提供“翻译”服务不是问题?

这是一个身份验证问题,而不是通过 DH 密钥交换解决的问题。例如,您需要将 DH 与加密信任链结合起来(例如,从过去的通信中,检查几个受信任的公钥服务器,或使用证书颁发机构)。

来自维基百科

在最初的描述中,Diffie-Hellman 交换本身不提供通信方的身份验证,因此容易受到中间人攻击。中间人可以建立两个不同的 Diffie-Hellman 密钥交换,一个与 Alice,另一个与 Bob,有效地将 Alice 伪装成 Bob,反之亦然,允许攻击者解密(并读取或存储)然后重新加密他们之间传递的信息。通常需要一种对通信方进行身份验证的方法来防止这种类型的攻击。Diffie-Hellman 的变体,例如 STS,可以用来避免这些类型的攻击。

Raw Diffie-Hellman 用于允许在同一地铁站但在轨道对面的两个人之间进行通信。他们可以看到对方,可以互相喊话,但车站里的每个人也可以看到他们,听到他们。他们知道什么时候他们听到的确实是对方所说的;他们发送给对方的信息不能在没有注意到的情况下被更改(通信可能会被阻塞,例如当火车经过或拉着小提琴的暴徒经过时,但这就是对手权力的范围)。

在这些条件下,安全通信是可行的,从 Diffie-Hellman 密钥交换开始。参与方之一喊出模数p和生成器g或者,等效地,他们将使用的椭圆曲线的定义。他们可以依赖“众所周知的”组参数,因为如果每个人一次又一次地使用同一个组是没有问题的。

并且有一个应用程序