Comments (11)
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.
国密协议标准中规定的,当使用ECDHE算法时,这里指的就是SM2DHE,要求客户端发送证书。
详细内容可以参考**国家标准《GB/T 38636-2020 信息安全技术 传输层密码协议(TLCP)》。
from tongsuo.
国密协议标准中规定的,当使用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.
SM2的密钥交换协议要求客户端需要发送加密证书的公钥,因此需要客户端配置SM2证书
from tongsuo.
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.
仔细阅读TLCP标准,不难发现:
6.4.5.8 Client Key Exchange 消息
......
a)Client ECDHEParams
使用ECDHE算法时,要求客户端发送证书。...
使用SM2DHE密钥交换算法时,在推导预主密钥过程中,比如对于服务端来说,需要服务端加密证书的私钥、客户端加密证书的公钥;而对于客户端来说,需要客户端加密证书的私钥、服务端加密证书的公钥。
ECC-SM2不要求客户端配置证书。
ECDHE-SM2需要客户端配置证书。
from tongsuo.
仔细阅读TLCP标准,不难发现:
6.4.5.8 Client Key Exchange 消息
......
a)Client ECDHEParams
使用ECDHE算法时,要求客户端发送证书。...使用SM2DHE密钥交换算法时,在推导预主密钥过程中,比如对于服务端来说,需要服务端加密证书的私钥、客户端加密证书的公钥;而对于客户端来说,需要客户端加密证书的私钥、服务端加密证书的公钥。
ECC-SM2不要求客户端配置证书。
ECDHE-SM2需要客户端配置证书。
这个解释不太合理。普通的ECDHE秘钥交换算法,在ClientKeyExchange的时候也会发送Client ECDHEParams。
from tongsuo.
强调的是 “a) ClientECDHEParams”下面的这句话:
使用ECDHE算法时,要求客户端发送证书。客户端的密钥交换参数,当使用SM2算法时,交换的参数见GB/T 35276。
from tongsuo.
强调的是 “a) ClientECDHEParams”下面的这句话:
使用ECDHE算法时,要求客户端发送证书。客户端的密钥交换参数,当使用SM2算法时,交换的参数见GB/T 35276。
看了下GB/T 35276,里面确实有提到需要客户端的公钥。
按照这个流程来看,国密协议是不是就不需要双向认证的流程?
还有一个问题是:InfoHunter大佬提到的:
对于 “ECC-SM2-xxx这几个套件使用的不是SM2密钥交换协议,而是用到了SM2算法对客户端发送的PMS进行加密。” 这一点,还是不理解。
服务端构造ServerKeyExchange的时候,使用签名证书对应的私钥对数据进行签名,客户端使用签名证书的公钥进行验签。
客户端构造ClientKeyExchange的时候,使用加密证书对应的公钥对PMS进行加密,服务端使用加密证书的私钥进行解密。
从上面的行为来看,密钥交换过程都有使用到SM2算法的签名、验签、加密、解密。为什么不能称作SM2密钥交换协议?
from tongsuo.
从上面的行为来看,密钥交换过程都有使用到SM2算法的签名、验签、加密、解密。为什么不能称作SM2密钥交换协议?
因为狭义的”SM2密钥交换协议”指的是《GM/T 0003.3-2012》这个文档。你说的那些使用SM2的各种算法完成密钥交换,虽然属于广义上的SM2密钥交换,但是按照惯例,提到SM2密钥交换协议指的就是符合0003.3-2012的这种模式。属于术语问题。
from tongsuo.
从上面的行为来看,密钥交换过程都有使用到SM2算法的签名、验签、加密、解密。为什么不能称作SM2密钥交换协议?
因为狭义的”SM2密钥交换协议”指的是《GM/T 0003.3-2012》这个文档。你说的那些使用SM2的各种算法完成密钥交换,虽然属于广义上的SM2密钥交换,但是按照惯例,提到SM2密钥交换协议指的就是符合0003.3-2012的这种模式。属于术语问题。
ok,非常感谢解答。
from tongsuo.
Related Issues (20)
- 提高Tongsuo和OpenSSL的兼容性 HOT 2
- tongsuo签名结果与openssl签名结果不互通 HOT 5
- 密码卡适配Tongsuo 8.4 Engine,有适配Tongsuo 8.4 Engine的相关例子代码吗?
- SSL_enable_ntls后无法在client_hello_cb 或 server_name_cb中设置新的SSL CTX HOT 2
- 支持配置证书预压缩功能? HOT 5
- 缺乏ALPN的支持。
- 请问对称加密是否考虑支持 sm4-gcm HOT 2
- sm2 failure and Legacy X25519 PKEY fails in SSL handshake HOT 5
- 用硬算法engine加速SM2签名验签算法时,EVP_PKEY_METHOD的ctrl 和 ctrl_str函数中的 EVP_PKEY_CTRL_SET1_ID消息需要怎么处理?
- 在arm平台下tongsuo与openssl在国密上的性能对比 HOT 2
- 集成了铜锁的nginx,标准ssl反代国密,或者国密反代标准ssl,都访问不了,是什么原因?
- 谁在使用铜锁 Who is Using Tongsuo HOT 3
- 如何获取 peer enc_certificate 跟 peer sign_certificate?
- 在openEuler-22.03-LTS-loongarch64下编译和安装铜锁成功,可是执行tongsuo命令失败 HOT 1
- openssl 3.0相比1.1.1.有严重的性能问题,tongsuo基于3.0,会有这个问题吗? HOT 1
- 客户端代码使用ECDHE-SM2-WITH-SM4-SM3报错 HOT 1
- 临时目录编译不支持--symbol-prefix BABA_
- 请问铜锁支持国密双证书或单证书的 DTLS 吗?
- 请问8.4.0版本如何启用旧的算法支持?
- 请问该项目的avasdk会按照《GMT_0010-2012 SM2 密码算法加密签名消息语法规范》标准实现数字签名和数字信封的p7的封装吗
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from tongsuo.