国密双证构建IPSec隧道,ISAKEP的签名载荷总验证失败?

新手上路,请多包涵

关于GM/T-0022《IPSec VPN技术规范》秘钥交换签名载荷验证失败的疑问?

GM/T-0022秘钥交换流程

image.png
image.png

疑问点

  1. 报文3和报文4中签名载荷的是对哪些数据进行签名?

    根据规范:SIG_b=Asymmetric_Sign(Ski_b | Ni_b | IDi_b | CERT_enc_i_b,priv_i)
    个人理解:

    • Ski_b: 16字节临时秘钥
    • Ni_b: 16字节NONCE值原文 + padding
    • IDi_b: 4字节ID载荷的头 + ASN1编码的ID值原文 + padding
    • CERT_enc_i_b: 1字节证书类型 + ASN1的证书编码

    对以上数据使用 本端的私钥进行签名 得到签名载荷

  2. 使用sm2进行签名时使用的 ID 是什么?

    不知道ID是什么,目前和第三方设备对接时,签名载荷总验证失败

不知道有没有哪位有这方面的经验,对上面两个疑问进行指正,感谢,感谢 !!

调试日志

  1. 随机生成临时秘钥,并用公钥加密
    image.png
  2. 生成NONCE和获取ID,各自对数据填充后,连接起来并使用 临时秘钥加密(对称加密)
    image.png
  3. 要签名的数据Ski_b + Ni_b + IDi_b + CERT_enc_i_b
    image.png
  4. 签名使用的 ID和签名结果
    image.png
阅读 2.2k
1 个回答
✓ 已被采纳新手上路,请多包涵

经过反复尝试和分析解决了以上问题

  1. 签名载荷

Ski_b: 16字节临时秘钥
Ni_b:16字节NONCE (不带padding)
IDi_b:4字节ID载荷头 + ASN1编码ID (不带padding)
CERT_enc_i_b:1字节证书类型 + ASN1证书编码

  1. 签名的ID为默认值 "1234567812345678"
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进