基本

说明 [1]:

属于「加解密」算法中的复合算法
SSL v1.0, SSL v2.0因安全原因没有公开
1996年公开了v3.0版
而SSL v3.1版就是TLS1.0版
SSL: Secure Socket Layer
TLS: Transport Layer Security

SSL提供了3种功能:

数据保密性
数据完整性
身份认证

摘要算法的特点 [2]:

1.不同的数据,即使是一字节改变,其摘要的结果变化非常大
2.无论摘要的输入长度是多少,其输出是固定长度,对于MD5而言输出16字节;对于SHA1而言,输出20字节
3.无法从摘要的结果中得出原文.只有输入相同的明文数据经过相同的摘要算法才能得到相同的结果

证书包含的几点重要信息 [3]:

拥有者(颁发给谁)
颁发者(谁颁发)
截止日期

证书时由从属关系的,当我们信任root证书的时候,我们就会信任CA1、CA2、CA3

根证书(root):

“颁发给”和“颁发者”都是一样的
根证书是通过工具自己生成的,无需外部因素(其他证书)
根证书用来干嘛?根证书用来“签名”它下一级证书
浏览器是内置许多可信任的根书,只要是拿这些根证书签发的证书,浏览器默认都信任
同样,如果服务器需要认证客户端的身份,那么客户端必须提供自己的证书,然后服务器验证这个证书,这个就是双向认证

关于密钥交换和协商 [4]:

//密钥协商和交换是SSL的一个关键,也是SSL性能消耗大的地方
//而需要消耗如此高性能的直接原因就是:客户端和服务器希望安全的交换或者协商出一个密钥
1:密钥使用周期必须是短暂的,不能长期有效,最好一个会话一个密钥
2:密钥不能明文的传输于网络,否则如果被别人看到,那么谁都能解密你们的会话了

1.服务器把自己公钥明文的发给客户端
2.客户端接着生成一个「密码」,然后拿公钥加密这个「密码」
3.把加密后的「密码」发给服务端
4.服务端用私钥解密,得到「密码」

保证数据的完整性 [5]:

保证后续加密的数据不被篡改,SSL需要辨别数据是否被篡改的能力
摘要派上用场

加密:

../../../_images/protocol_ssl_tls_digest1.png

HTTPS通过TLS层和证书机制提供了内容加密、身份认证和数据完整性三大功能:

可以有效防止数据被监听或篡改,还能抵御 MITM(中间人)攻击
TLS 在实施加密过程中,需要用到非对称密钥交换和对称内容加密两大算法

非对称密钥目前最常用的密钥交换算法有 RSA 和 ECDHE:

RSA 历史悠久,支持度好,但不支持 PFS(Perfect Forward Secrecy)
ECDHE 是使用了ECC(椭圆曲线)的 DH(Diffie-Hellman)算法,计算速度快,支持 PFS

证书合法性校验的原理,简单总结如下:

1.根据版本号、序列号、签名算法标识、发行者名称、有效期、证书主体名、证书主体公钥信息、发行商唯一标识、主体唯一标识、扩展等信息,生成 TBSCertificate(To Be Signed Certificate)信息
2.签发数字签名: 使用 HASH 函数对 TBSCertificate 计算得到消息摘要, 再用 CA 的私钥进行加密, 得到签名
3.校验数字签名: 使用相同的 HASH 函数对 TBSCertificate 计算得到消息摘要, 与使用 CA 公钥解密签名得到内容相比较

ECDHE 数字签名的算法主要有 RSA 和 ECDSA,也就是目前密钥交换 + 签名有三种主流选择:

1.RSA 密钥交换(无需签名)
2.ECDHE 密钥交换、RSA 签名
3.ECDHE 密钥交换、ECDSA 签名

256 位 ECC Key 在安全性上等同于 3072 位 RSA Key,加上 ECC 运算速度更快,ECDHE 密钥交换 + ECDSA 数字签名无疑是最好的选择

原文链接:

[1]TLS/SSL 协议详解(1) 前言
[2]TLS/SSL 协议详解 (2) SSL有关的密码学原理
[3]TLS/SSL 协议详解(3) 运用密码学原理构建安全信道1
[4]TLS/SSL 协议详解 (4) 运用密码学原理构建安全信道2
[5]TLS/SSL 协议详解 (5) 运用密码学原理构建安全信道3