Diffie-Hellman密钥协商方案是W.Diffie和M.Hellman于1976年提出的,该方案实质上是一个通信双方进行密钥商定的协议,它的安全性基于有限域上计算离散对数的困难性。Diffie-Hellman密钥协商方案本身不能用于加/解密,设计的目的在于使通信双方能够安全地交换密钥,得到一个共享的会话密钥。
1.协商方案描述
设p是大素数,g是模p的本原元素,p和g公开。用户A为了和用户B进行保密通信,他们必须获得一个共享的密钥,采用Diffie-Hellman密钥协商方案获取共享密钥的协商过程如下:
1)用户A随机选择一个私有的大整数xA<p,计算公钥,并将结果传送给用户B。
2)用户B随机选择一个私有的大整数xB<p,计算公钥,并将结果传送给用户A。
3)用户A计算。
4)用户B计算。
用户A和B计算出的kA、kB就是共享的会话密钥k,这是因为
【例7-1】 假设Diffie-Hellman密钥协商方案使用的素数p=97,p的一个本原元素为g=5。通信双方A和B分别选择秘密随机数xA=36和xB=58。试问:共享的会话密钥k是多少?
【解析】 用户A和B分别计算出各自的公钥:
通信双方交换公钥,然后各自独立地计算出共享的会话密钥k为:
可见:kA=kB=k。(www.xing528.com)
协商过程完成,用户A和B获得了完全一样的会话密钥k。而攻击者最多能够知道p=97,g=5,yA=50,yB=44,要想得到会话密钥k,则必须得到xA、xB中的一个,这意味着需要求离散对数。因此攻击者计算出k=75是很不容易的。
2.安全性分析
尽管Diffie-Hellman密钥协商方案的安全性基于有限域上计算离散对数的困难性,且方案简单易行,但它很容易遭受中间人攻击,攻击方法如下:
1)在用户A将他的公钥yA发送给B的过程中,中间人M(即攻击者)截取yA,并用自己的公钥yM取代yA发送给用户B。
2)在用户B将他的公钥yB发送给A的过程中,中间人M截取yB,并用自己的公钥yM取代yB发送给A。
3)A、B和M三者分别计算会话密钥,计算的结果如下:
A与M共享会话密钥kA:
B与M共享会话密钥kB:
一般情况下kA≠kB,但A与B对此一无所知。
4)接下来,在A与B通信过程中,A用会话密钥kA加密他发送的消息,B则用会话密钥kB加密他发送的消息。中间人M可以设法截取来自A的消息并用kA解密,再用kB重新加密后发送给B;对于来自B的消息则先用kB解密,然后再用kA加密后发送给A。这样,中间人M就可以轻易监视A与B的通信,甚至还能够在其中实施篡改、伪造或假冒攻击。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。