加密密钥交换的理解

时间:2013-04-03 05:17:04

标签: encryption public-key-encryption


我试图理解Encrypted Key Exchange机制。我对这个插图有点困惑:
EKE
并没有找到很多有用的参考资料。任何人都可以解释一下EKE的机制及其工作原理吗?双方交换的内容是什么,以及为什么这样的攻击是安全的,比如中间人?这将是非常有帮助的。
谢谢。

1 个答案:

答案 0 :(得分:4)

在尝试查找EKE或DH-EKE的实现时,我预计那里的引用数量非常有限。维基百科与每个/另一个交叉链接,我碰到的解释不一定容易理解。 EKE的原始专利于2011年到期,导致我理解EAP-EKE的发布。

我在Bruce Schneier的“应用密码学”(第2版)中找到了最佳解释,包括对算法的改进。由于你已经拥有了这个过程的形象,我会尝试外行 - 回答那里发生的事情。我只是在学习自己,所以我可能会误认为你的形象,但它似乎是DH-EKE的实现。我会在这个答案上坚持EKE-idea,因为我认为我最理解; - )

基础是Alice和Bob共享一个共同的秘密。我可能会错过它的“弱”程度(在你的图像中它被称为弱),但我们假设它是一个有效的对称加密密钥。

双方都有相同的对称密钥S,这是一个共享密钥

  1. Alice为会话Pa生成唯一的公钥/私钥对(私有)和P'a(公共)Alice使用S加密公钥并将其发送给Bob。

  2. Bob(知道S)解密Alices消息并恢复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是否有效。

  7. 为了让Eve脱离中间人,她只看到钥匙被其他钥匙加密。如果不破解公钥算法,则无法在Alice和Bob之间的受监控流量中猜测密码。然而,弱的共享秘密允许Eve在图片中尝试伪装成Alice或Bob,因此(我的术语可能存在缺陷)可能会对监听服务器进行主动攻击。

    我描述的版本中有一些假设,其他人(已发布)最好地解释,Alice被信任生成良好的密钥对,Bob被信任生成良好的会话密钥。还有一些算法更适合(或者更糟糕)。 “应用密码学”中列出了一些内容,但由于我的第二版似乎有点像AES之类的东西,我相信可以挖掘更多关于良好密码的最新信息来选择算法。 / p>

    对于它的价值,似乎我需要用C#和Java(Azure .NET后端,Android客户端)自己实现EKE。我尝试以对其他人有用的方式打包它。

    <强>更新 C#上非常直接的实现可在以下位置获得: https://github.com/kallex/sharp-eke-example

    它现在正在缩短几个位(仅使用初始密钥的纯文本的SHA256),所以请谨慎使用。我目前的用法是在单独的通道中为双方机器生成和分发安全密钥,因此我不需要为此测试平台提供任何更复杂的实现。