IKE动态方式协商建立IKE SA以及IPsec SA,IKE SA是为了协商用于保护IPsec隧道的一组安全参数;建立IPsecSA的目的是用于保护用户数据的安全参数。
IKE协议建立在ISAKMP定义的框架上,是基于UDP应用层协议(端口号500/4500),提供了自动协商交换秘钥,建立SA的服务。
IKEv1协商分类二个阶段,第一阶段协商IKE SA,有主模式和野蛮模式(建立一个已通过双方身份认证和对通信数据安全保护的通道)。第二阶段协商IPsec SA为快速模式(用于最终的IP数据安全传输的IPsec SA)。
在双方协商之前,需要识别对方身份的合法性,方法包括PSK/RSA数字证书/RSA数字信封认证。
数据加密体现在两个方面:
IKE协商过程中,在身份验证阶段,对协议报文进行加密;
在数据报文传输阶段,对数据进行加密(可选);
在IKE报文中,双方需要各自依据源/目的IP地址、端口号、本地生成的随机数、时间等计算出自己的cookie(IKEv2中为SPI)。
主模式使用6条消息,3次交互过程:
第一次交互过程:隧道两端对等体通过交换彼此配置的IKE策略以采用相同的IKE安全策略。发送方发送一个或多个IKE安全策略,包括:五元组,加密算法,哈希算法,DH组,IKE SA生存时间。响应方在本地查找最先与收到的安全提议匹配的IKE安全提议,并回应给发送方,使得双方确定相同的IKE策略。
第二次交互过程:对等体间通过DH算法交换彼此的秘钥生存所需的参数信息:DH公开值、随机数nonce等。利用自己的公、私钥,对方的公钥,nonce值,配置的预共享秘钥等建立两端相同的共享秘钥:key_d(用于推到秘钥) / key_a(用于auth) / key_e(用于encrypt).
第三次交互用生成的key_e彼此相互发送各自的身份(IP/名称)和验证数据,至此,对等间的IKE SA建立就完成了。
野蛮模式使用3条消息:
第一条消息为发送方的IKE安全策略,本端秘钥生成信息(DH公共信息),身份信息。
响应方收到这些信息之后,首先在本地查找与发起方发来的IKE安全策略匹配的策略,若找到,则确定为作为共同的IKE策略。利用确定的IKE安全策略,发送方发来的秘钥生成信息,以及本端的DH公私钥,nonce随机数生成认证秘钥和加密秘钥,并进行初步身份验证。
第二条消息包括响应方的秘钥生成信息,身份信息,以及响应方用于身份验证的验证数据。发送方在收到后获知最终采用的IKE策略,并利用响应方的公钥,本地的公私钥,nonce随机数生成一系列秘钥,并初步验证身份信息。
第三条信息发送方将自己的验证数据(身份仍在机制中的秘钥、证书等)发送给响应方,让响应方完成最后的身份验证。
野蛮模式缺点:
虽然减少了交换信息,提高了协商速度,但是没有对身份和验证信息进行加密保护。
NAT穿越中,会修改IP地址,但是野蛮模式不依赖于IP地址标志身份(可以依赖于主机名),如果野蛮模式采用预共享秘钥PSK验证时,NAT穿越无法实现。
野蛮模式优点:
如果发起方的IP地址不固定或者无法预知,而双方都希望采用预共享秘钥,则只能采用野蛮模式。
如果发送方已知响应方的策略,或者对响应者的策略有了全面的了解,采用野蛮模式能更快的创建IKE SA.
第二阶段的目的是在第一阶段的基础上建立IPsecSA,其主要完成如下的工作:
上述协商一致后,将建立两个IPsec SA,分别用于入站和出站信息。
消息1、2 中的IPsec安全提议包括了安全协议、SPI、IPsec封装模式、PFS、IPsec SA生存周期、双方的信息(IP地址,端口号)、验证数据(身份认证机制中的秘钥,证书等信息)、nonce随机数(用于生成密码的材料)。(这些信息使用一阶段的key_e进行加密)
接收方会利用所收到的对方数据生成加密秘钥。
消息3为确认消息 (使用key_e加密),使得响应方获知可以正式通信了。