IKE(Internet Key Exchange)- 互联网密钥交换
为了后面介绍基于IKEv2的FlexVPN,本文先介绍一下IKEv1和IKEv2区别。
在开始介绍之前,先来看看IKEv1在IPSec VPN中的应用及工作流程。
在IPSec VPN中,IKE用于协商IPSec SA。此过程要求IPSec首先进行相互验证并建立ISAKMP共享密钥。一个SA是指描述两个或多个对等体之间使用何种安全服务进行安全通信。
这个过程分两个阶段进行:
IKE-阶段1:进行IPSec对等体身份认证,并在对等体之间建立安全通道用于密钥交换。
阶段1主要进行以下工作:
-
- 进行IPSec对等体的身份验证;
- 在对等体之间协商能匹配的IKE SA策略,以保护IKE密钥交换;
- 使用已验证的Diffie-Hellman交换“密钥材料”,最终生成匹配的共享密钥;
- 建立安全隧道,用于协商IKE第2阶段参数。
阶段1有两种工作模式(main mode 和 aggressive mode)
main mode(主模式):在对等体间进行三次双向交换(由6条消息组成),协商匹配对等体间的IKE SA值,为后续ISAKMP交换提供受保护的通道。(每个对等体的IKE SA都是双向的)
- 第1次交换:协商用于保护IKE通信的哈希算法,确保每个对等体的IKE SA策略能够匹配一致;
- 第2次交换:通过使用Diffie-Hellman在对等体间交换密钥生成材料后,各对等体可以生成一样的共享密钥;(真正的共享密钥不会通过DH交换)
- 第3次交换:验证对等体身份,其中身份信息是加密形式的对等体IP地址。
aggressive mode(野蛮模式):仅进行一次双向交换,对等体双方都将协商所需的一切(如:DH公钥、身份信息等)放在IKE SA中,一次性的发送给对端。也就是说野蛮模式在建立安全通信通道之前,就已经进行了信息交换。虽然提高了通信效率,但是降低了安全性。
IKE-阶段2:协商IPSec SA,建立IPSec隧道。
阶段2主要进行以下工作:
-
- 在阶段1的IKE SA保护下,进行IPSec SA的参数协商;
- 建立IPSec SA;
- 定期重新协商IPSec SA,以确保安全;
- 进行额外的Diffie-Hellman交换(可选)。
阶段2只有一种工作模式:quick mode
quick mode(快速模式):在阶段1建立了安全隧道后,进入快速模式,协商共享的安全策略,派生出用于IPSec安全算法的共享密钥材料,建立IPSec SA。每个对等体在协商后,至少会产生两个单向的IPSec SA(一个入站和一个出站)。
通过上面的介绍,我们已经了解了IKEv1在IPSec VPN中的工作流程。现在我们再来看看IKEv2是如何做的。(不管是IKEv1还是IKEv2,它们在IPSec VPN中扮演的角色是一样的,只是负责IPSec加解密所需的密钥协商和交换工作。因此,下面仅介绍IKEv2工作过程)
在IKEv2的工作过程中,对等体协商由3个交换来完成,消息可分为4类:IKE_SA_INIT、IKE_AUTH、CREATE_CHILD_SA和Infomational,其中IKE_SA_INIT和IKE_AUTH为初始交换,CREATE_CHILD_SA为建立子SA交换,Informational为信息交换。
- IKE_SA_INIT:对应IKEv1中的第1阶段,负责协商IKE SA策略,并生成密钥材料。此过程共交换2个消息。在单个策略中,允许以“OR”的方式指定多个“加密/完整性/PRF/DH组”。
- IKE_AUTH:在IKE_SA_INIT生成密钥材料后,通过IKE_AUTH执行相互验证,这个过程需要交换2个消息,所交换的消息将使用IKE_SA_INIT产生的密钥进行加密;
- CREAT_CHILD_SA:对应IKEv1中的第2阶段,此过程交换2个消息。在初始交换完成后,可以由任何一方发起,使用初始交换中协商好的加密和认证算法对消息进行保护;
- Informational:对等体在密钥协商期间,一方可能希望向对方发送控制信息,用于通知某些错误或事件的发生。信息交换就是为了实现这个功能的。由于在信息交换中,接收方必须对消息进行响应,因此,发送方可以通过这个方式判断对方是否存活。
由此可见,在IKEv2中,不再存在主模式/野蛮模式/快速模式。IKEv2交换的消息更少,因此效率更高。
上面简单介绍了IKEv2不同于IKEv1的工作过程,下面看看它们还有哪些不同的特性:
- IKEv2是IKEv1的“升级版”,但是它并不向下兼容。也就是说在IKEv1和IKEv2同时存在的环境中,你必须要同时配置IKEv1和IKEv2;
- IKEv2不占用IKEv1资源,也就是说它们可以同时运行在一台设备上;
- IKEv2支持EAP认证,而IKEv1则不支持;
- IKEv2支持MOBIKE,而IKEv1则不支持;(MOBIKE允许IKEv2用于移动平台,如手机等)
- IKEv2已内置了NAT穿越功能,而IKEv1则需通过扩展协议支持;
- IKEv2可以检测隧道存活状态,而IKEv1仅能使用DPD(Dead Peer Detection)。而DPD在IKEv2中已成为标准的内建功能。但思科IOS系统默认该功能是禁用的,可在IKEv2的配置文件下配置;
- IKEv2具有可靠性检测,消息需被确认并排序。而在IKEv1中消息是没有被确认的;
- IKEv2通过反堵塞cookie,来实现反DOS攻击。而IKEv1则不具备该特性;
- IKEv2可以在一个策略中配置多套选择器。因此,多个网络可以在一个交换过程中进行协商;
- IKEv2允许两个加密引擎分别处理IPv4和IPv6流量;
- IKEv2允许非对称验证方式,而IKEv1则只能对称验证;(即对等体间使用相同的认证方式)
- IKEv2与IKEv1一样,使用UDP-500端口,如需NAT,则起始端口号为UDP-4500。
综上所述,IKEv2具备更好的兼容性(跨平台、跨厂商),更多的新特性(如内建NAT、反DOS攻击和隧道存活状态检测等)。