第一章IKEv1 理论基础
1.1 概要
- IKE是一个混合型协议,主要由Oakley,SKEME,ISAKMP三部分组成。ISAKMP(Internet安全联盟和密钥管理协议)定义了消息交换的体系结构,包含两个IPSEC对等体间分组形式和状态转变,是基于UDP的应用层协议,为IPSec提供了自动协商密钥、建立IPSec安全联盟的服务。
- 采用IKEv1协商安全联通主要分为两个阶段:
第一阶段,通信双方协商和建立IKE协议本身使用的安全通道,即建立一个IKE SA;
第二阶段,利用第一阶段已通过认证和安全保护的安全通道,建立一对用于数据安全传输的IPSEC安全通道(IPSEC SA)
- IKEv1协商阶段1的目的是建立IKE SA。IKE SA建立后对等体间的所有ISAKMP消息都将通过加密和验证,这条安全通道可以保证IKEv1第二阶段的协商能够安全进行。
IKEv1协商第一阶段支持两种协商模式:主模式(Main Mode)和野蛮模式(Aggressive Mode)。
IKEv1阶段1中主模式与野蛮模式的报文对比:
- IPSEC使用的认证算法和加密算法,身份认证方法
(1)三种认证算法:MD5,SHA-1,SHA-2
(2)三种加密算法:DES,3DES,AES
(3)预共享密钥,数字证书
1.2 IKE SA介绍
第一种模式:
主模式包含三次双向交换,用到了六条ISAKMP信息。这三次交换分别是:
- 消息①和②用于提议交换,发起一个或多个IKE安全提议,响应方查找最先匹配的IKE安全提议,并将这个IKE安全提议回应给发起方。匹配的原则为协商双方具有相同的加密算法、认证算法、认证方法和Diffie-Hellman组标识。
- 消息③和④用于密钥信息交换,双方交换Diffie-Hellman公共值和nonce值,用于IKE SA的认证和加密密钥在这个阶段产生。
- 消息⑤和⑥用于身份和认证信息交换(双方使用生成的密钥发送信息),双方进行身份认证和对整个主模式交换内容的认证。
第二种模式:
野蛮模式时IKEv1阶段1的协商过程:
- 网关A发送ISAKMP消息,携带建立IKE SA所使用的参数、与密钥生成相关的信息和身份验证信息。
- 网关B对收到的第一个数据包进行确认,查找并返回匹配的参数、密钥生成信息和身份验证信息。
- 网关A回应验证结果,并建立IKE SA。
1.3 IPSEC SA 介绍
- 快速模式:协商的参数包括(封装模式、安全协议、加密算法、认证算法)
快速模式共有3条消息完成双方IPSec SA的建立。
- 消息1发送本端的安全参数和身份认证信息。
- 消息2响应消息1,发送响应方的安全参数和身份认证信息并生成新的密钥。
- 消息3响应消息2,确认与响应方可以通信,协商结束。
传输模式下报文封装:
第一阶段:主模式
ISAKMP报文①
发起端协商SA,使用的是UDP协议,端口号是500,上层协议是ISAKMP。从报文中可以看到发起端提供了自己的cookie值,使用的是IKEv1协议,交换类型为主模式,发起方对响应方发起了四种不同的提案。
ISAKMP报文②
响应端收到发送端发送的加密套件后,对比自己是否有相对应的加密套件,如果有就使用和发送端相同的加密套件加密数据,把自己的cookie值和选择好的加密套件发送给发送端;如果没有相同加密套件则IKE建立失败响应。
从以上报文中看出,响应方发送确认的安全提议,生命周期28800秒,加密算法为AES,哈希算法为SHA,身份认证方法使用预共享秘钥认证,并且使用1024bit的DH组。
ISAKMP报文③
发送端生成随机数和DH公共值。向响应方发送自己的DH公共值和Nonce随机数。让响应方用于生成加密时所需要的Key值。
在ISAKMP报文①和报文②中协商的算法需要双方协商一个相同的对称密钥,但密钥直接在公共网络上传输并不安全,在报文③中传输的都是密钥生成的材料,响应方接收到这些生成材料后在本地生成key。
ISAKMP报文④
响应端生成随机数和DH公共值。向发起方发送自己的DH公共值和Nonce随机数。让发起方用于生成加密时所需要的Key值
报文③和报文④ 中发起方和响应方在本地计算生成key,第一次生成的Key称为种子密钥,将由此衍生出用于加密密钥,哈希密钥,身份认证密钥
ISAKMP报文⑤
发起方发起身份验证,报文中带有认证的数据(预共享密钥或者数字签名)。由于包1和包2已经协商好了加密算法,包3和包4协商好了加密的KEY值,所以包5的消息被加密了。
ISAKMP报文⑥
响应端回应报文,同样发送认证的数据(预共享密钥或者数字证书),验证对方身份信息。报包6的数据同样使用包1、包2协商的算法和包3、包4协商的key值加密数据,所以包6的认证数据是加密的。双方身份验证通过后,IKE协商结束。
第二阶段 快速模式
ISAKMP报文⑦
发起方发起IPSEC SA的协商,需要协商的参数包括安全协议,传输模式,加密算法,哈希算法,感兴趣流,生存周期等。
从上述报文得知,发起者以及响应方的SPI值是由上阶段IKE协商时已经确定的,所以IPSec协商依然使用上阶段的SPI,交换类型为快速模式,由于数据加密所以无法查看。
ISAKMP报文⑧
响应方回包,同意包7发送的封装方式、加密算法、生存时间、感兴趣流等等,同时,也能起到确认收到对端消息的作用。由于数据加密所以无法查看
ISAKMP报文⑨
发送确认报文。其中包含一个HASH,其作用是确认接收方的消息以及证明发送方处于主动状态(表示发送方的第一条消息不是伪造的)。由于数据加密所以无法查看。