SSL和TSL协议
时间:2017-05-17 10:31:38
参考:
- Transport Layer Security
- 图解SSL/TLS协议
- 根证书、服务器证书、用户证书
- HTTPS篇之SSL握手过程详解
- 几幅图拿下HTTPS
- 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#
密钥交换算法#
-
RSA:使用
客户端随机数+服务端随机数+客户端预主密钥(经服务端公钥加密后传递给服务器)
计算出加密密钥。如果服务端私钥泄漏之前发送的数据都会被解密(不支持向前保密)。 -
ECDHE:客户端使用服务端公钥和客户端私钥计算出加密密钥。服务端使用客户端公钥和服务端私钥计算出相同的加密密钥。最终密钥使用
客户端随机数 + 服务端随机数 + ECDHE 算法算出的共享密钥
计算得出。