新一代动态密钥协商协议IKEv2的研究与分析
周耀鹏1,2,李志华1
(1.江南大学信息工程学院,2.无锡科技职业学院,江苏无锡 214122)
摘要: IKE协议作为IPSec体系中动态密钥协商机制,极大地增强了IPSec体系的安全性。而IEKv2作为IKE的替代者,对原有的IKE协议进行了诸多方面的改进。本文首先简单介绍了IKE协议,然后重点分析了IKEv2具体协商过程,最后阐述了IKEv2的发展趋势。
关键词:IP安全(IPSec);Internet动态密钥交换(IKE);IKE第二版本(IKEv2);动态密钥协商
中图分类号:TP393.08
文献标识码:A
Research and Analysis about the New Generation Dynamic Key
Negotiation Protocol IKEv2
Zhou Yao-peng,Li Zhi-hua
(1.Jiangnan University,School of Information Technology,2.Wuxi Professional
College of Science and Technology,Jiangsu,Wuxi 214028,China) Abstract: As the dynamic key negotiation mechanism in the IPSec system,IKE improves the safety of the IPSec system greatly.Being a substitute,IKEv2 makes IKE be improved in many aspects.This paper introduces the IKE protocol in brief, and emphatically analyzes the concrete negotiation process of IKEv2,finally elaborates the IKEv2 trend of development.
Key words:IP Security(IPSec);Internet Key Exchange(IKE);version 2 of Internet Key Exchange(IKEv2);dynamic key negotiation
引言
目前网络安全的重要性日益突出,IKE协议作为IPSec体系的组成部分,极大地增强了网络通讯的安全性。但是IKE协议具有很多缺陷,为此新的IKEv2协议在IKE的基础之上进行了大量的改进,从而进一步增强IPSec体系的安全性,为上层网络的安全性提供了保障。
1 IKE简介
IKE协议属于整个IPSec体系结构中的动态密钥协商部分,它是多种动态密钥交换机制之一,也是目前事实上的工业标准。IKE协议主要用于进行虚拟专用网VPN的认证与SA会话密钥的协商。它可以动态地建立安全关联,为通信双方提供IPSec安全通信所需的相关信息,例如加密算法、会话密钥、通信双方身份认证等。
IKE机制协商的目的是产生一个通过验证的密钥和提供双方同意的安全服务,即最终提供IPSec 安全关联(IPSec SA),使进行通讯的IPSec VPN之间能够建立安全的数据通讯隧道。IKE主要通过两个阶段的协商过程来建立IPSec安全关联(IPSec SA)。第一阶段建立ISAKMP SA,第二阶段利用第一阶段得到的ISAKMP SA进一步协商从而建立IPSec SA。
IKE是一种混合型协议,其复杂性一直受到业界广泛的批评。另外,IKE还存在很多问题。
2 IKEv2简介
为了解决原有IKE的诸多缺点,IKE的第二版本IKEv2主要对IKE进行了以下改进:(1)克服了原先IKE协议分散在各个文档的缺点,例如原有的RFC2407(IPSec DOI)、RFC2408(ISAKMP)、RFC2409(IKE)以及随后补充的关于NAT穿透、扩展认证和获取远程访问地址等分散的文档。采用了统一的文档定义了IKEv2。
(2)IKEv2采用了4条消息交换取代了原有的9条消息,提高了协商效率。
(3)IKEv2删除了原有IKE协议中功能不强且难以理解、容易混淆的数据结构。
(4)修复了多处公认的安全缺陷和漏洞。
(5)定义了新的通讯量选择载荷,增加了协议灵活性。
IKEv2主要协商过程主要分为初始交换、协商子SA交换、信息交换三部分。
2.1 初始交换
IKEv2将初始阶段的IKE_SA_INIT和IKE_AUTH两个消息交换取代原有IKE第一阶段的3次消息交换。IKE_SA_INIT交换中的消息没有进行加密处理,它协商了IKE_SA中包含的各种安全参数,其中包括密码学相关算法,并且进行Nonce值以及Diffle-Hellman交换,最后建立IKE_SA。
IKE_SA_INIT交换过程如图1所示。第一条消息中的HDR表示IKEv2消息头,SAi1包含了发起者针对IKE_SA的提案建议,提案中包括加密算法、认证算法、DH组等内容。KEi包含了发起者的Diffle-Hellman公开值,Ni则表示发起者的Nonce值。由此可以看出,IKEv2将IKE第一阶段前两次交互过程精简为一次IKE_SA_INIT交换,从而提高了协商的效率。
图1 IKE_SA_INIT交换过程
协商响应者接收到发起者发送的消息后在SAi1中选择某种提案形成反馈提案SAr1,并且将KEr和Nr分别作为响应者的Diffle-Hellman公开值以及Nonce值反馈给发起者。在响应消息中,响应者还可以发送可选的证书请求载荷CERTREQ。
IKE_SA_INIT交换过程完成之后,协商双方可以计算种子密钥SKEYSEED以得到其他7个秘密:SK_d、SK_ai、SK_ar、SK_ei、SK_er、SK_pi和SK_pr。
(1)SK_d是建立在该IKE_SA基础上的各个CHILD_SA派生新的密钥材料。
(2)SK_ai和SK_ar分别应用于发起者和响应者方向的认证算法。
(3)SK_ei和SK_er分别用于发起者和响应者方向后继消息的加密。
(4)SK_pi和SK_pr分别用于发起者和响应者方向认证载荷的计算。
以上密钥材料的计算公式如下:
SKEYSEED = prf(Ni | Nr,gir)
SK_d = prf(SKEYSEED ,Ni | Nr | SPIi | SPIr | 0x01)
SK_ai = prf(SKEYSEED ,SK_d | Ni | Nr | SPIi | SPIr | 0x02)
SK_ar = prf(SKEYSEED ,SK_ai | Ni | Nr | SPIi | SPIr | 0x03)
SK_ei = prf(SKEYSEED ,SK_ar | Ni | Nr | SPIi | SPIr | 0x04)
SK_er = prf(SKEYSEED ,SK_ei | Ni | Nr | SPIi | SPIr | 0x05)
SK_pi = prf(SKEYSEED ,SK_er | Ni | Nr | SPIi | SPIr | 0x06)
SK_pr = prf(SKEYSEED ,SK_pi | Ni | Nr | SPIi | SPIr | 0x07)