一、概述
DH秘钥交换算法,可以让双方在完全缺乏对方信息的前提条件下,通过不安全的信道达成一个共享密钥。
此秘钥用于对后续信息交换进行对称加密
二、离散对数问题(Discrete Logarithm Problem,DLP)
如果p是一个素数,g和x是整数,计算 y = g^x mod p 非常快。但是相反,先知道p,g,y要求某个x(离散对数)
满足等式y = g^x mod p 是十分困难的。
15 = 3 ^ x mod 17 ==> x = 6
g和p的选择对此类系统的安全性影响很大,为了保证无法求解离散对数问题,p应该是一个很大的素数。例如
三、
Alice和Bob想共有一个秘钥,用于对称加密。但是他们之间的通信渠道是不安全的。可能被第三方Eve看到。
1.Alice和Bob先对p和g达成一致,而且是公开的,Eve也是知道的他们的值
2.Alice取一个私密的整数a,不让任何其他人知道,发送Bob计算结果 A = g^a mod p.Eve也能看到A的值
3.类似,Bob取一个私密的整数b,发给Alice结果 B = g^b mod p. Eve也能看到B的值
4.Alice计算 S=B^a mod p = (g^b)^a mod p = g^ab mod p
5.Bob计算 S = A^b mod p = (g^a)^b mod p = g^ab mod p