必威体育Betway必威体育官网
当前位置:首页 > IT技术

TLS/SSL 协议详解 (29) 国密SSL协议

时间:2019-10-11 15:11:05来源:IT技术作者:seo实验室小编阅读:73次「手机版」
 

ssl协议

测试服务器:https://47.89.249.43:4433/

(测试时,先将本机时间设置为2018年7月之前(我证书过期了),然后使用360国密浏览器访问。360国密浏览器会在TLS握手失败后才会发起GMSSL握手,所以访问较慢。出现访问不了的情况,请清除360国密浏览器所有缓存,重启浏览器后再访问)

源码在 https://github.com/mrpre/atls 上可以获得

GM/T 没有单独规范 SSL协议的文件,而是在SSL VPN技术规范中定义了国密ssl协议

规范号:GM/T 0024-2014

这里主要讲的是国密SSL协议和标准的TLS协议之间的区别,根据这些区别,完全可以实现国密SSL握手、通讯,实现效果见文末。

1:协议号

  TLS协议号为0x0301 0x0302 0x0303,分别表示TLS1.0 1.1 1.2

  而国密SSL版本号为0x0101,其参考了TLS1.1。

  故本篇没有描述的握手、加密细节等全部参考TLS 1.1,本篇只罗列GM SSL 与 标准 TLS 之间的区别。

Client hello报文如下:

Wireshark是无法解析的该报文的(不知道新版本是否能够解析),若想解析,还需要手动把pcap报文中version对应的字段修改成通用的0x03xx,wireshark方能解析。

故该规范定义的SSL协议被称为 国密SSL 1.1。具体参考规范6.3.2.1。

2:加密算法

国密SSL定义了多个加密套件,见6.4.4.1.1

实际上,若加密各个阶段(非对称、对称、摘要)都替换成国密标准的,较主流的是如下2个

1:ECC_SM4_SM3 

2:ECDHE_SM4_SM3 

IBC并没有研究过,这里不再详细说明。

注意 ,ECDHE_SM4_SM3 必须要求双向认证。

ECC 对应的是标准的RSA,切勿被ECC迷惑,这个ECC并不和标准的椭圆曲线密钥交换算法类似,而是和RSA类似。服务器发送ECC公钥(在证书中)到客户端,客户端拿ECC公钥加密随机数给服务器(client key exchange)。

3:PRF算法

PRF算法和TLS 1.2类似,唯一区别:TLS1.2下,PRF算法为SHA256,而GM SSL的算法为SM3。

4:server key exhcnage

标准的server key exchange计算方式是

DH_sign(client_random + server_random + hash_in)

而国密SSL下server key exchange计算方式略有不同

Sm2_sign(lient_random + server_random +hash_len + hash_in)

国密规范如下描述 server key exchange:

Case ECC:

  digitally-signed struct

  {

      Opaque client_random[32];

      Opaque server_random[32];

      Opaque ASN.1Cert<1, 2^24-1>;

  }

Case ECDHE:

  ServerECDHEparams params

  Digitally-signed struct

  {

      Opaque client_random[32];

      Opaque server_random[32];

      ServerECDHEParams params

  }

总结一下,

(1):

标准TLS server key exchange是椭圆曲线参数+对该报文的签名,签名时的hash是2个随机数加该报文本身。

(2):

国密SSL的ECC的server key exchange只是签名,由于本身不包含任何参数,故签名时的hash是2个随机数加上加密证书(注意国密规范描述证书时采用的尖括号的描述,即证书前需要加上长度信息表示)。具体签名算法使用的是sm2。

(3):

国密SSL的ECDHE证书和标准TLS就一样了,只是签名算法使用的是sm2。

Sm2签名需要一个ID,规范中建议为”1234567812345678”。实现上,都使用该值。

5:finished报文

标准TLS对finished使用标准的SHA1、SHA256、SHA384等进行hash运算,国密SSL中,hash运算为smx。Hash运算完成后,就使用上面描述的prf算法进行计算。

6:certificate报文

国密规范定义发送证书时需要发送两个证书,签名证书和加密证书(双证书体系)。

与标准TLS报文格式一样,只是第一个证书是签名证书,第二个证书是加密证书。

我没有找到国密SSL规范定义怎么发送证书链的。

7:效果

使用360国密浏览器后,实现效果如下:

相关阅读

openresty配置ssl证书

1.安装openresty与openssl安装参考 2.证书生成 创建服务器私钥,命令会让你输入一个口令: openssl genrsa -des3 -out ca.key 1024

移植Open SSL库(一)

1、下载工程https://www.openssl.org/source/下载最新版的openssl-1.1.1-pre52、打开NOTES.ANDROID加压后进入根目录,可以看到Conf

openssl的使用

1.生成私钥 openssl genrsa -out rsa_private_key.pem 1024 2、通过私钥生成公钥 openssl rsa -in rsa_private_key.pem -pu

http与https的区别,ssl证书升级必要性

https对于大部分人来说,意味着比较安全。相比http,让人更加放心。但是作为普通网民,对http与https区别,以及https升级流程操作,下面详

一文带你了解EV SSL证书申请有多难?

互联网安全问题日益严峻,如何保障网站用户数据安全?安装SSL数字证书是一种有效的方式。SSL证书是一种遵守SSL安全协议的数字证书,由

分享到:

栏目导航

推荐阅读

热门阅读