DH 算法又称“Diffie–Hellman 算法”,像往常的算法名字一样,这是用俩个数学牛人的名字来命名的算法,实现安全的密钥交换,通讯双方在完全没有对方任何预先信息的条件下通过不安全信道创建起一个密钥。
优点:
缺点:
从概念上讲,要想破解DH算法,那么就是在求解离散对数问题,
离散对数难题是指:当已知一个大质数p和它的一个原根a,如果给定一个b,要计算i的值是相当困难的。
是一个典型的正向求解简单,逆向求解特别难的问题
举例:
通讯双方(张三、李四)需要先约定好算法参数(algorithm parameters):一个素数 p 作为模数,一个素数 g 作为基数(g 也称为“生成元”)。这两个算法参数是可以对外公开滴。
对于张三而言,需要先想好一个秘密的自然数 a 作为私钥(不能公开),然后计算 A = ga mod p 作为自己的公钥(可以公开)。 对李四而言也类似,先想好一个秘密的自然数 b 作为私钥(不能公开),然后计算 B = gb mod p 作为自己的公钥(可以公开)。 张三和李四互相交换各自的公钥。 然后张三计算出 k = Ba mod p,李四计算出 k = Ab mod p
我们不难发现,张三和李四最后计算出来的k必然是一致的 他们都无法通过已知 的数来推算出对方的私钥 对于中间截获者来说,虽然能看到 p,g,A,B,但是无法推算出 a 和 b(就是说,旁观者无法推算出双方的私钥),自然也无法推算出 k
算法核心:为了生成一个共享的秘密——密钥
算法步骤: