SSL/TLS 与国密算法

SSL/TLS是用于网络传输的加密协议,用于解决应用层传输安全问题。众所周知,HTTP是明文传输,加上SSL后变成HTTPS,它的发展经历经过了以下阶段:

  1. SSL1.0,已废除,不再使用。
  2. SSL2.0,RFC6176,已废除。
  3. SSL3.0,RFC6101,基本废除
  4. TLS1.0,RFC2246,少数在使用
  5. TLS1.1,RFC4346
  6. TLS1.2,RFC5246,目前广泛使用
  7. TLS1.3,正在规划。

每种加密套件需要具备四项基础功能:

  • 身份认证
  • 密钥协商
  • 信息加密
  • 完整性校验

在以上四项功能之上,实现加解密、签名和验签等功能。

国密算法

国密算法是国家密码局认定的国产密钥算法,主要有以下几种

  • SM1:对称加密,密钥、分组长度为128位,加密强度与AES相当,非公开,需要专用加密芯片配合。
  • SM2:基于ECC椭圆曲线的公钥密钥算法,包括
    • SM2-1数字签名算法
    • SM2-2密钥交换协议
    • SM2-3公钥加密算法
      256位的SM2密码强度优于2048位的RSA,运算速度比RSA快。
  • SM3:输出长度为256位,适用于数字签名和验证消息认证码。
  • SM4:对称加密,密钥长度与分组长度均为128位,用于无线局域网领域。
  • SM9:能够实现由用户指定公钥,例如使用身份证号码、邮箱地址等,通过密钥生成中心得到私钥。

以下是SSL和国密算法的对比

标准 身份认证 密钥协商 对称加密 完整性校验
SSL/TLS 数字签名 RSA、ECDH、ECDSA RC4、AES、DES等 SHA1/SHA256
国密算法 SM2-1 SM2 SM4 SM3

国密算法应用

  • 国密证书:使用国密算法(SM2-SM3)的标准X509格式证书
  • 国密SSL:采用国密算法,符合国密标准的安全传输协议。

新版Linux内核已经支持的SM3和SM4算法,SM2算法也于2020年10月26日纳入Linux内核

国密规范规定发送证书时需要有签名证书和加密证书,详见双证书

证书格式

X.509是数字证书的格式标准,用于标示通讯各方身份信息的一系列数据,具体有多种编码形式,常用的有:

  • pem格式:将DER格式进行Base64编码。
  • der格式:DER格式,二进制格式保存。

这两种格式可以互转。证书中含有申请者公钥、申请者的组织信息、个人信息、签发机构信息、证书有效时间和证书序列号等明文信息。

TLS握手过程

下图为TLS握手过程:

SSL/TLS 与国密算法

基本流程如下:

  1. 客户端向服务器索要并验证公钥
  2. 双方协商生成"对话密钥"
  3. 双方采用"对话密钥"进行后续加密通讯

具体流程在 SSL/TLS协议运行机制的概述,这篇文章中有很好的解释,此处不再赘述。

在握手的最后阶段,通讯双方记录对方发送过来的所有内容,并计算内容hash值,交于对方进行校验。

这里需要注意,协商生成"对话密钥"的过程,需要依赖三个随机数,其中有2个明文随机数,分别由客户端和服务端生成,1个密文随机数,由客户端生成,称为pre-master-key,并通过公钥加密后传给服务端,通讯双方同步这三个随机数后,采用事先商定的密钥生成方法,生成后续会话的对话密钥

握手协商阶段

  • RSA密钥交换算法
    • 客户端生成一个随机数,当做后续对称加密密钥,使用服务端的公钥加密后回传给服务端,服务的使用私钥解密,双方同步对称密钥。
  • DHE密钥交换算法
    • 客户端生成一个随机值Xa,通过公式Pa=q^Xa mod p(p、q值固定)计算得到Pa,发送Pa到服务器。
    • 服务器生成一个随机值Xb,通过公式Pb=q^Xb mod p,计算得到Pb,Pb发送给客户端
    • 客户端收到Pb后计算Sa=Pb^Xa mod p,服务端收到Pa后计算Sb=Pa^Xb mod p。
    • DHE算法保证了 Sa = Sb = S,S为对称通讯密钥。
  • ECDHE密钥交换算法
    • 客户端生成一个随机值Ra,计算Pa(x,y) = Ra * Q(x,y),将Pa(x,y)发送至服务器
    • 服务端生成一个随机值Rb,计算Pb(x,y) = Rb * Q(x,y),将Pb(x,y)发送至服务器
    • 客户端计算Sa(x,y)=Ra *Pb(x,y),服务端计算Sb(x,y) = Rb * Pa(x,y)
    • 算法保证Sa=Sb=S,提取S的x向量作为对称通讯密钥

总结

本文简要介绍了SSL和国密算法的基本概念、加密通道的建立流程和握手协商密钥交换流程。

参考资料:

GMT 0024-2014 SSL VPN 技术规范
浅谈国密算法
各种安全证书间的关系及相关操作
PKI - 三种密钥交换算法详解(RSA& DHE& ECDHE)及他们在SSL/TLS协议中的应用
ECC椭圆曲线加密算法:ECDH 和 ECDSA

上一篇:实验一-密码引擎-商用密码算法实现


下一篇:ES(一)——Windows安装ElasticSearch