HTTPS加密机制的实现原理

HTTPS加密机制的实现原理

HTTPS 本质上是 HTTP over TLS/SSL,即在 HTTP 和 TCP 之间插入了一个加密层。其实现核心分为两大阶段:握手阶段和数据传输阶段。

一、握手阶段:如何安全地协商出密钥?

这是最关键的部分,混合使用非对称加密和对称加密。以主流的 TLS 1.3 为例:

  1. 客户端发起请求 (Client Hello)

    • 发送支持的加密套件、TLS版本。
    • 附上随机数和密钥交换算法的公钥(如 ECDHE 公钥)。
  2. 服务器响应 (Server Hello)

    • 选定加密套件,返回自己的随机数和密钥交换公钥。
    • 发送数字证书用于证明身份。
    • 用私钥对握手关键信息做签名。
  3. 密钥协商(核心魔法)

    • 双方根据公钥和私钥,各自在本地计算出相同的 预主密钥。
    • 原理:以 ECDHE 为例,利用椭圆曲线上的点乘交换律,无需传输秘密即可算出同一点坐标。
    • 将预主密钥与之前的两个随机数混合,生成最终的对称会话密钥。
  4. 验证与完成

    • 客户端验证服务器证书和签名。
    • 双方用会话密钥发送“Finished”消息,加密通道正式建立。

二、数据传输阶段:对称加密的高效通信

握手完成后,使用商量好的会话密钥进行通信:

  • 加密:HTTP 明文用会话密钥(如 AES)加密成密文。
  • 完整性校验:附上消息认证码(MAC),防止数据被篡改。

三、为什么需要这套机制?—— 三大核心问题

核心问题 解决方案 实现方式
防窃听 数据加密 握手用非对称加密传递密钥,通信用对称加密加密内容。
防篡改 完整性校验 通过 MAC 或 AEAD 算法验证数据完整性。
防冒充 身份认证 CA 数字证书 + 数字签名,验证服务器身份。

四、证书可信链

客户端如何确保证书是真的?依赖信任链:

  1. 操作系统/浏览器内置受信任的根CA证书。
  2. 网站证书由中间CA签发,中间CA由根CA签发。
  3. 浏览器验证整条链的签名,全部通过则信任该网站。

五、TLS 1.3 的改进与性能

  • 更快的握手:从 TLS 1.2 的 2-RTT 降为 1-RTT。
  • 0-RTT 重连:近期访问过的网站可“零往返”直接发送数据。
  • 加密更彻底:握手过程中的证书等敏感信息也加密传输。
mermaid_20260516_809a7e.png
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容