【密码学原理】Diffie-Hellman**交换算法与中间人攻击
Diffie-Hellman**交换算法
Diffie-Hellman**交换算法的目的是使两个用户能安全交换**,以便在后续的通信中用该**对消息加密。所以这个算法本身只限于**交换。
Diffie-Hellman**交换算法的有效性建立在离散对数上,在计算离散对数是困难的才能确保秘密交换。
Diffie-Hellman**交换算法如图所示
有素数和本原根
,为公开的整数,Alice选择随机整数
,Bob选择
,分别计算,其中
和
保密,对算出的
和
公开。Alice和Bob通过计算
,将
作为共享的**。这样Alice和Bob就完成了**的交换。
和
是私有的,攻击者只能通过
,
和
来攻击,所以只能求离散对数来确定**。
如果攻击者要对Bob进行攻击,攻击者就要求离散对数算出,然后算出**
。
Diffie-Hellman**交换算法的安全性建立在下列事实上:
- 计算素数模的幂运算相对容易,计算离散对数却非常困难
- 对大素数,求离散对数被认为是困难的
基于这样的事实,保证了Diffie-Hellman**交换算法的保密性。
中间人攻击
上图的协议,不能抵御中间人攻击,中间人攻击的过程如下图所示
通过上述协议,Bob和Alice以为各自共享了**,实际上他们都是与Darth共享**,所以如果Alice和Bob通过共享**加密传输,将会泄露各自的明文
**交换不能抵御上述攻击,是因为没有对通信的参与方进行认证。