跳转至

SSL和TSL协议

时间:2017-05-17 10:31:38

参考:

  1. Transport Layer Security
  2. 图解SSL/TLS协议
  3. 根证书、服务器证书、用户证书
  4. HTTPS篇之SSL握手过程详解
  5. 几幅图拿下HTTPS
  6. TLS 1.3 0-RTT and Anti-Replay

SSL#

TLS 支持国密算法#

TLS支持国密算法,是在TLS握手流程中增加国密算法的选项,并没有实现国密标准的SSL。

根据国内发布的 rfc8998,可以把国密算法集成到TLS1.3之中,不适用于TLS1.3之前的版本。

开源实现: BabaSSL

国密SSL#

双证书:

签名证书:表明身份。密钥用于签名,不应被存储,丢失时重新生成密钥对。公钥用于验证签名,需要存储(存储主要是为了验证旧密钥的签名)。

加密证书:加密数据。公钥不需要被存储,公钥丢失时重新生成密钥对,公钥用于加密数据。密钥用于解密数据,需要被存储(存储主要为了解密旧数据)。

中华人民共和国密码行业标准 GM/T 0024-2014 SSL VPN 技术规范#

参考TLS1.1(RFC4346) 实现。

发布于2014-02-13,实施于2014-02-13。

开源实现:gmsm

中华人民共和国密码行业标准 GM/T 38636-2020 信息安全技术传输层密码协议(TLCP)#

定义TLS通信规范,双证书(加密证书和签名证书)模式,支持验证客户端证书。

支持客户端验证,规范定义了一个参数用于控制是否开启客户端验证。

发布于2020-04-28,实施于2020-11-01。

开源实现: BabaSSL

标准TLS#

密钥交换算法#

  1. RSA:使用客户端随机数+服务端随机数+客户端预主密钥(经服务端公钥加密后传递给服务器) 计算出加密密钥。如果服务端私钥泄漏之前发送的数据都会被解密(不支持向前保密)。

  2. ECDHE:客户端使用服务端公钥和客户端私钥计算出加密密钥。服务端使用客户端公钥和服务端私钥计算出相同的加密密钥。最终密钥使用 客户端随机数 + 服务端随机数 + ECDHE 算法算出的共享密钥 计算得出。