IKEv2协商流程
IKEv2交换的初始阶段
实际上,IKEv2只有两个初始协商阶段:
- IKE_SA_INIT交换
- IKE_AUTH交换
IKE_SA_INIT交换:
1 | Initiator Responder |
带COOKIE notify:
1 | Initiator Responder |
- IKE_SA_INIT是对等体在其中建立安全信道的初始交换。完成初始交换后,所有进一步的交换都将加密。交换仅包含两个数据包,因为它将IKEv1中通常在MM1-4中交换的所有信息合并在一起。因此,响应方处理IKE_SA_INIT数据包的计算成本很高,可以离开以处理第一个数据包;它使协议对欺骗地址的DOS攻击保持开放。
- 为了防止此类攻击,IKEv2在IKE_SA_INIT内有一个可选交换,以防止欺骗攻击。如果达到不完整会话的特定阈值,响应方不会进一步处理数据包,而是使用cookie向发起方发送响应。要使会话继续,发起方必须重新发送IKE_SA_INIT数据包并包括其收到的cookie。
- 发起方重新发送初始数据包以及响应方的通知负载,证明原始交换未欺骗。
IKE_AUTH交换
1 | Initiator Responder |
- 在IKE_SA_INIT交换完成后,IKEv2 SA被加密;但是,远程对等体尚未通过身份验证。IKE_AUTH交换用于对远程对等体进行身份验证并创建第一个IPsec SA。
- 交换包含互联网安全关联和密钥管理协议(ISAKMP)ID以及身份验证负载。身份验证负载的内容取决于身份验证方法,身份验证方法可以是预共享密钥(PSK)、RSA证书(RSA-SIG)、椭圆曲线数字签名算法证书(ECDSA-SIG)或EAP。除身份验证负载外,交换还包括描述要创建的IPsec SA的SA和流量选择器负载。
更新IKEv2交换
CREATE_CHILD_SA交换
1 | Initiator Responder |
- 如果需要其他子SA,或者如果需要重新键入IKE SA或其中一个子SA,则它的功能与快速模式交换在IKEv1中的功能相同。每重新生成密钥或新SA都会重复交换。
INFORMATIONAL交换
1 | Initiator Responder |
- 由于它在所有IKEv2交换中,每个信息交换请求都需要响应。信息交换中可包含三种负载类型。可以包括任意数量的负载组合。
- 删除负载(D)通知对等体发送方已删除一个或多个传入SA。响应方应删除这些SA,并且通常在响应消息中包括在另一方向对应的SA的删除负载。
- 配置负载(CP)用于在对等体之间协商配置数据。CP的一个重要用途是请求(请求)和在受安全网关保护的网络上分配(响应)地址。在典型情况下,移动主机在其家庭网络上建立具有安全网关的虚拟专用网络(VPN),并请求在家庭网络上为其分配IP地址。
- 注意:这可消除第2层隧道协议(L2TP)和IPsec的组合使用所要解决的问题之一。
密钥材料计算
长度不够,重复计算来凑:
1 | prf+ (K,S) = T1 | T2 | T3 | T4 | ... |
各密钥计算:
1 | SKEYSEED = prf(Ni | Nr, g^ir) |
- SKEYSEED: 用于计算其他七个秘密。
- SK_d: 用于为使用此IKE_SA建立的子SA导出新密钥。
- SK_ai和SK_ar: 用作完整性保护算法的密钥,用于验证后续交换的组件消息。
- SK_ei和SK_er: 用于加密(当然还有解密)所有后续交换。
- SK_pi和SK_pr: 它们在生成身份验证有效负载时使用。
IKEv1和IKEv2有哪些区别
1. 协商过程不同
- IKEv1协商安全联盟主要分为两个阶段。IKEv1阶段1的目的是建立IKE SA,它支持两种协商模式:主模式和野蛮模式。主模式用6条ISAKMP消息完成协商。野蛮模式用3条ISAKMP消息完成协商。野蛮模式的优点是建立IKE SA的速度较快。但是由于野蛮模式密钥交换与身份认证一起进行无法提供身份保护。IKEv1阶段2的目的就是建立用来传输数据的IPSec SA,通过快速交换模式(3条ISAKMP消息)完成协商。
- IKEv2简化了安全联盟的协商过程。IKEv2正常情况使用2次交换共4条消息就可以完成一个IKE SA和一对IPSec SA,如果要求建立的IPSec SA大于一对时,每一对SA只需额外增加1次交换,也就是2条消息就可以完成。
2. 认证方法不同
- IKEv2支持EAP身份认证。IKEv2可以借助认证服务器对远程接入的PC、手机等进行身份认证、分配私网IP地址。
- IKEv1无法提供此功能,必须借助L2TP来分配私网地址。
3. IKE SA的完整性算法支持情况不同
- IKE SA的完整性算法仅IKEv2支持。
- IKEv1不支持。
4. DPD中超时重传实现不同
- retry-interval参数仅IKEv1支持。表示发送DPD报文后,如果超过此时间间隔未收到正确的应答报文,DPD记录失败事件1次。当失败事件达到5次时,删除IKE SA和相应的IPSec SA。直到隧道中有流量时,两端重新协商建立IKE SA。
- 对于IKEv2方式的IPSec SA,超时重传时间间隔从1到64以指数增长的方式增加。在8次尝试后还未收到对端发过来的报文,则认为对端已经下线,删除IKE SA和相应的IPSec SA。
5. IKE SA超时时间手工调整功能支持不同
- IKEv2的IKE SA软超时为硬超时的9/10±一个随机数,所以IKEv2一般不存在两端同时发起重协商的情况,故IKEv2不需要配置软超时时间。
6. IPSec SA超时时间手工调整功能支持不同
- IKEv2的IKE SA软超时为硬超时的9/10±一个随机数,所以IKEv2一般不存在两端同时发起重协商的情况,故IKEv2不需要配置软超时时间。
strongswan配置IKEv2
- Cisco IOS和StrongSwan之间的IKEv1/IKEv2配置示例
- 基于 strongSwan 配置 IPsec IKEv2 VPN
- linux上用strongswan搭建ikev2协议vpn