Git Product home page Git Product logo

Comments (11)

InfoHunter avatar InfoHunter commented on May 29, 2024 1

ECC-SM2-xxx这几个套件使用的不是SM2密钥交换协议(GM/T 0003.3-2012: http://www.gmbz.org.cn/main/viewfile/20180108023456003485.html ),而是用到了SM2算法对客户端发送的PMS进行加密。规定了使用SM2密钥交换协议进行密钥交换的标准是GM/T 0009 (http://www.gmbz.org.cn/main/viewfile/2018011001400692565.html ),的第9.6小节,其中明确规定了密钥协商的双方A和B均需要拥有密钥对,所以客户端作为密钥协商的一方,也需要准备证书

from tongsuo.

dongbeiouba avatar dongbeiouba commented on May 29, 2024

国密协议标准中规定的,当使用ECDHE算法时,这里指的就是SM2DHE,要求客户端发送证书。
详细内容可以参考**国家标准《GB/T 38636-2020 信息安全技术 传输层密码协议(TLCP)》。

from tongsuo.

easycoderwei avatar easycoderwei commented on May 29, 2024

国密协议标准中规定的,当使用ECDHE算法时,这里指的就是SM2DHE,要求客户端发送证书。
详细内容可以参考**国家标准《GB/T 38636-2020 信息安全技术 传输层密码协议(TLCP)》。

https://www.gmssl.cn/gmssl/Tool_PDF?CMD=Down&File=GBT_38636-2020.pdf
6.4.5.5 Certificate Request 消息

6.4.5.7 Client Certificate 消息
里面说如果协商密码套件使用IBC或IBSDH算法(SM9),此消息的内容为客户端标识和IBC公共参数。

使用ECDHE(SM2DHE)算法时,文档中没有说服务端一定要发送CertificateRequest。

这个目前还是很疑惑。

from tongsuo.

InfoHunter avatar InfoHunter commented on May 29, 2024

SM2的密钥交换协议要求客户端需要发送加密证书的公钥,因此需要客户端配置SM2证书

from tongsuo.

easycoderwei avatar easycoderwei commented on May 29, 2024

SM2的密钥交换协议要求客户端需要发送加密证书的公钥,因此需要客户端配置SM2证书

ECC-SM2-xxx 这几个套件的密钥交换算法也是SM2,但是从代码实现上没有看到需要客户端发送证书。
0xE0,0x53 - ECC-SM2-SM4-GCM-SM3 NTLSv1.1 Kx=SM2 Au=SM2 Enc=SM4-GCM(128) Mac=AEAD
0xE0,0x13 - ECC-SM2-SM4-CBC-SM3 NTLSv1.1 Kx=SM2 Au=SM2 Enc=SM4(128) Mac=SM3

from tongsuo.

dongbeiouba avatar dongbeiouba commented on May 29, 2024

仔细阅读TLCP标准,不难发现:

6.4.5.8 Client Key Exchange 消息
......
a)Client ECDHEParams
使用ECDHE算法时,要求客户端发送证书。...

使用SM2DHE密钥交换算法时,在推导预主密钥过程中,比如对于服务端来说,需要服务端加密证书的私钥、客户端加密证书的公钥;而对于客户端来说,需要客户端加密证书的私钥、服务端加密证书的公钥。

ECC-SM2不要求客户端配置证书。
ECDHE-SM2需要客户端配置证书。

from tongsuo.

easycoderwei avatar easycoderwei commented on May 29, 2024

仔细阅读TLCP标准,不难发现:

6.4.5.8 Client Key Exchange 消息
......
a)Client ECDHEParams
使用ECDHE算法时,要求客户端发送证书。...

使用SM2DHE密钥交换算法时,在推导预主密钥过程中,比如对于服务端来说,需要服务端加密证书的私钥、客户端加密证书的公钥;而对于客户端来说,需要客户端加密证书的私钥、服务端加密证书的公钥。

ECC-SM2不要求客户端配置证书。
ECDHE-SM2需要客户端配置证书。

这个解释不太合理。普通的ECDHE秘钥交换算法,在ClientKeyExchange的时候也会发送Client ECDHEParams。

from tongsuo.

dongbeiouba avatar dongbeiouba commented on May 29, 2024

强调的是 “a) ClientECDHEParams”下面的这句话:

使用ECDHE算法时,要求客户端发送证书。客户端的密钥交换参数,当使用SM2算法时,交换的参数见GB/T 35276。

from tongsuo.

easycoderwei avatar easycoderwei commented on May 29, 2024

强调的是 “a) ClientECDHEParams”下面的这句话:

使用ECDHE算法时,要求客户端发送证书。客户端的密钥交换参数,当使用SM2算法时,交换的参数见GB/T 35276。

看了下GB/T 35276,里面确实有提到需要客户端的公钥。
按照这个流程来看,国密协议是不是就不需要双向认证的流程?

还有一个问题是:InfoHunter大佬提到的:
对于 “ECC-SM2-xxx这几个套件使用的不是SM2密钥交换协议,而是用到了SM2算法对客户端发送的PMS进行加密。” 这一点,还是不理解。
服务端构造ServerKeyExchange的时候,使用签名证书对应的私钥对数据进行签名,客户端使用签名证书的公钥进行验签。
客户端构造ClientKeyExchange的时候,使用加密证书对应的公钥对PMS进行加密,服务端使用加密证书的私钥进行解密。
从上面的行为来看,密钥交换过程都有使用到SM2算法的签名、验签、加密、解密。为什么不能称作SM2密钥交换协议?

from tongsuo.

InfoHunter avatar InfoHunter commented on May 29, 2024

从上面的行为来看,密钥交换过程都有使用到SM2算法的签名、验签、加密、解密。为什么不能称作SM2密钥交换协议?

因为狭义的”SM2密钥交换协议”指的是《GM/T 0003.3-2012》这个文档。你说的那些使用SM2的各种算法完成密钥交换,虽然属于广义上的SM2密钥交换,但是按照惯例,提到SM2密钥交换协议指的就是符合0003.3-2012的这种模式。属于术语问题。

from tongsuo.

easycoderwei avatar easycoderwei commented on May 29, 2024

从上面的行为来看,密钥交换过程都有使用到SM2算法的签名、验签、加密、解密。为什么不能称作SM2密钥交换协议?

因为狭义的”SM2密钥交换协议”指的是《GM/T 0003.3-2012》这个文档。你说的那些使用SM2的各种算法完成密钥交换,虽然属于广义上的SM2密钥交换,但是按照惯例,提到SM2密钥交换协议指的就是符合0003.3-2012的这种模式。属于术语问题。

ok,非常感谢解答。

from tongsuo.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.