密钥交换/协商机制的几种类型
依靠非对称加密算法
原理:拿到公钥的一方先生成随机的会话密钥,然后利用公钥加密它;再把加密结果发给对方,对方用私钥解密;于是双方都得到了会话密钥。
举例:RSA
依靠专门的密钥交换算法
原理:见下图
举例:DH 算法及其变种(ECDH算法)
DH算法
DH算法解决了密钥在双方不直接传递密钥的情况下完成密钥交换,这个神奇的交换原理完全由数学理论支持
1. Alice选择1个素数p,比如509,底数g 比如5,随机数a比如123
然后计算 然后计算A=g^a mod p=bcmod(bcpow(5,123),509)=215
Alice现在有[p=509,g=5,a=123,A=215], 把p,g,A发送给Bob
2. Bob收到p=509,g=5后,选择一个随机数b=456
计算 B=g^b mod p=bcmod(bcpow(5,456),509)=181
同时计算s=A^b mod p=bcmod(bcpow(215,456),509)=121
Bob现在有[p=509,g=5,b=456,B=181,s=121,A=125]
Bob把B=181发送给Alice
3.
Alice现在有[p,g,a,A,B]
Alice计算s=B^a mod p=bcmod(bcpow(181,