加密密钥交换理解

3


我正在尝试理解“加密密钥交换”机制。我对这个图示感到有些困惑:
EKE
并没有找到很多有用的参考资料。请问有人能够解释一下EKE机制及其工作原理吗?双方交换了什么,为什么这样的安全性可以防止中间人攻击?这将非常有帮助。
谢谢。

1个回答

4
在寻找EKE或DH-EKE的实现时,我发现参考资料非常有限。维基百科相互交叉链接,我遇到的解释并不一定易于理解。EKE的原始专利于2011年到期,导致我理解EAP-EKE被发布。
我在Bruce Schneier(第2版)的“应用密码学”中找到了最好的解释,包括对算法的改进。由于您已经了解了该过程的图像,因此我将尝试以外行人的方式回答其中发生的事情。我自己也在学习,所以可能会误解您提供的图像,但它似乎是DH-EKE的实现。在这个答案中,我将坚持EKE-idea,因为我认为我大部分都理解了;-)
基础是Alice和Bob共享一个共同的秘密。我可能会忽略“弱”的点(在您的图像中,它被标记为weak),但让我们假设它是一个有效的对称加密密钥。
双方都有相同的对称密钥S,这是一个共享的秘密。
  1. Alice生成一对公私钥,用于本次会话。私钥为Pa,公钥为P'a。Alice使用S加密公钥,并将其发送给Bob。

  2. Bob(知道S)解密Alice的消息并恢复出Alice的公钥P'a。Bob生成随机会话密钥K。Bob使用Alice的公钥P'a加密K,并将其发送给Alice。

  3. Alice解密消息并获得K。Alice生成随机字符串Ra,使用K加密并发送给Bob。

  4. Bob解密消息以获得Ra,生成另一个随机数Rb,使用K加密两个随机数并将加密后的消息发送给Alice。

  5. Alice解密消息并验证自己的Ra是否有效。她只使用K加密Rb并将其发送给Bob。

  6. Bob解密Rb并验证自己的Rb是否有效。

为了进行中间人攻击,Eve只看到密钥被其他密钥加密的情况。通过监控Alice和Bob之间的流量猜测密码是不可能的,除非破解公钥算法。然而,弱共享秘密允许Eve试图在图片中假装成Alice或Bob,因此可以对监听服务器进行主动攻击(我的术语可能有误)。在我描述的版本中有一些假设,最好由其他人(已发布)解释,即Alice被信任生成良好的密钥对,Bob被信任生成良好的会话密钥。某些算法更适合(或某些相当糟糕)。在“应用密码学”中列出了一些事项,但是由于我的第二版似乎落后于像AES这样的事物,因此我相信挖掘更多关于选择算法的最新信息。就价值而言,似乎我需要使用C#和Java(Azure .NET后端,Android客户端)自己实现EKE。我尝试以一种对他人有用的方式打包它。
更新:C#上非常直接的实现可在以下链接中找到: https://github.com/kallex/sharp-eke-example 现在它只是简单地将明文的SHA256用作初始密钥,因此会缩短一些位数,请谨慎使用。我的当前用法将在单独的通道中生成和分发安全密钥给双方,因此我不需要更复杂的实现来进行此测试。

对于某些场景(人类生成的密码),弱密钥是该过程中的要求 - 算法的优雅在特别的领域中表现出色。这可能会影响我使用共享密钥作为密钥开始描述过程的方式。 - Kallex

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接