HTTPS的加密原理

6 阅读2分钟

一、安全特性

HTTP在通信过程中,存在以下问题:

  • 通信使用明文(不加密),内容可能被窃听
  • 不验证通信方的身份,因此有可能遭遇伪装

而HTTPS的出现正式解决这些问题,HTTPS是建立SSL之上,其安全性由SSL来保证,在采用SSL后,HTTP就拥有了HTTPS的加密、证书和完整性保护这些功能。

SSL(Secure Socket Layer安全套接字协议),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议

二、如何做

SSL的实现这些功能主要依赖于三种手段:

  • 对称加密:采用协商的密钥对数据加密
  • 非对称加密:实现身份认证和密钥协商
  • 摘要算法:验证信息的完整性
  • 数字签名:身份验证

1. 对称加密

对称加密指的是加密和解密使用的密钥都是同一个,是对称的。只要保证了密钥的安全,那整个通信过程就可以说具有了机密性。

2. 非对称加密

非对称加密,存在两个密钥,一个叫公钥,一个叫私钥。两个密钥是不同的,公钥可以公开给任何人使用,私钥则需要保密。

公钥和私钥都可以用来加密解密,但公钥加密后只能用私钥解密,反过来,私钥加密后也只能用公钥解密

3. 混合加密

在HTTPS通信过程中,采用的是对称加密+非对称加密,也就是混合加密

在对称加密中讲到,如果能够保证了密钥的安全,那整个通信过程就可以说具有了机密性

而HTTPS采用非对称加密解决密钥交换的问题

具体做法是发送密文的一方使用对方的公钥进行加密处理『对称的密钥』,然后对方用自己的私钥解密拿到『对称的密钥』。

————————————————————————————————————————————————

HTTPS 的加密原理基于 SSL/TLS 协议,通过混合加密(对称加密 + 非对称加密)和证书认证确保数据安全。以下是核心流程:

1. 握手阶段:建立安全通道

① 客户端发起请求(ClientHello)

  • 客户端向服务器发送支持的 TLS 版本、加密套件列表(如 RSA、ECDHE)和一个随机数(Client Random)。

② 服务器响应(ServerHello)

  • 服务器返回选定的 TLS 版本、加密套件、一个随机数(Server Random)和数字证书(含服务器公钥、域名、CA 签名等)。

③ 证书验证

  • 验证证书合法性:客户端检查证书是否由可信 CA 签发、域名是否匹配、是否过期等。

  • 验证签名:用 CA 的公钥(预置在操作系统/浏览器中)解密证书签名,验证未被篡改。

④ 密钥交换

  • 生成预主密钥:客户端生成随机数 Pre-Master Secret,用服务器公钥加密后发送。

  • 解密预主密钥:服务器用私钥解密,获得 Pre-Master Secret。

⑤ 生成会话密钥

  • 客户端和服务器通过 Client Random + Server Random + Pre-Master Secret,生成相同的主密钥(Master Secret),最终派生出对称会话密钥(用于后续通信)。

⑥ 握手完成

  • 双方交换加密完成的确认消息,后续通信使用对称加密。

2. 数据传输阶段

  • 对称加密:使用会话密钥(如 AES)加密实际传输的 HTTP 数据,效率高。

  • 完整性校验:通过 HMAC 或 AEAD(如 AES-GCM)防止数据篡改。

关键安全机制

  1. 混合加密优势

    • 非对称加密(如 RSA/ECC):安全交换密钥,但性能差。

    • 对称加密(如 AES):高效处理数据,依赖安全的密钥交换。

  2. 前向保密(Perfect Forward Secrecy, PFS)

    • 使用 ECDHE 等临时密钥交换算法,每次会话生成独立密钥。即使服务器私钥泄露,历史通信仍安全。
  3. 证书体系(PKI)

    • CA(证书颁发机构):签发证书,验证服务器身份。

    • 证书链:从服务器证书到根证书逐级验证,确保信任链完整。

为什么 HTTPS 安全?

  • 加密:数据全程加密,防止窃听。

  • 身份认证:证书验证服务器身份,防中间人攻击。

  • 完整性:校验数据未被篡改。

TLS 1.3 优化

  • 简化握手流程,支持 1-RTT(甚至 0-RTT)快速连接。

  • 移除不安全算法(如 RSA 密钥交换),强制使用前向保密。

通过以上机制,HTTPS 在 HTTP 明文传输的基础上,实现了安全的三重保障:加密、认证、完整性