Tongsuo
Tongsuo copied to clipboard
ECHDE-SM4-SM3 双向认证失败
看BabaSSL的特性描述是支持GB/T 38636-2020 TLCP标准,即双证书国密通信协议。 使用BabaSSL和SSL硬件网关调试,ECDHE-SM4-SM3算法握手失败,使用ECC-SM4-SM3握手成功, 然后使用SSL硬件网关自己提供的库,可以进行ECDHE-SM4-SM3的握手。 这一块的兼容性问题是因为实现的标准不一样吗?
看BabaSSL的特性描述是支持GB/T 38636-2020 TLCP标准,即双证书国密通信协议。 使用BabaSSL和SSL硬件网关调试,ECDHE-SM4-SM3算法握手失败,使用ECC-SM4-SM3握手成功, 然后使用SSL硬件网关自己提供的库,可以进行ECDHE-SM4-SM3的握手。 这一块的兼容性问题是因为实现的标准不一样吗?
有可能存在兼容性问题。 不知道SSL硬件网关使用的密码库是否已经开源?或者可以对比一下BabaSSL源代码和SSL硬件网关使用的密码库代码。 如果发现BabaSSL在实现上有哪里不符合GB/T 38636-2020 TLCP标准,欢迎提交Issue或PR。
GB/T 38636-2020 TLCP标准根本就没说清楚除了ECC(把RSA加密改成SM2加密)外的其它交换方法。拿SM2 ECDHE来说,SM2标准中的密钥交换方法是一个完整的密钥交换方法:从交换共享秘密(ECMQV的变种),到通过KDF(和ANS X9.63一样)生成密钥材料;通常在TLS中,我们只需要交换共享秘密,即预主密钥,生成密钥材料则是通过TLS的PRF(TLS-KDF)。如果要在TLCP中使用完整的SM2密钥交换方法来生成预主密钥,那就要详细说明在TLCP中如何使用,譬如预主密钥的长度,譬如需不需要签名,双方UID用什么等等 。