IPSec VPN 报文介绍以及协商建立过程
介绍
- ISAKMP报文介绍
- IPSec VPN协商建立过程(IKEv1)
ISAKMP报文介绍
ISAKMP头部信息如下。
Nitiator Cookie(Initiator SPI)(8 octets):发起SA建立实体Cookie,SA通知或SA删除
Responder Cookie(Responder SPI)(8 octets):响应SA建立请求的实体的Cookie,SA通知或SA删除
Next Payload (1 octet):表示第一有效负荷的消息中的类型
Next Payload Type Value
NONE 0
Security Association (SA) 1
Proposal (P) 2
Transform (T) 3
Key Exchange (KE) 4
Identification (ID) 5
Certificate (CERT) 6
Certificate Request (CR) 7
Hash (HASH) 8
Signature (SIG) 9
Nonce (NONCE) 10
Notification (N) 11
Delete (D) 12
Vendor ID (VID) 13
RESERVED 14 - 127
Private USE 128 - 255
Major Version (4 bits):标识正在使用的ISAKMP协议的主要版本。
Minor Version (4 bits):标识正在使用的ISAKMP协议的次要版本
Exchange Type(1 octet):标识使用的交换(exchange) 的类型
Exchange Type Value
NONE 0
Base 1
Identity Protection 2
Authentication Only 3
Aggressive 4
Informational 5
ISAKMP Future Use 6 - 31
DOI Specific Use 32 - 239
Private Use 240 - 255
Flags (1 octet):标识为ISAKMP交换设置的特定选项
··· E(ncryption Bit) (1 bit):如果设置(1),则使用在ISAKMP SA中标识的加密算法对报头之后的所有有效载荷进行加密。对于第4.1节中描述的所有ISAKMP交换,加密应该在双方交换密钥交换有效载荷之后开始。 如果E(ncryption Bit)未设置(0),则有效载荷不加密。
···C(ommit Bit) (1 bit) :该位用于通知密钥交换同步。它用于确保在完成SA建立之前没有接收到加密材料。这个bit可以在双方任意一端设置,并且在isakmp建立的两个阶段上均可以使用。这个值必须在第一阶段协商完成之后复位。
···A(uthentication Only Bit) (1 bit) :需要和Notify Payload一起使用,具有完整性检查,但是没有加密的信息传输。第4.8节规定,第二阶段信息交换必须在ISAKMP SA的保护下发送。 这是该策略的唯一例外。如果设置了Authentication Only位(1),那么只有认证安全服务将应用于信息交换的整个Notify有效负载,并且有效负载不会被加密。
Length (4 octets):以八位字节为单位的消息总长(报头+有效载荷)。 加密可以扩展ISAKMP消息的大小。
在ISAKM中可以添加一个或多个有效负载(Payloads),由于负载较多就不一一列举了,具体详见RFC2408。
IPSec VPN协商建立过程
建立过程主要分为两步,首先是主模式(Main mode)的建立,然后是快速模式(Quick mode)的建立。
之前IPSec vpn谈到过,VPN的目的就是为了保证私密性、完整性、源认证。然而在公网上显然不能将加密信息明目张胆的发送出去,所以在传递这些业务信息之前,需要预先建立起一个安全可靠的连接来传递这些加解密的信息。而主模式就是预先建立的这个连接。
主模式(Main mode)
主模式主要的目的是建立ISAKMP SA(Internet Security Association and Key Management Protocol Security association)。为了建立起ISAKMP SA,在IKEv1 Main mode 中需要交互6个报文。这6个报文会在下面有所介绍。由于ISAKMP的建立并不像OSPF邻居认证一样,只需要password正确就能建立,而是有一整套协商的条件。所以单一的预共享密钥相同也不一定就能保证ISAKMP的建立。
主模式第1个和第2个数据包
主模式的第一个和第二个数据包主要用来协商ISAKMP策略信息,这些策略信息包括。
· 加密类型(Encryption-Algorithm)
· 密钥长度(Key-Length)
· 散列算法(Hash-Algorithm)
· DH强度(Group-Description)
· 认证模式(Authentication-Method)
· 密钥更新时间单位(Life-Type)
· 密钥时间(Life-Time)
如上部分在报文中体现如下,如果对端发送过来的ISAKMP协商信息与本地信息不符,那么将协商失败,且不会反馈本端ISAKMP配置信息。
主模式第3个和第4个数据包
第1和第2个数据包确认了策略之后和散列函数之后,要想加密数据还需要一个关键的参数(密钥),这个密钥正是通过DH交换而得来的。有关DH算法工作原理已超出笔者能力,有兴趣的可以参见。Diffie–Hellman key exchange,Diffie-Hellman Key Agreement Method。
在报文中体现如下。
主模式第5个和第6个数据包
获取到彼此的密钥信息之后,就可以开始进行认证了,这部分就是加密的报文。
总的来说,主模式首先协商ISAKMP策略,确定双方策略一致的时候,开始使用非对称密钥算法来交换彼此的预共享密钥,当预共享密钥匹配的时候来交换彼此的加密密钥,使用这个加密的密钥来完成第5和第6的数据包的认证功能。这样就保证了私密性(数据加密),源认证(加密认证来实现),完整性(如果报文有修改ISAKMP SA无法建立)
快速模式(Quick mode)
在快速模式下主要用来建立IPSec SA,协商以下参数
· 封装方式(ESP或AH)
· 认证算法
· 传输模式(隧道模式或传输模式)
· 加密算法(业务报文的加密算法)
· DH信息
· IPSec生命周期信息
另外需要注意的就是密钥更新,密钥更新主要使用的是PSF,虽然 有周期性更新密钥的这个功能,但是如果没有启用PSF那么新生成的密钥与之前的密钥存在衍生关系,思科默认没有启用PSF功能,如果启用了PSF那么新生成的密钥与之前的密钥就不存在衍生关系,可以提供更安全的服务。
这一部分在报文中均以加密方式进行显示。
快速模式协商完成之后,建立起IPSec SA,开始传输加密数据。
参考文献
- Diffie–Hellman key exchange
- Diffie-Hellman Key Agreement Method
- Phase 1、Phase 2
- IPSec Virtual Private Network Fundamentals–IKE and ISAKMP
- RFC2408
- RFC2409
- RFC4306
2017年10月13日更新
没有评论:
发表评论