什么是秘钥交换
秘钥交换也叫秘钥协商,在进行对称加密的时候,怎么进行安全的传送秘钥呢?需要使用秘钥交换。
Diffie-Hellman秘钥交换原理
假设Alice和Bob需要交换秘钥1,流程如下:
- Alice 和 Bob 商定素数一个素数p和p的一个原根g,假设p = 7,g = 5,这两个数无须保密。
- Alice 选择一个[1,p-1] 之间的随机数Ka,比如5,Ka = 5
- Alice 计算Pa = q ^ Ka mod p = 3 ^ 5 mod 7 = 5
- Alice 把Pa告诉Bob
- Bob 选择一个[1,p-1] 之间的随机数Kb,比如6,Kb = 6
- Bob 计算Pa = q ^ Kb mod p = 3 ^ 6 mod 7 = 1
- Bob 把Pb告诉Alice
- Alice 计算出共享秘钥key = Pb ^ Ka mod p = 1 ^ 5 mod 7 = 1
- Bob 计算出共享秘钥key = Pa ^ Kb mod p = 5 ^ 6 mod 7 = 1
窃听者拿到了p和g,并截获了Pa和Pb。但当它们都非常大的时候,依靠这四个数来计算Ka和Kb非常困难。
Python 示例
先用pip安装这个库pip install pyDHE
,使用可以看官方示例。
网友评论