1、DH:非对称加密算法,安全性基于在有限域中计算离散对数的难度。可用于密钥分发,但不能用于加/解密报文。
2、Diffie-Hellman算法(D-H算法)概念:D-H加密算法的核心思想就是大素数不可分解质因数的数学理论方法。其基本原理是: 取一个大素数P,较小数r(r是P的一个原根),数字A(A介于1到P之间)。则获得公钥K:
K=r^A/P
(公钥K为r的A次方结果对P取模)
由于,较小数r(r是P的一个原根),
则r^1、r^2、r^3、r^4、......r^(P-1)分别模P都不相同,
则当我们知道P、r、r^A,则很难用数学方法推到出A的方法。
3、DH算法是基于中国的同余定理
中国馀数定理源出三国或晋朝的"孙子算经",其中有一题:今有物不知其数,三三数之剩2,五五数之剩3,七七数之剩2,问物几何?
以同馀式表之,即 解,孙子算经中给出答案x=23
一元一次联立同馀式,後世称为"大衍",其解法称为"大衍求一术",到宋代秦九韶(1202~1261年)集大成同余中的一些定理
我们再来看看DH是怎么计算出共享密钥的
以下各试“=“均读作同余,且假定A和B生成的g和p均相同,至于为什么这里就不做讨论了
首先A先计算X = g^a mod p
B 计算Y= g^b mod p
然后A和B交换X和Y
这样A就得到了Y,通过通余定理:
因为Y= g^b mod p
所以Y^a=(g^b)^a mod p
=g^(ba) mod p
同理B计算出: X^b=g^(ab) mod p
显然,这里Y^a=X^b
也就是说A和B计算出一个只有他们知道的相同的共享密钥了
当然如果有个第三者他只知道X,Y他在有限的时间内是算不出a和b的,至于为什么,因为我不是数学家所以我也不知道(上面的公式也是我想了n久才想通的)
以上就是我对DH算法的一些总结,希望这些东西对大家理解IPsec VPN有所帮助
因为Y= g^b mod p
所以Y^a=(g^b)^a mod p
=g^(ba) mod p
通余定理的公式符号表示的不完整,大家容易产生误解,改后:
如果Y≡g^b mod p(就是Y mod p = g^b mod p)
那么Y^a≡(g^b)^a mod p (就是Y^a mod p = (g^b)^a mod p)
这样就没问题了。