迪菲-赫尔曼**交换算法

可以让双方在完全没有对方任何预先信息的条件下通过不安全信道创建起一个**。这个**可以在后续的通讯中作为对称**来加密通讯内容。

交换过程

迪菲-赫尔曼**交换算法

此时需要解决两个问题,才能说明交换协议有效

  1. secretA=secretBsecretA = secretB

  2. 攻击者根据网络中传输的PGAB,以及**计算方式并不能推算出最终的**

证明

1. 模指数运算法则的证明

模指数运算法则

abmodp=(  (  amodp  )b  )modp(1) a ^ b \bmod p = (\;(\; a \bmod p \;) ^ b \;) \bmod p \tag {1}

a=kp+n\quad a = kp + n\quad

  • 则公式(1)的右边有:
    (  (  amodp  )b  )modp=(  (  (kp+n)modp  )b  )modp=nbmodp(2) (\;(\; a \bmod p \;) ^ b \;) \bmod p = (\;(\; (kp + n) \bmod p \;) ^ b \;) \bmod p = n ^ b \bmod p \tag {2}

  • 根据二项式定理,公式(1)左边有:

(kp+n)b=z=0b(bz)(kp)znbz (kp + n)^b = \sum_{z=0}^b \dbinom{b}{z}(kp)^z*n^{b-z}

观察上式可知,只有当z=0\quad z = 0 \quad时,多项式中才不会有以kp为系数的单项式,最终可以写成下列形式:

因为:(kp+n)b=kp(kp0nb1++kpb1n0)+nb \quad (kp + n)^b = kp * ({kp}^0*{n^{b-1}} + \cdots + {kp}^{b-1}*n^{0}) + n^b

所以:(kp+n)bmodp=nbmodp\quad (kp + n)^b \bmod p = n^b \bmod p
结合式(2)可知,式(1)成立

2.   secretA=secretB  \; secretA = secretB \;的证明

分别将小明小红选择的自然数a  b\quad a\;b\quad代入到计算**的公式中
{secretA=Bamodp=(Gbmodp)amodpsecretB=Abmodp=(Gamodp)bmodp \begin{cases} secretA = B ^ a \bmod p = {(G ^ b \bmod p)} ^ a \bmod p\\ secretB = A ^ b \bmod p = {(G ^ a \bmod p)} ^ b \bmod p \end{cases}
由公式(1)可知:
{(Gbmodp)amodp=Gbamodp(Gamodp)bmodp=Gabmodp \begin{cases} {(G ^ b \bmod p)} ^ a \bmod p = {G ^ b} ^ a \bmod p \\ {(G ^ a \bmod p)} ^ b \bmod p = {G ^ a} ^ b \bmod p \end{cases}

至此,secretA=secretB\quad secretA = secretB \quad得证。

怎样保证根据pGAB不能推算出**

  • 必须保证p是一个很大的质数(至少 300 位),因为我们的**是模运算的结果,P越大就能保证**越长,从而攻击者猜测出**的可能性就越小
  • 同时我们要保证a,b也要足够大(至少100位长),因为攻击者知道**的计算方式为  Bamodp  \; B ^ a \bmod p \;,如果a太小的话,也能够很快的猜测出**

如果 P 是一个至少 300 位的质数,并且a和b至少有100位长, 那么即使使用全人类所有的计算资源和当今最好的算法也不可能从G, p和$G^a \bmod p $ 中计算出 a。这个问题就是著名的离散对数问题

参考资料

蒙哥马利算法-百度百科
蒙哥马利算法-维基百科
a ^ b mod c 取模运算优化反思(老物)
迪菲-赫尔曼**交换
模指数运算法则

相关文章:

  • 2022-12-23
  • 2021-06-28
  • 2021-09-23
  • 2021-05-23
  • 2022-12-23
  • 2021-12-22
  • 2021-07-05
  • 2021-06-11
猜你喜欢
  • 2021-10-06
  • 2022-12-23
  • 2021-08-08
  • 2022-12-23
  • 2021-04-05
  • 2021-12-06
相关资源
相似解决方案