IPsecVPN协商过程详解

IT男日常技术分享,喜欢的麻烦右上角点个关注,支持一下技术的分享!!!谢谢您


IPsecVPN协商模式有两种主模式和野蛮模式(也叫积极模式),主模式的交互需要6个数据包,野蛮模式交互需要三个数据包,所以相对于野蛮模式来说主模式的协商更加严谨和安全,因此多数时候采用的是主模式,只有部分情况才会采用野蛮模式,本次主要讲述主模式和野蛮模式的协商过程,每个数据包的作用,下一次会讲解主模式和野蛮模式的区别以及两种模式的应用场景。

IPsecVPN协商过程详解

IPsecVPN典型应用场景(图片来源于网络)


两个阶段

简要来说IPsecVPN的协商可以分为两个阶段,第一阶段主要是对等体之间彼此验证对方,并协商出IKE SA,保护第二阶段中IPSEC SA协商过程,可以说第一阶段是为第二阶段的交互进行服务的;第二阶段的目标是协商IPSEC SA,而且只有一种模式,快速模式,快速模式的协商是受IKE SA保护的。

第一阶段准备工作

在前2条消息发送以前,发送者和接受者必须先计算出各自的cookie(可以防重放和DOS攻击),这些cookie用于标识每个单独的协商交换消息

cookie---RFC建议将源目IP,源目端口,本地生成的随机数,日期和时间进行散列操作.cookie成为留在IKE协商中交换信息的唯一标识,实际上cookie是用来防止DOS攻击的,它把和其他设备建立IPSEC所需要的连接信息不是以缓存的形式保存在路由器里,而是把这些信息HASH成个cookie值。

第一阶段1&2数据包(发起建议)

数据包1---发送方向对等体发送一条包含一组或多组策略提议,在策略提议中包括5元组(加密算法,散列算法,DH,认证方法,IKE SA寿命)

数据包2---接受方查看IKE策略消息,并尝试在本地寻找与之匹配的策略,找到后,则有一条消息去回应

另外:发起者会将它的所有策略发送给接受者,接受者则在自己的策略中寻找与之匹配的策略(接受者按照一定的顺序在自己的策略中进行一一匹配),如果有匹配的策略则返回正常的响应数据包。

第一阶段3&4数据包(秘钥交换)

这2个数据包,主要是用于交换DH的公开信息和随机数

两个对等体根据DH的公开信息都算出了双方相等的密植后,两个nonce连通预共享密钥生成第一个skeyID

随后便根据SKEY__ID来推算出其他几个skeyID

skeyID_d---用来协商出后续IPSEC SA加密使用的密钥的

skeyID_a---为后续的IKE消息协商以及IPSEC SA协商进行完整性检查(HMAC中的密钥)

skeyID_e---为后续的IKE消息协商以及IPSEC SA协商进行加密

第一阶段5&6数据包(验证信息)

5&6数据包用于双方彼此验证。

由“于消息1&消息2”的算法,以及“消息3&消息4”生成的三个KEY,所以在后续的“消息5&消息6”就能被加密传送,这个过程是受SKEYID_e加密保护的。

数据包5:由发起者向响应者发送,主要是为了验证对端自己就是自己想要与之通信的对端。这可以通过预共享、数字签名、加密临时值来实现。

数据包6:由响应者向发起者发送,主要目的和第五条一样。

第二阶段

经过第一阶段的数据交换协商,创建了一个通信信道(IKE SA),并对该信道进行验证,为双方进一步的IKE通信提供机密性、消息完整性以及消息源验证服务;第二阶段使用已建立的IKE SA建立IPsec SA。第二阶段一共三个数据包。

第二阶段1&2数据包(协商阶段)

数据包1---发送方发送一数据包,其中包含HASH,IPSEC策略提议,NONCE和可选的DH,身份ID

数据包2---接收方以相同的内容进行回应,对发送方信息进行确认

第二阶段3数据包

数据包3:发送方发送第三条消息,其中包含一个HASH,用于确认接受方的消息以及证明发送方处于Active状态(表示发送方的第一条消息不是伪造的);到此为止,双方消息确认完成,IPsecVPN隧道建立成功,可以开始正常的数据交互。


分享到:


相關文章: