【问题标题】:How to exploit Diffie-hellman to perform a man in the middle attack如何利用 Diffie-hellman 进行中间人攻击
【发布时间】:2012-04-14 17:47:42
【问题描述】:

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

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

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

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

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 是它们对应的秘密消息。

【问题讨论】:

    标签: diffie-hellman man-in-the-middle


    【解决方案1】:

    提供the Wikipedia answer:

    在原始描述中,Diffie-Hellman 交换本身 不提供通信方的身份验证,并且是 因此容易受到中间人攻击。中间一个人 可以建立两个不同的 Diffie-Hellman 密钥交换,一个与 爱丽丝和另一个与鲍勃,有效地伪装成爱丽丝 Bob,反之亦然,允许攻击者解密(并读取或 store) 然后重新加密它们之间传递的消息。

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

    您可以考虑通过讨论the variants of Diffie-Hellman that are more secure 给您的教授留下深刻印象。现在,鉴于您已经记录了原始实现,就可以了。

    祝你好运!

    【讨论】:

      【解决方案2】:

      互联网可以提供帮助!

      Diffie-Hellman 密钥交换易受中间人攻击 攻击。在这次攻击中,对手卡罗尔拦截了爱丽丝的公众 值并将她自己的公共值发送给 Bob。当 Bob 发送他的 公共价值,Carol 将其替换为她自己的价值并将其发送给 Alice。 卡罗尔和爱丽丝因此同意一个共享密钥,卡罗尔和鲍勃同意 在另一个共享密钥上。在这次交换之后,Carol 简单地解密任何 Alice 或 Bob 发出的消息,然后读取并可能 在使用适当的密钥重新加密之前修改它们,并且 将它们传送给另一方。存在此漏洞 因为 Diffie-Hellman 密钥交换不验证 参与者。可能的解决方案包括使用数字签名 和其他协议变体。

      因此您对 A 有自己的价值,您只需交换消息内容并重新计算签名并继续转发。

      【讨论】:

        猜你喜欢
        • 2012-05-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-04-19
        • 1970-01-01
        • 1970-01-01
        • 2020-07-06
        相关资源
        最近更新 更多