IPsec协议族中IKE(Internet Key Exchange)是一种基于ISAKMP的协议,它为建立IPSec安全通信隧道提供了一种无痕密钥交换的机制。简单来说,IKE就是ISAKMP的扩展,为ISAKMP提供了更加高效、灵活和安全的密钥协商机制。
GMT 0022-2014 IPSec VPN 技术规范 标准参考。
ISAKMP,internet secrity assocaition and key management protocol, 互联网安全联盟和密钥管理协议定义了建立、协商、修改和删除安全联盟的过程和报文格式,并定义了交换密钥产生和鉴别数据的载荷格式。这些格式为传输密钥和鉴别信息提供了一致的框架。
IKE,internet key exchange,密钥交换协议则定义了协商、建立、删除安全联盟的过程和报文格式。具体协议报文使用UDP 500或4500端口传输。
IPsec IKE包括二个阶段,第一阶段主模式和第二阶段快速模式。
阶段 | 目标 | 过程 | 消息 |
IKE第一阶段 | 建立一个ISAKMP SA | 实现通信双发的身份鉴别和密钥交换,得到工作密钥 | (1)HDR,SA (2)HDR,SA,Cert_sig_r,Cert_enc_r (3)HDR,XCHi,SIGi (4)HDR,XCHr.SIGr (5)HDR*,HASHi (6)HDR*,HASHr |
IKE第二阶段 | 协商IPsec SA | 实现通信双方IPsec SA,得到ipsec安全策略和会话密钥 | (1)HDR*,HASH(1),SA,Ni (2)HDR*,HASH(2),SA,Nr (3)HDR*,HASH(3) |
阶段一消息1,由发起方到响应方(明文发送)。消息中包含有:HDR(一个ISAKMP头)和SA(建议载荷的安全联盟载荷,建议载荷中封装有变换载荷)。数据格式如下,发起方和响应方cookie都是随机生成,这里交换类型为身份保护类型即主模式取值为2。
SA中建议载荷是发起方告知响应方它优先选择的安全协议以及希望协商中的SA采用的相关安全机制。变换载荷则是发起发告知响应方为一个具体的协议(AH或者ESP)提供不同的安全机制。
下面按照这个抓包实例说明。
(1)HDR头中:发起发SPI随机数,响应方SPI当前为0(等待响应方赋值),下一个载荷是SA,交换类型是主模式。
(2)SA载荷中:下一个载荷是Vendor ID(若为0则表示后面没有载荷),SA的载荷类型为Proposal,协议是ISAKMP,封装有3个变换载荷proposal transform。
(3)变换载荷#0,生命周期86400秒=24小时,加密算法SM4(129),杂凑算法SM3(20),公钥数字信封鉴别方式DE(10),公钥算法SM2(2)-这里wireshark并没有将t=20解释为“非对称算法类型”,但并不影响协议过程。后面的#1和#2,相同方法分析,不再重复。
IKE支持下一个载荷类型见下方的列表。
变换载荷中,IKE attribute的取值定义如下。
响应方在收到发起方消息1后,会发送消息2(如下抓包),这次时间有限,下次再具体来说。