因此,Diffe Hellman 受到 MITM 攻击,两方交换:
X = g^x mod n 和 Y = g^y mod n。
现在大概可以通过使用 Rivest Shamir 互锁协议来防止这种情况,我们将消息分成两部分并逐位交换它们。我想知道的是我们如何将 g^x mod n 分成两部分以便与 Rivest Shamir 一起使用?
因此,Diffe Hellman 受到 MITM 攻击,两方交换:
X = g^x mod n 和 Y = g^y mod n。
现在大概可以通过使用 Rivest Shamir 互锁协议来防止这种情况,我们将消息分成两部分并逐位交换它们。我想知道的是我们如何将 g^x mod n 分成两部分以便与 Rivest Shamir 一起使用?
你真的读过 Rivest 和 Shamir 的论文吗?它很好地解释了协议的用途及其设计的场景:
http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.159.1673&rep=rep1&type=pdf
我看不出这对 Diffie-Hellman 非常适用,因为协议的重点是验证公钥而不是实际生成私钥。
如果您只是对实现 Diffie-Hellman 感兴趣,那么您需要为您的 DH 实现选择一个具体的组并对其元素进行位编码。在实践中,您实际上并没有使用组元素的直接位编码作为密钥,而是应用了一个随机提取器,它为您提供了一个位字符串,您将使用它作为您的密钥。
随机抽取器非常棘手,但最近有一些关于它们的论文,您可以通过 google 轻松找到它们。