Willson Chen

Stay Hungry, Stay Foolish.

HTTPS 协议

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网站下载。