Diffie-Hellman密钥交换算法

Diffie-Hellman密钥交换算法

Diffie-Hellman密钥交换算法的有效性依赖于计算离散对数的难度
离散对数:对于一个整数b和素数p的一个原根a,可以找到唯一的指数i,使得b=ai mod p, 0<=i<=p-1,指数i称为b的以a为基数的模p的离散对数或者指数。该值被记为inda ,p(b)。

  1. 有两个全局公开的参数,一个素数q和一个整数a,a是q的一个原根。
  2. 假设用户A和B希望交换一个密钥,用户A选择一个作为私有密钥的随机数XA(XA<q),并计算公开密钥YA=aXA mod q。A对XA的值保密存放,而使YA能被B公开获得。类似地,用户B选择一个私有的随机数XB<q,并计算公开密钥YB=aXB mod q。B对XB的值保密存放,而使YB能被A公开获得.假设用户A和B希望交换一个密钥,用户A选择一个作为私有密钥的随机数XA(XA<q),并计算公开密钥YA=aXA mod q。A对XA的值保密存放,而使YA能被B公开获得。类似地,用户B选择一个私有的随机数XB<q,并计算公开密钥YB=aXB mod q。B对XB的值保密存放,而使YB能被A公开获得。
  3. 用户A产生共享秘密密钥的计算方式是K = (YB)XAmod q。同样,用户B产生共享秘密密钥的计算是K = (YA)XBmod q。这两个计算产生相同的结果: K = (YB)XAmod q = (aXBmod q)XAmod q = (aXB)XA mod q = a(XBXA) mod q = (aXA)XB mod q = (aXAmod q)XB mod q = (YA)XB mod q 。因此,相当于双方已经交换了一个相同的秘密密钥。
  4. 因为XA和XB是保密的,一个敌对方可以利用的参数只有q、a,YA和YB。所以,敌对方被迫取离散对数来确定密钥。例如,要获取用户B的秘密密钥,敌对方必须先计算 XB = inda,q(YB) ,然后再使用用户B采用的同样方法计算其秘密密钥K。
  5. Diffie-Hellman密钥交换算法的安全性依赖于这样一个事实:虽然计算以一个素数为模的指数相对容易,但计算离散对数却很困难。对于大的素数,计算出离散对数几乎是不可能的.。

猜你喜欢

转载自blog.csdn.net/weixin_39467231/article/details/82764801
今日推荐