HTML/JavaScript

2016年12月5日星期一

【Cisco】【安全】【CCNA】IPSec VPN 报文介绍以及协商建立过程

IPSec VPN 报文介绍以及协商建立过程

IPSec VPN 报文介绍以及协商建立过程

介绍

  1. ISAKMP报文介绍
  2. IPSec VPN协商建立过程(IKEv1)

ISAKMP报文介绍

ISAKMP头部信息如下。

enter image description here

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。

enter image description here

IPSec VPN协商建立过程

建立过程主要分为两步,首先是主模式(Main mode)的建立,然后是快速模式(Quick mode)的建立。

enter image description here

enter image description here

数据包在此下载。

之前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配置信息。

enter image description here

主模式第3个和第4个数据包

第1和第2个数据包确认了策略之后和散列函数之后,要想加密数据还需要一个关键的参数(密钥),这个密钥正是通过DH交换而得来的。有关DH算法工作原理已超出笔者能力,有兴趣的可以参见。Diffie–Hellman key exchangeDiffie-Hellman Key Agreement Method
在报文中体现如下。

enter image description here

主模式第5个和第6个数据包

获取到彼此的密钥信息之后,就可以开始进行认证了,这部分就是加密的报文。

enter image description here

总的来说,主模式首先协商ISAKMP策略,确定双方策略一致的时候,开始使用非对称密钥算法来交换彼此的预共享密钥,当预共享密钥匹配的时候来交换彼此的加密密钥,使用这个加密的密钥来完成第5和第6的数据包的认证功能。这样就保证了私密性(数据加密),源认证(加密认证来实现),完整性(如果报文有修改ISAKMP SA无法建立)

快速模式(Quick mode)

在快速模式下主要用来建立IPSec SA,协商以下参数
· 封装方式(ESP或AH)
· 认证算法
· 传输模式(隧道模式或传输模式)
· 加密算法(业务报文的加密算法)
· DH信息
· IPSec生命周期信息
另外需要注意的就是密钥更新,密钥更新主要使用的是PSF,虽然 有周期性更新密钥的这个功能,但是如果没有启用PSF那么新生成的密钥与之前的密钥存在衍生关系,思科默认没有启用PSF功能,如果启用了PSF那么新生成的密钥与之前的密钥就不存在衍生关系,可以提供更安全的服务。
这一部分在报文中均以加密方式进行显示。

enter image description here

快速模式协商完成之后,建立起IPSec SA,开始传输加密数据。

参考文献

  1. Diffie–Hellman key exchange
  2. Diffie-Hellman Key Agreement Method
  3. Phase 1Phase 2
  4. IPSec Virtual Private Network Fundamentals–IKE and ISAKMP
  5. RFC2408
  6. RFC2409
  7. RFC4306

2017年10月13日更新

没有评论:

发表评论