HTTPS 协议
- HTTPS = HTTP + TLS
TLS 协议
- TLS(Transport Layer Security),传输层安全协议。
TLS版本历史
- 前身是 SSL(Secure Sockets Layer),安全套接层协议。
- 当前主要使用版本是 TLS 1.2和 TLS1.3。
- TLS 1.3 简化了握手交互流程,延迟缩短近1/3。
TLS特点
- 底层协议 TCP,默认端口 443。
如何保证安全性
- 通过 CA 体系交换公钥
- 通过非对称加密算法,交换对称加密的密钥
- 通过对称加密传输数据
握手协议
- 协商 TLS 版本,密码套件,交换证书各自生成后续对称加密的密钥。
- 1 客户端请求
- 包含版本号,随机数,密码套件列表
- 版本是客户端支持的 TLS 最大版本
- 随机数用于生成会话密钥
- 密码套件用于给服务端选择一个使用
- 2 服务端回应
- 确认版本号和使用的密码套件,服务端随机数
- 发送服务端证书,如 CA 颁发的证书
- 发送密钥交换算法参数
- 3 客户端回应
- 检查证书是否过期、是否可信、是否域名一致等
- 使用服务端证书的公钥加密随机数,发送给服务端
- 生成会话密钥,后续传输数据使用会话密钥加密
- 4 服务端回应
- 使用自己的私钥解密随机数,得到会话密钥
- 使用会话密钥加密数据,发送给客户端
密码套件
- 三件套:密钥交换算法,对称加密算法,摘要算法。
- 密钥交换算法:密钥交换算法用于交换密钥,如 RSA、ECDHE 等。
- RSA:破解服务端私钥可以破解历史数据。
- ECDHE:
- 采用椭圆曲线算法。
- 具有前向安全性,服务端私钥泄露不会泄露历史数据。
- 需破解服务器私钥+椭圆曲线私钥,后者每次握手随机生成。
- 对称加密算法,常用如AES、DES。
- 摘要算法,常用如 SHA256,MD5。
数字证书
- 定义:由可信的第三方证书机构(CA)颁发的电子文件。
- 产生背景:非对称加密中,客户端需要获取服务端的公钥。为了防止中间人篡改公钥,需要将公钥与服务端身份进行绑定。
- 原理:CA颁发给服务端A,客户端B请求A时,A发送给B。B利用自身已有的CA公钥(根证书)解密证书的签名,得到摘要信息1,利用证书哈希算法对证书取摘要信息2,两者相等即证明证书可信。
- 证书内容:版本、序列号、签名算法、颁发者、有效期、持有者、持有者公钥、签名等。
- 证书颁发方式:
- 在终端设备中生成公私钥对,将设备身份与公钥提供给CA。
- CA直接生成公私钥对与证书,再将私钥与证书给终端。
- 证书链:
- 证书链是信任链,每个证书都需要有上一级证书进行验证,直到根证书。
- 根证书:
- 根证书是是证书链的起点,是自签名证书,颁发者与使用者相同。
- 操作系统安装时已内置,也可以从CA网站下载。