Diffie-Hellman秘钥交换

什么是秘钥交换

秘钥交换也叫秘钥协商,在进行对称加密的时候,怎么进行安全的传送秘钥呢?需要使用秘钥交换。

Diffie-Hellman秘钥交换原理

假设Alice和Bob需要交换秘钥1,流程如下:

  1. Alice 和 Bob 商定素数一个素数p和p的一个原根g,假设p = 7,g = 5,这两个数无须保密。
  2. Alice 选择一个[1,p-1] 之间的随机数Ka,比如5,Ka = 5
  3. Alice 计算Pa = q ^ Ka mod p = 3 ^ 5 mod 7 = 5
  4. Alice 把Pa告诉Bob
  5. Bob 选择一个[1,p-1] 之间的随机数Kb,比如6,Kb = 6
  6. Bob 计算Pa = q ^ Kb mod p = 3 ^ 6 mod 7 = 1
  7. Bob 把Pb告诉Alice
  8. Alice 计算出共享秘钥key = Pb ^ Ka mod p = 1 ^ 5 mod 7 = 1
  9. Bob 计算出共享秘钥key = Pa ^ Kb mod p = 5 ^ 6 mod 7 = 1
    窃听者拿到了p和g,并截获了Pa和Pb。但当它们都非常大的时候,依靠这四个数来计算Ka和Kb非常困难。

Python 示例

先用pip安装这个库pip install pyDHE,使用可以看官方示例。

相关文章

密码学基础之对称加密(一)
密码学基础系列

参考文献

RFC2409

你可能感兴趣的:(Diffie-Hellman秘钥交换)