编程语言
首页 > 编程语言> > SSL/TLS 与国密算法

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,正在规划。

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

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

国密算法

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

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

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

国密算法应用

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

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

证书格式

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

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

TLS握手过程

下图为TLS握手过程:

基本流程如下:

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

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

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

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

握手协商阶段

总结

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

参考资料:

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

标签:TLS,加密,SM2,SSL,算法,国密,密钥
来源: https://www.cnblogs.com/cherishui/p/14626196.html