Replies: 1 comment
-
https://en.wikipedia.org/wiki/MQV |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
这个规范我感觉除了ECC密钥交换外,其它根本没讲清楚,或者根本没讲。
ECC
这个基本上就是根据原来RSA套件改的,把RSA加解密换成了SM2加解密,预主密钥或者shared secret就是加密过的随机数加上两字节版本号。
PRF
伪随机函数或者TLS-KDF,这个是和TLS 1.2规范一致的,只是hmac中的hash换成了SM3。
ECDHE
TLS国际标准参考使用SEC1 V2 3.3.1 Elliptic Curve Diffie-Hellman Primitive 来计算交换shared secret,或者叫预主密钥;使用 SEC1 V2 6.1 Elliptic Curve Diffie-Hellman Scheme来计算交换keying data,TLS中定义的PRF方法作为KDF实现。
TLCP中,只是说参考GB/T 35276,GB/T 35276中参考GB/T 32918.3,其实GB/T 32918.3中密钥交换中KDF之前步骤是和
SEC1 V2 3.4 Elliptic Curve MQV Primitive描述类似的(和Diffie-Hellman Primitive一样,国际标准中只取X轴值),但GB/T 32918.3讲的是完整的密钥交换(Key Agreement),同时包含了shared secret和最终keying data的生成(通过GB/T 32918.3中定义的KDF方法)。SEC1 V2 6.1 Elliptic Curve MQV Key Agreement Scheme中,人家只定义Scheme Setup / Key Deployment / Key Agreement Operation,并未规定具体的KDF实现,KDF具体实现应该由具体应用协议决定的。
所以TLCP中的ECDHE是隐晦不清的,对实现者也不友好。到底ECDHE中的预主密钥(shared secret)是按SEC1 V2 3.4 Elliptic Curve MQV Primitive曲线点?或者是按GB/T 32918.3生成的keying data?那这生成的keying data到底是预主密钥还是主密钥?
IBC/IBSDH
这个连参考标准都没有了,猜测IBC和ECC类似,换个加解密、签名算法;IBSDH估计用SM9密钥交换,SM9密钥交换也是个完整的key agreement 实现规范,同时包含shared secret以及KDF方法,如何在TLCP中应用,也是个迷。
Beta Was this translation helpful? Give feedback.
All reactions