IPSEC 隧道抓包分析

整个IPSEC 从建立到数据传输可以分为两个阶段。阶段一主要是协商建立一个主密钥,所有后续用户的密钥都根据主密钥产生,阶段一主要是在通信双方间建立一条经过身份验证并且加密的通道。阶段二使用阶段一建立的安全通道,协商安全联盟和用于保护用户数据的密钥。

阶段一有主模式和积极模式。现在抓包分析的是主模式,有6个来回交互的包,发起端是60.251.67.10,对端是58.248.41.221。

第一阶段

第一个包,发起端协商SA,使用的是UDP协议,端口号是500,上层协议是ISAKMP,该协议提供的是一个框架,里面的负载Next payload类似模块,可以自由使用。可以看到发起端提供了自己的cookie值,以及SA的传输集。

第二个包,响应端响应,回包中包括自己的cookie值和协商好的传输集。传输集是什么样的?把security association展开,如下,主要是加密算法,哈希算法,认证算法,生存时间等。

第三个包,发起端开始交换密钥的相关材料,记住交换的不是密钥本身。采用的是DH算法。这时可以看到ISAKMP的下一负载变成了Key Exchange,不是SA了。

第四个包,响应端回包。这样,双方的密钥材料交换完毕,可以生成共有的主密钥了。 密钥生成的公式如下

ospf抓包如何分析 ipsec抓包分析_身份验证

主密钥生成后,会跟着产生三个密钥

其中密钥d和a是为下一阶段用的,而密钥e是用来加密后续的协商数据的。

第五个包,发起方发起身份验证,带有Identification的数据。

第六个包,响应端回应报文,双方身份验证通过,注意包的经过加密的,加密的密钥就是上面产生的密钥e。

到此,阶段一完成了,ISAKMP的SA也建立起来了,后续的密钥也有了,就要开始阶段二的协商了。阶段二只有一种模式:快速模式,通过三个包完成交互。第二阶段的数据是经过加密的,该阶段会产生ipsec sa,每一端都有两个,一个进站一个出战,每个sa的SPI都不同,所以阶段二共产生4的SA。

第二阶段

第一个包发起方主要是进行IPSEC SA的协商,建立安全联盟,协商用的封装是AH或是ESP,以及后面的加密算法认证完整性算法以及生存时间和感兴趣流等等

第二个包响应方回包,协商好和发起端共同的的规则。

最后一个包是发起端对响应端的确认。以上三个包都是通过HASH进行完整性和可靠性认证的。到此,隧道建立起来。