IKEv2中Diffie-Hellman密钥交换算法的改进①
2009-01-06闾立新高振栋
闾立新 高振栋
[摘 要]IKEv2密钥协商过程能够增强IPSec VPN网关之间隧道建立过程的安全性。Diffie-Hellman算法作为IKEv2协商过程中的重要组成部分,它的安全可靠性就显得非常重要。本文针对Diffie-Hellman算法存在的若干缺陷,提出一种与预共享密钥、密钥共享等思路结合的改进方案,从而进一步提高该算法的安全性,最终确保整个IKEv2和VPN的可靠性。
[关键词]IPSecIKEv2Diffie-Hellman算法
[中图分类号]TP393 [文献标识码]A [文章编号]1007-9416(2009)11-0097-02
网络安全是目前比较热门的话题,在众多安全技术中,IPSec VPN为不在同一个物理地址的通讯双方建立了安全可靠的通讯隧道,而IKEv2作为IKE的替代者极大地增强了IPSec VPN网关之间隧道建立过程的安全性。
IKEv2是IPSec体系中的重要的密钥协商协议,它可以有选择地使用Diffie-Hellman算法、预共享密钥算法、RSA数字签名算法等方法提高密钥协商过程的安全性。本文针对Diffie-Hellman算法理论上的缺陷,提出了一种Diffie-Hellman改进算法,从而可以进一步提高IKEv2协商过程的安全性。
1 IKEv2协商过程简介
整个IKEv2存在两个协商阶段,它们分别是初始交换阶段和协商子SA交换阶段,主要用于协商IKE_SA和协商CHILD_SA(即IPSec SA)。另外,还可以使用信息交换阶段用来在IKEv2协商双方之间通知一些出错、配置、删除等信息。
在第一阶段初始交换阶段中协商双方先后进行IKE_SA_INIT交换和IKE_AUTH交换两个
过程。初始交换阶段协商得到IKE_SA,并以此保护后面的IKE_AUTH交换过程以便协商得到IPSec SA。
IKE_SA_INIT交换过程如下所示。
I->R:HDR,SAi1,KEi,Ni
I<-R:HDR,SAr1,KEr,Nr,[CERTREQ]
IKE_AUTH交换过程如下所示。
I->R:HDR,SK{IDi,[CERT,][CERTREQ,][IDr,]AUTH,SAi2,TSi,TSr}
I<-R:HDR,SK{IDr,[CERT,]AUTH,SAr2,TSi,TSr}
协商子SA交换过程如下所示。
I->R:HDR,SK{[N],SA,Ni,[KEi],[TSi,TSr]}
I<-R:HDR,SK{SA,Nr,[KEr],[TSi,TSr]}
信息交换交换过程如图1所示。
I->R:HDR,SK{[N,][D,][CP]}
I<-R:HDR,SK{[N,][D,][CP]}
由于篇幅所限,在此不详细阐述每一个交换过程的详细过程,这里重点介绍一下包含Diffie-Hellman算法的交换过程。
IKE_SA_INIT交换过程的第一条消息中的HDR表示IKEv2消息头,SAi1包含了发起者针对IKE_SA的提案建议,提案中包括加密算法、认证算法、DH组等内容,KEi包含了发起者的Diffle-Hellman公开值,Ni则表示发起者的Nonce值。
响应者接收到发起者发送的消息后在SAi1中选择某种提案形成SAr1,并且将KEr和Nr分别作为响应者的Diffle-Hellman公开值以及Nonce值发送给发起者。在响应消息中,响应者还可以包含可选的证书请求载荷发送给发起者。
2 Diffie-Hellman算法的改进
2.1 Diffie-Hellman算法简介
Diffie-Hellman密钥交换算法可以使交换双方在不安全的网络环境中安全地交换计算密钥的材料,从而使交换双方可以各自安全地计算出密钥。IKEv2在动态密钥协商过程中的IKE_SA_INIT交换过程和协商子SA交换过程中可以使用Diffie-Hellman密钥交换算法。
假设交换双方Alice和Bob使用Diffie-Hellman算法交换密钥,那么交换步骤如下:
(1)首先定义一个素数p和底数g,p和g是公开的。
(2)Alice秘密选取随机数字a,Bob也秘密选取随机数字b。
(3)Alice进行以下计算得到A:
A = ga mod p
而Bob也可以进行计算得到B:
B = gb mod p
我们称A和B为Diffie-Hellman公开值,它们是可以公开的。
(4)Alice将A传送给Bob,Bob也将B传送给Alice。
(5)Alice计算Key(Alice)得到密钥:
Key(Alice) = Ba mod p
(6)Bob计算Key(Bob)得到密钥:
Key(Bob) = Ab mod p
经过简单证明可以得知:Key(Alice)= Key(Bob)。
2.2 现有算法的缺陷
从以上Diffie-Hellman算法的具体过程可以看出该算法存在以下几个缺陷:
(1)在Diffie-Hellman算法中,Diffie-Hellman公开值A和B、素数p和底数g都是公开的,所以理论上攻击者可能截获Diffie-Hellman公开值A和B,从而计算出Alice的秘密a和Bob的秘密b。在Diffie-Hellman算法中,算法的安全性取决于与p有相同长度的数的因子分解的难度。一旦p选择不合适,算法安全性就受到极大威胁。
(2)Diffie-Hellman密钥交换机制容易遭受“中间人攻击”。如图1所示,入侵者截获并且修改了Alice和Bob交换的Diffie-Hellman公开值,并且分别用A代替了A,B代替了B,而Alice和Bob却不能有效地发现这种情况的发生(见图1)。
2.3 改进思路
为了进一步提高Diffie-Hellman算法的安全性,本文提出以下改进思路。
针对交换双方的秘密a和b可能被攻击者计算得出的情况,可以采用结合预共享密钥认证算法、密钥共享的思路将原有秘密a和b分别拆分成a1、a2、a3和b1、b2、b3六个秘密。a1和b1还是参加Diffie-Hellman公开值A和B的计算,而a2和b2是预先共享的密钥,用于认证交换双方的身份。而a3和b3不参加计算和交换过程,它们是预先协商或者共享的秘密,所以a3和b3可以相同,即a3=b3。具体算法过程如下所示。
(1)首先定义一个素数p和底数g,p和g是公开的。
(2)Alice秘密选取随机数字a1,Bob也秘密选取随机数字b1。同时,Alice和Bob预先共享同一个秘密a2和b2,a2=b2。
(3)Alice进行以下计算得到A:
A = ga1 mod p
而Bob也可以进行计算得到B:
B = gb1 mod p
(4)Alice使用预共享密钥a2对A进行认证,计算得到Ap。Bob使用预共享密钥b2对B进行认证,计算得到Bp。
Ap = f(A,a2)
Bp = f(B,b2)
Alice将Ap传送给Bob,Bob也将Bp传送给Alice。
(5)Alice计算Key(Alice)得到密钥:
Key(Alice) = Bpa1 mod p | a3
(6)Bob计算Key(Bob)得到密钥:
Key(Bob) = Apb1 mod p | b3
改进方案优势分析如下:
(1)采用以上改进方案,即使Alice和Bob选取了不合适的p和g,攻击者计算得出a1和b1也不会威胁算法的安全性。因为a3和b3没有参与交换传输,不存在被攻击者截获并且计算得到的可能性。
(2)由于原有的秘密a和b分别拆分成a1、a2、a3和b1、b2、b3六个秘密,所以分散了秘密被攻击者破解的可能性和风险。攻击者只有得到必要的所有计算材料才能最终破解Diffie-Hellman算法,这符合密钥共享的基本思想,即将单一的秘密进行拆分成若干份,只有得到必要的若干份秘密才能还原被拆分前的秘密。
(3)以上改进方案可以有效抵御“中间人攻击”。在图1中,攻击者即使截获了A和B,由于在改进方案中使用了a2和b2这一对预共享密钥对交换的内容进行了认证,攻击者无法进行冒充交换双方,交换双方Alice和Bob很容易能够识别被替换的Diffie-Hellman公开值A和B。
3 结语
本文针对Diffie-Hellman算法的若干缺陷提出一种改进方案,从而进一步提高了IKEv2协商过程的安全性,最终确保了VPN通讯隧道的可靠性。
[参考文献]
[1] 陈卓,张正文.Internet密钥交换协议IKEv2研究[J].计算机应用与软件,2008,25(2):269-270.
[2] 韩旭东,汤隽,郭玉东.新一代IPSec密钥交换规范IKEv2的研究[J].计算机工程与设计,2007,28(11):2549-2552.
[3] 杜春燕,周晓东,陆建德.一种基于IKEv2的IPsec远程访问实现方案[J].电脑与电信,2007(9):4-6.
[4] Iso-Anttila Lari,Ylinen Jorma,Loula Pekka.A Proposal to Improve IKEv2 negotiation [C].Emerging Security Information,Systems,and Technologies, 2007 International Conference on;Valencia,Spain,2007:169-174.
[基金项目]
江苏省自然科学基金项目(BK2004039)