国密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
预共享模式

公钥加密模式

头部说明
KE:使用DH交换算法交换密钥材料。
g^xi 和 g^xr 是DH算法里面的公开值。
g^xy是DH产生的共享密钥。
Nx:nonce负载,消息里面带的随机值。
IDix:特殊的DOI数据,用于交换标识信息,暂时理解为通信方标识名称。
HASH(1):暂时不懂
CKY: ISAKMP消息头中的cookies字段。
SKEYID = prf(hash(Ni_b | Nr_b), CKY-I | CKY-R)
SKEYID_d = prf(SKEYID, g^xy | CKY-I | CKY-R | 0)
SKEYID_a = prf(SKEYID, SKEYID_d | g^xy | CKY-I | CKY-R | 1)
SKEYID_e = prf(SKEYID, SKEYID_a | g^xy | CKY-I | CKY-R | 2)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技术规范》