4

我正在做一个项目,其中 Alice 和 Bob 使用 Diffie-Hellman 密钥交换相互发送消息。让我陷入困境的是如何将他们正在使用的证书合并到其中,这样我就可以获得他们的秘密消息。

根据我对 MIM attakcs 的了解,MIM 充当冒名顶替者,如下图所示:

在此处输入图像描述

以下是我的项目的详细信息。我知道他们在沟通之前都同意了 g 和 p,但是我如何能够在他们都有证书来验证他们的签名的情况下实现这一点?

Alice 准备 ⟨signA(NA, Bob), pkA, certA⟩ 其中 signA 是 Alice 使用的数字签名算法,“Bob”是 Bob 的名字,pkA 是 Alice 的公钥,等于 gx mod p 根据 X 编码。 509 用于 Diffie-Hellman 密钥交换中指定的固定 g,p,并且 certA 是 Alice 的证书,其中包含验证签名的 Alice 的公钥;最后,NA 是一个 8 字节长的随机数(随机字符串)。

Bob 检查 Alice 的签名,并用 ⟨signB{NA,NB,Alice},pkB,certB⟩ 回复。Alice 收到消息,她检查她的 nonce NA 并根据 Diffie-Hellman 密钥交换基于 pkA、pkB 计算联合密钥。然后 Alice 将消息 ⟨signA{NA,NB,Bob},EK(MA),certA⟩ 提交给 Bob 和 Bobrespondswith⟨SignB{NA,NB,Alice},EK(MB),certB⟩。

其中 MA 和 MB 是它们对应的秘密消息。

4

2 回答 2

6

提供维基百科的答案

在最初的描述中,Diffie-Hellman 交换本身不提供通信方的身份验证,因此容易受到中间人攻击。中间人可以建立两个不同的 Diffie-Hellman 密钥交换,一个与 Alice,另一个与 Bob,有效地将 Alice 伪装成 Bob,反之亦然,允许攻击者解密(并读取或存储)然后重新加密他们之间传递的信息。

通常需要一种对通信方进行身份验证的方法来防止这种类型的攻击。Diffie-Hellman 的变体,例如STS,可以用来避免这些类型的攻击。

您可以考虑通过讨论更安全的 Diffie-Hellman 变体来给您的教授留下深刻印象。现在,鉴于您已经注意到原始实现,这将是可行的。

祝你好运!

于 2012-03-31T05:24:26.350 回答
4

互联网可以提供帮助!

Diffie-Hellman 密钥交换容易受到中间人攻击。在这次攻击中,对手 Carol 拦截了 Alice 的公共价值并将她自己的公共价值发送给 Bob。当 Bob 传输他的公共价值时,Carol 将其替换为她自己的价值并将其发送给 Alice。因此,Carol 和 Alice 就一个共享密钥达成一致,而 Carol 和 Bob 就另一个共享密钥达成一致。在此交换之后,Carol 只需解密 Alice 或 Bob 发出的任何消息,然后读取并可能修改它们,然后使用适当的密钥重新加密并将它们传输给另一方。存在此漏洞是因为 Diffie-Hellman 密钥交换不对参与者进行身份验证。可能的解决方案包括使用数字签名和其他协议变体。

所以你对 A 有自己的价值,你只需交换消息内容并重新计算签名并转发。

于 2012-03-31T05:20:25.993 回答