国密IKE¶
IKEv1.1与IKEv1(第一阶段使用主模式)基本类似
下面分析下IKEv1.1跟IKEv1第一阶段协商的区别
第一次交互¶
IKEv1¶
IKEv1.1¶
头部说明¶
HDR : 消息头
SA : 安全关联,包括加密算法,认证算法,认证模式,DH算法,SA生存周期。

CERT_sig_r: 签名证书(rsa/sm2)
CERT_enc_r: 加密证书(rsa/sm2)
差异¶
- IKEv1.1的第二条消息里需要发送“签名证书”和“加密证书”给对方。
- 两者认证模式不同:
IKEv1采用签名认证,公钥加密认证,增强型公钥加密授权,预共享密钥授权等方式认证
IKEv1.1 只支持x509认证
第二次交换¶
IKEv1¶
预共享模式¶
公钥加密模式¶
头部说明¶
| Text Only | |
|---|---|
1 2 3 4 5 6 7 8 9 10 11 | |
IKEv1.1¶
头部说明¶

Sk:临时密钥,该值是双方各自产生的随机数。
对称密码算法使用cbc模式,IV为0。后续IV使用前面载荷的最后一组密文。

SKEYID_e: ISAKMP SA加密密钥。
SKEYID_a: ISAKMP SA消息完整性密钥。
SKEYID_d:用于第三阶段协商IPsec SA密钥使用。
如果SKEYID_e长度不满足对称加密算法的需求,则按如下方式进行扩展。
差异¶
- IKEv1使用DH产生共享密钥
- IKEv1.1采数字信封方式(而不是SM2-2)交换随机数;
- IKEv1.1在该阶段完成认证
第三次交互¶
IKEv1¶
签名认证模式¶
加密模式¶
头部说明¶
HASH_I = prf(SKEYID, g^xi | g^xr | CKY-I | CKY-R | SAi_b | IDii_b )
HASH_R = prf(SKEYID, g^xr | g^xi | CKY-R | CKY-I | SAi_b | IDir_b )
对等体之间验证彼此身份。
两个对等体通过两条ISAKMP消息(5、6)交换身份信息(预共享密钥方式下为IP地址或名称,数字证书方式下还需要传输证书的内容)。
如果需要填充,则填充0,最后一字节是不包含该字节的填充字节数。
IKEv1.1¶

鉴别前面的交换过程。
填充模式同上。

第二阶段--快速模式¶
IKEv1¶
头部说明¶
HASH(1) = prf(SKEYID_a, M-ID | SA | Ni [ | KE ] [ | IDci | IDcr )
HASH(2) = prf(SKEYID_a, M-ID | Ni_b | SA | Nr [ | KE ] [ | IDci | IDcr )
HASH(3) = prf(SKEYID_a, 0 | M-ID | Ni_b | Nr_b)
IKEv11¶
头部说明¶



第一条消息的IV = HASH(第一阶段最后一组密文 | MsgID)
后续消息IV=前一条消息的最后一组密文。
标识缺省为各自IP。
参考¶
RFC 2409 - The Internet Key Exchange (IKE)
GMT0022-2014《IPSecVPN技术规范》