本文主要是介绍Diffie–Hellman密钥交换算法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
我觉得要理解这个算法,首先理解这个过程就差不多了。
用户甲选择一个随机整数x1 < q,并计算y1 = a x1 mod q.同样的,用户乙也独立地选择一个随机整数x2 < q,并计算y2 = a x2 mod q。甲和乙保持其x是私有的,但对另一方而言,y是公开可访问的。用户甲就计算k = y2 x1 mod q,乙计算k = y1x2 mod q。当然计算出来的这两个密钥k是相同的。
至于两个K为什么会相同,随便从甲或乙的角度来考虑,然后利用一个数学定理(取模运算规则)就可以推算出来了。那么,现在普通用户可以得到Y1,Y2,Q和A。可是得到了这4个也是无法算出密钥K的。因为,假使用户知道Y2,Q,A,那么他得知道X2才能算出K,而利用y2 = a x2 mod q才能求出X2,思路上是可行的,但是对于大的素数,计算出离散对数几乎是不可能的。
但是D-H加密算法是有其不足的地方的,不知道现在是否给淘汰(这个我无法下结论),但它已经成为OAKLEY的组成部分,后者克服了其缺点。简单来说,OAKLEY算法的特征如下:
1、 它采用称为cookie程序的机制来对抗阻塞攻击。
2、 它使得双方能够协商一个全局参数集合。
3、 它使用了现时来保证抵抗重演攻击。
4、 它能够交换Diffie-Hellman公开密钥。
5、 它对Diffie-Hellman交换进行鉴别以对抗中间人的攻击。
最近在加紧学习网络安全知识……希望到以后能有比较深的印象和形成一定的思维模式以及一定的数学基础。
这篇关于Diffie–Hellman密钥交换算法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!