跳转至

国密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
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技术规范》