TASSL-1.1.1k
TASSL-1.1.1k copied to clipboard
如何指定使用named group/curve SM2?
s_client ... -groups SM2 ...
执行上述形式的命令时报如下错误,
Error with command: "-groups SM2"
使用参数-curves SM2
,-curves curveSM2
也是类似的错误。
请问,能否指定使用SM2的椭圆曲线?
如果不使用-groups
或-curves
,由s_client生成的ClientHello
中的supported_groups
扩展中并没有包含SM2的曲线。
extension_type=supported_groups(10), length=12
ecdh_x25519 (29)
secp256r1 (P-256) (23)
ecdh_x448 (30)
secp521r1 (P-521) (25)
secp384r1 (P-384) (24)
这是否说明,TASSL
还不能支持基于curveSM2
的ECDHE
密钥交换算法?
或者,只是s_server
/s_client
这两个工具不支持?
你在测试国密SSL还是RFC8998的国密套件?
- 国密SSL的client hello/server hello不需要supported_groups扩展;
- 至于rfc 8998国密套件TLS_SM4_GCM_SM3/TLS_SM4_CCM_SM3,因为supported_groups中的曲线id用来协商握手过程中的签名算法/密钥协商算法使用的曲线ID,这两个套件签名算法默认使用SM2_SM3,密钥协商算法使用的标准EC,都没有用到这个id,所以我们的实现中没有加。不过rfc 8998中明确了supported_groups出现的话就要加SM2 id,后面可能会考虑加上
我是在测试RFC 8998。
这两个套件签名算法默认使用SM2_SM3
CipherSuite TLS_SM4_GCM_SM3 = { 0x00, 0xC6 };
CipherSuite TLS_SM4_CCM_SM3 = { 0x00, 0xC7 };
根据TLS 1.3
的规范,应该不能认为上述两个国密套件就必须与签名机制sm2sig_sm3
绑定在一起。
它们可以与其它的签名机制,如ecdsa_secp256r1_sha256
,共同工作。TASSL
好像也是支持这种组合的。
密钥协商算法使用的标准EC,都没有用到这个id,所以我们的实现中没有加。
https://datatracker.ietf.org/doc/html/rfc8998#section-2
* The SM2 elliptic curve ID used in the Supported Groups extension
is defined in Appendix B.3.1.4 of [RFC8446]:
NamedGroup curveSM2 = { 41 };
密钥协商算法还是标准的ECDH,但named group是可选的。
现在TASSL
没有把curveSM2
加入supported_groups
,那么只能使用别的曲线(如secp256r1
)去协商密钥了。
从支持国密算法的角度,这算是一个缺失。
嗯。TLS1.3套件不再定义签名算法和密钥交换算法,理论上来说RFC 8998的两个套件可以与任何签名算法及密钥交换算法组合。后续会在supported_groups中增加SM2 id
supported_groups已支持SM2,通过参数-groups SM2指定