1.ipsec 封装模式 AH ,ESP,AH+ESP 在该两种封装模式下都可以使用 隧道模式(Tunnel Mode):保护一个网络中的设备的安全,通常是两台网关设备。
隧道模式使用新的报文头来封装消息,可以保护一个网络的消息,适用于两个网关之间通信,是比较常用的封装模式。 传输模式(Transport Mode ):保护两台通信主机之间的安全。 传输模式不改变报文头,隧道的源和目的地址就是最终通信双方的源和目的地址,通信双方只能保护自己发出的消息,不能保护一个网络的消息。
图:隧道模式下的ESP加密报文 2.IKE 协议 协商建立IPsec SA IKE协议中重要的协议ISAKMP协议,其报文如下: a.Initiator’s Cookie(SPI)和responder’s Cookie(SPI):在IKEv1版本中为Cookie,在IKEv2版本中Cookie为IKE的SPI,唯一标识一个IKE SA。 b.Version:IKE版本号1。 c.Exchange Type:IKE定义的交互类型2。交换类型定义了ISAKMP消息遵循的交换顺序。 d.Next Payload:标识消息中下一个载荷的类型。一个ISAKMP报文中可能装载多个载荷,该字段提供载荷之间的“链接”能力。若当前载荷是消息中最后一个载荷,则该字段为0。 e.Type Payload:载荷类型,ISAKMP报文携带的用于协商IKE SA和IPSec SA的“参数包”。载荷类型有很多种,不同载荷携带的“参数包”不同。不同载荷的具体作用我们后面会结合抓包过程逐一分析。 说明:
1:IKEv1版本中可以在交换类型字段查看协商模式,阶段1分为两种模式:主模式和野蛮模式,阶段2采用快速模式。主模式是主流技术,野蛮模式是为解决现实问题而产生的。IKEv2版本中定义了查看创建IKE SA和CHILD SA(对应IKEv1的IPSec SA)的IKE_SA_INIT、IKE_AUTH(创建第一对CHILD SA)、CREATE_CHILD_SA(创建后续的CHILD SA)。 该ISAKMP协商使用的主模式,IKE SA协商双方发送了6个报文,后面的IPsec SA的协商使用的快速模式。 主模式下的协商过程:
分为三个阶段进行协商:
双方响应IKE安全提议报文,同时在自己配置的ipsec 安全规则中寻找匹配的安全规则,主要匹配:加密算法、认证算法、身份认证方法、DH组标识,需要双方具有相同的匹配,才能协商成功。
发送密钥材料,利用ISAKMP消息的Key Exchange和nonce载荷交换彼此的密钥材料,Key Exchange用于交换DH公开值,nonce用于传送临时随机数。
生成密钥用于身份验证和加密,网关最终会产生三个密钥: a.SKEYID_a:ISAKMP消息完整性验证密钥――谁也别想篡改ISAKMP消息了,只要消息稍有改动,响应端完整性检查就会发现! b.SKEYID_e:ISAKMP消息加密密钥――再也别想窃取ISAKMP消息了,窃取了也看不懂! 以上两个密钥保证了后续交换的ISAKMP消息的安全性!
c.SKEYID_d:用于衍生出IPSec报文加密和验证密钥――最终是由这个密钥保证IPSec封装的数据报文的安全性! 整个密钥交换和计算过程在IKE SA超时时间的控制下以一定的周期进行自动刷新,避免了密钥长期不变带来的安全隐患。
身份认证: 主要有两种认证方式- --->预共享密钥(pre-share):设备的身份信息为IP地址或名称(包括FQDN和USER-FQDN两种形式)。当IKE Peer两端都有固定IP地址的时候,一般都用IP地址作为身份标识;当一端为动态获取IP地址的时候,没有固定IP地址的一端只能用名称来标识。
--->数字证书方式(certificate):设备的身份信息为证书和通过证书私钥加密的部分消息Hash值(俗 称签名)
以上身份信息都由SKEYID_e进行加密,所以在抓包中我们只能看到标识为“Encrypted”的ISAKMP消息,看不到消息的内容(身份信息)。
IPsec SA 的建立:
在IKE v1中,ipsec SA 的建立使用的是ISAKMP的快速模式,发送三条消息。其中的数据是加密的。协商的流程和交换的信息如下图:
IPsec SA 协商过程:
对端发送IPsec安全提议和密钥材料,对端发送响应报文,包含匹配到得Ipsec规则,和密钥材料。同时双方生产用于IPsec SA 的密钥。
注意:
由于IPSec SA的密钥都是由SKEYID_d衍生的,一旦SKEYID_d泄露将可能导致IPSec VPN受到侵犯。为提升密钥管理的安全性,IKE提供了PFS(完美向前保密)功能。启用PFS后,在进行IPSec SA协商时会进行一次附加的DH交换,重新生成新的IPSec SA密钥,提高了IPSec SA的安全性。 |