对于站点到站点的会话,构建连接的基本过程如下: 一个VPN网关对等体发起了到另外一个远程的VPN网关对等体的会话(触发流量),如果没有存在VPN的连接,那么ISAKMP/IKE阶段1开始: l 两个对等体协商如何保护管理连接 l Diffie-hellman用于为管理连接中的加密算法和HMAC功能来安全的共享密钥。 l 在安全管理连接中来执行设备验证。 ISAKMP/IKE阶段1结束,阶段2开始: 对等体协商参数和密钥信息用来保护数据连接(这是在安全管理连接下实现的,或者你也可以选择性的再次使用Diffie hellman) 数据连接被建立,阶段2结束,VPN网关现在可以通过数据连接来保护用户流量。最终,管理连接和数据连接将会超时,并重新构建连接。协商过程中IKE使用用户数据报协议(UDP)端口500(通常用于源和目的双方)进行通信。 1.2 ISAKMP/IKE阶段1 ISAKMP/IKE阶段1基本上负责建立一个安全的管理连接,它有两种工作模式:主模式和积极模式(或称为野蛮模式)。管理连接是一个双向的过程,源和目标都是使用的UDP 500。 在ISAKMP/IKE阶段1将会发生三件事情,以建立双向的ISAKMP SA 1.安全关联建立和安全参数协商(加密算法,HASH算法,DH组,身份认证)。 2.DH算法(密钥交换) 3.对等体认证(预攻向密钥,数字证书,加密随即数) 3.2.1 主模式主模式在三次交换中总共用到了六条消息,最终建立了IKE SA。报文是UDP的类型,封装在端口500里面。6个数据包共三个步骤,[协商安全参数]、[Diffie-Hellman和nonce交换]、以及[对方身份的验证]: 第一对消息主要为SA交换,是协商确认有关安全策略的过程; ① 发起者send一个cookie (记为:Ci ) 和SA负载(记为:SAi,包括使用的加密算法如DES、3DES等,散列算法如MD5,身份验证方法如预共享、数字签名、加密临时值等,生存时间等信息)用来协商参数; ② 响应者发送一个SAr(已经挑选的安全参数)和cookie Cr: 如果没有可以挑选的参数,响应者会返回一个负载拒绝; 第二对消息叫密钥交换,交换Diffie-Hellman公共值和辅助数据(如:随机数),加密物在这个阶段产生; 此过程的目的在于为第一对消息中所协商的算法生成加密key。两个对等体通过DH生成公钥并交换DH公钥参数以及随机的称为nonces(伪随机数)的仅被使用一次的值。nonces用来预防重传攻击。这2条消息,用于交换DH的公开信息和随机数。 两个对等体根据DH的公开信息都算出了双方相等的密值后,两个nonce连通预共享密钥生成第一个skeyID,随后便根据SKEY__ID来推算出其他几个skeyID。 1: KDH=DH算法(用自己的私钥+对方公钥) 2: SKEY__ID=hash (pre-shared key ,Ni | Nr) 3: SkeyID_d=hash(SKEY__ID, KDH| Ci | Cr | 0 ) 4: SkeyID_a = hash(SKEY__ID, SkeyID_d | KDH| Ci | Cr | 1) 5: SkeyID_e=hash(SKEY__ID,SkeyID_a | KDH| Ci | Cr | 2 ) ² skeyID_d---第二阶段使用,用来协商出后续IPSEC SA加密使用的IKE密钥资源; ² skeyID_a---散列预共享密钥(HMAC中的密钥),为后续的IKE消息协商以及IPSECSA协商进行完整性检查; ² skeyID_e---为后续的IKE消息协商以及IPSEC SA协商进行加密,下一阶段的message,data,Preshared key,和第二阶段的加密。 最后一对消息是ID信息和验证数据交换,这个过程是受skeyID_e加密保护的,进行身份验证和对整个SA交换进行验证。 完成此步骤的设备认证,使用skeyID_e进行加密,SkeyID_a 进行HASH认证(HASH_i,HASH_r)所涉及的算法都是最前面两个包协商出来的;最重要的是在这次交换中还有个ID交换(IDi,IDr); 6.HASHi = hash(SKEYID, X|Y|Ci|Cr|SAr|IDi) 7.HASHr = hash(SKEYID, X|Y|Cr|Ci|SAi|IDr) 主模式的好处:设备验证的步骤发生在安全的管理连接中,因为这个连接是在前两个步骤中构建的,因此,两个对等体需要发送给对方的任何实体信息都可以免受攻击。站点到站点和使用证书做设备验证的远程访问默认使用主模式。 主模式=1个双向ISAKMP SA + 2次加密 + 3次交换 + 5个KEY + 6个包 + 7步运算 3.2.2 野蛮模式(积极模式)对于两端IP地址不是固定的情况(如ADSL拨号上网),并且双方都希望采用预共享密钥验证方法来创建IKE SA,就需要采用野蛮模式。另外如果发起者已知回应者的策略,采用野蛮模式也能够更快地创建IKE SA。 1.在第一条消息中,发起方发送ISAKMP报头,安全关联,DH公开值,临时值和身份ID 2.在第二条消息中,应答方用选定提议的所有参数和DH公开值进行应答,该消息被验证,但没有加密. 3第三条消息由发起方发回给应答方,该消息被验证,让应答方能够确定其中的散列值是否与计算得到的散列值相同,进而确定消息是否有问题.积极模式没有主模式安全,因为身份是以明文方式传输的且不能协商DH参数 总结:积极模式=1个双向ISAKMP SA+1次加密+3个步骤+3个包+5个KEY+7步运算 3.3.3 野蛮模式的必要性:两边都是主机名的时候,就一定要用野蛮模式来协商,如果用主模式的话,就会出现根据源IP地址找不到预共享密钥的情况,以至于不能生成SKEY_ID。 1、因为主模式在交换完3、4消息以后,需要使用预共享密钥来计算SKEY_ID,但是由于双方的ID信息在消息5、6中才会被发送,此时主模式的设备只能使用消息3、4中的源IP地址来找到与其对应的预共享密钥;如果主模式采用主机名方式,主机名信息却包含在消息5、6中,而IPSEC双方又必须在消息5、6之前找到其相应的预共享密钥,所以就造成了矛盾。 2、在野蛮模式中,ID信息(IP地址或者主机名)在消息1、2中就已经发送了,对方可以根据ID信息查找到对应的预共享密钥,从而计算出SKEY_ID。 3.3.4 两种模式的区别:1、野蛮模式协商比主模式协商更快。主模式需要交互6个消息,野蛮模式只需要交互3个消息。 2、主模式协商比野蛮模式协商更严谨、更安全。因为主模式在5、6个消息中对ID信息进行了加密。而野蛮模式由于受到交换次数的限制,ID信息在1、2个消息中以明文的方式发送给对端。即主模式对对端身份进行了保护,而野蛮模式则没有。 3、NAT支持: ①对预共享密钥认证:主模式不支持NAT转换,而野蛮模式支持 ②对于证书方式认证:两种模式都能支持。 4、两种模式在确定预共享密钥的方式不同。主模式只能基于IP地址来确定预共享密钥。而野蛮‘模式是基于ID信息(主机名和IP地址)来确定预共享密钥。 1.3 ISAKMP/IKE阶段2 SAKMP/IKE阶段2只有一个模式:快速模式.它定义了受保护数据连接是如何在两个IPSEC对等体之间构成的.快速模式有两个主要的功能: 1.协商安全参数来保护数据连接。 2.周期性的对数据连接更新密钥信息. 阶段2所关心的事: 1.什么流量需要被保护?(感兴趣流量) 2.应当使用什么样的安全协议来保护流量(AH,ESP) 3.基于选择的安全协议,数据流量是如何 被保护的?(例如使用什么样的HMAC功能) 4.使用什么样的操作模式?(传输模式,隧道模式) 5.当刷新密钥信息的时候,是ISAKMP/IKE阶段1的管理用来共享心的密钥还是完美转发密钥用于刷新密钥? 6.数据连接的生存周期是多少? |