国密双证构建IPSec隧道,ISAKEP的签名载荷总验证失败?
关于GM/T-0022《IPSec VPN技术规范》秘钥交换签名载荷验证失败的疑问?
GM/T-0022秘钥交换流程
疑问点
报文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值原文 + paddingIDi_b
: 4字节ID载荷的头 + ASN1编码的ID值原文 + paddingCERT_enc_i_b
: 1字节证书类型 + ASN1的证书编码
对以上数据使用 本端的私钥进行签名 得到签名载荷
使用sm2进行签名时使用的 ID 是什么?
不知道ID是什么,目前和第三方设备对接时,签名载荷总验证失败
不知道有没有哪位有这方面的经验,对上面两个疑问进行指正,感谢,感谢 !!
调试日志
- 随机生成临时秘钥,并用公钥加密
- 生成NONCE和获取ID,各自对数据填充后,连接起来并使用 临时秘钥加密(对称加密)
- 要签名的数据Ski_b + Ni_b + IDi_b + CERT_enc_i_b
- 签名使用的 ID和签名结果
回复
1个回答

test
2024-07-14
经过反复尝试和分析解决了以上问题
- 签名载荷
Ski_b
: 16字节临时秘钥Ni_b
:16字节NONCE (不带padding)IDi_b
:4字节ID载荷头 + ASN1编码ID (不带padding)CERT_enc_i_b
:1字节证书类型 + ASN1证书编码
- 签名的ID为默认值 "1234567812345678"
回复

适合作为回答的
- 经过验证的有效解决办法
- 自己的经验指引,对解决问题有帮助
- 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
- 询问内容细节或回复楼层
- 与题目无关的内容
- “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容