欢迎光临
我们一直在努力

HTTPS 的加密流程

深入理解 HTTPS:加密流程与安全机制详解

在互联网早期,HTTP(超文本传输协议)承担了数据传输的重任。然而,HTTP 是明文传输的,这意味着数据在网络中就像写在明信片上一样,黑客只要在中间节点(如路由器、公共 Wi-Fi)抓包,就能轻松窃取密码、篡改页面甚至伪造服务器。

为了解决这些安全问题,HTTPS(HyperText Transfer Protocol Secure)应运而生。它并非一种全新的协议,而是 HTTP + TLS/SSL 的组合,通过加密、摘要和证书机制,确保了数据的机密性、完整性和身份真实性。

本文将详细梳理 HTTPS 的核心思想——混合加密,并拆解其完整的加密握手流程。


一、核心痛点与密码学基础

在讲解流程之前,我们必须先了解三种基础的密码学技术,以及它们各自的优缺点。HTTPS 的精妙之处,就在于“扬长避短”。

1. 对称加密

  • 原理:通信双方使用同一把密钥(Session Key)进行加密和解密。
  • 代表算法:AES、DES、ChaCha20。
  • 优点:计算速度极快,适合处理大量数据。
  • 缺点:密钥分发困难。双方如果不在同一个物理空间,如何安全地把这把密钥告诉对方?如果在网上传输,一旦被拦截,加密就形同虚设。

2. 非对称加密

  • 原理:生成一对密钥,公钥(Public Key)和私钥(Private Key)。公钥加密的数据,只有私钥能解开;私钥加密的数据,只有公钥能解开。
  • 代表算法:RSA、ECC(ECDHE)。
  • 优点:安全性极高,公钥可以公开给任何人,解决了密钥分发问题。
  • 缺点:计算极慢,消耗 CPU 资源,如果全用非对称加密传输网页数据,服务器会瞬间瘫痪。

3. 数字摘要(哈希)

  • 原理:通过单向散列函数(如 SHA-256),将任意长度的数据变成固定长度的摘要。数据变一点点,摘要就完全不同。
  • 作用:验证数据的完整性,防止被篡改。

二、HTTPS 的核心思想:混合加密

由于对称加密快但密钥难传,非对称加密安全但速度慢,HTTPS 采取了一套“混合加密”方案:

  • 用非对称加密,来安全地传输对称加密的密钥(解决密钥分发问题)。
  • 用对称加密,来传输实际的 HTTP 数据(解决性能问题)。
  • 这样一来,既保证了安全性,又兼顾了性能。但这其中还隐藏着一个巨大的隐患:中间人攻击。

    数字证书:解决身份伪造

    如果黑客拦截了服务器的公钥,并把黑客自己的公钥发给客户端,客户端用黑客的公钥加密密钥,黑客就能用私钥解开,从而窃取所有信息。

    为了证明“这个公钥确实是目标服务器的”,我们需要 CA(证书颁发机构)。CA 机构用自己的私钥,将服务器的域名、公钥、有效期等信息加密(生成数字签名),打包成一个数字证书。
    客户端操作系统和浏览器中内置了所有受信任的 CA 机构的公钥。客户端收到证书后,只要用 CA 的公钥一验,就能知道证书是否被篡改过,确认服务器的真实身份。


    三、HTTPS 加密流程(以 TLS 1.2 RSA 握手为例)

    接下来,我们详细拆解一次完整的 HTTPS 通信流程。这个过程通常被称为“TLS 握手(TLS Handshake)”,发生在你输入网址、建立 TCP 连接之后,发送 HTTP 请求之前。

    为了便于理解,我们假设客户端是浏览器,服务端是 Web 服务器。

    第一阶段:客户端发起请求(Client Hello)

  • 浏览器向服务器发送 Client Hello 报文。
  • 报文中包含:
    • 客户端支持的 TLS 版本号(如 TLS 1.2)。
    • 一个客户端生成的随机数 Client Random。
    • 客户端支持的加密套件列表(如 RSA、AES、SHA-256 等)。
  • 第二阶段:服务端回应(Server Hello)

  • 服务器收到请求后,回复 Server Hello 报文。
  • 报文中包含:
    • 确认使用的 TLS 版本。
    • 一个服务器生成的随机数 Server Random。
    • 确认使用的加密套件。
  • 发送数字证书:服务器将自己的数字证书发送给客户端。证书里包含了服务器的公钥。
  • 第三阶段:客户端验证并生成会话密钥(Client Key Exchange)

  • 验证证书:浏览器收到证书后,用系统内置的 CA 公钥验证证书的数字签名。验证通过,说明服务器身份合法;如果失败,浏览器会弹出“您的连接不是私密连接”的警告。
  • 生成 Pre-Master Secret:客户端验证通过后,再生成第三个随机数,称为 Pre-Master Secret。
  • 加密传输:客户端用服务器证书中的公钥,加密这个 Pre-Master Secret,然后发送给服务器。
  • 第四阶段:双方生成最终的会话密钥(Session Key)

  • 服务器收到加密的 Pre-Master Secret 后,用自己的私钥将其解密。
  • 此时,客户端和服务器都拥有了三个相同的核心材料:Client Random、Server Random 和 Pre-Master Secret。
  • 双方使用相同的算法,将这三个随机数计算出最终的会话密钥(Session Key)。这也就是后续通信所使用的对称加密密钥。
  • 第五阶段:验证与加密通信(Finished)

  • 客户端发送 Change Cipher Spec,告诉服务器:“我下面开始用会话密钥加密通信了”。
  • 客户端发送 Finished 报文,里面包含前面所有握手消息的哈希值,并用会话密钥加密。
  • 服务器同样回复 Change Cipher Spec 和 Finished 报文。
  • 双方验证 Finished 报文无误后,TLS 握手正式结束。
  • 第六阶段:加密的 HTTP 通信

  • 之后,所有的 HTTP 数据都会使用刚刚协商好的会话密钥(Session Key)进行对称加密传输。中间人由于没有会话密钥,也就无法窃听和篡改了。

  • 四、进阶:TLS 1.3 的优化

    随着技术的发展,TLS 1.2 的握手过程(需要 2 个 RTT,即两次往返时间)显得有点慢。最新的 TLS 1.3 标准对流程进行了极大的优化:

  • 握手过程缩短(1-RTT):TLS 1.3 砍掉了多余的交互,客户端在发送 Client Hello 时,就直接猜测并附上加密套件参数(通常基于 DH 密钥交换算法),服务器直接返回所有参数,双方在 1 个 RTT 内就能完成握手并开始传数据。
  • 支持 0-RTT(会话恢复):如果客户端和服务器之前连接过,客户端保存了会话票据(Session Ticket),那么在下次重连时,可以在第一个报文里就携带加密数据(0-RTT),极大提升了性能。
  • 安全性增强:彻底废除了不安全的 RSA 密钥交换,只支持具有前向安全性的 ECDHE 算法(即使服务器私钥未来泄露,黑客也无法解密过去的历史记录)。

  • 五、总结

    HTTPS 的加密流程,本质上是密码学在工程上的一场完美协奏:

    机制使用场景解决的问题
    对称加密 实际的 HTTP 数据传输 解决加密解密的性能问题
    非对称加密 握手阶段加密传输 Pre-Master Secret 解决对称密钥安全交换的问题
    数字证书 验证服务器身份 解决公钥被中间人调包的问题
    摘要算法 计算随机数、校验报文 保证数据的完整性

    一句话概括 HTTPS 的流程:
    利用非对称加密和数字证书安全地传递随机数,双方利用随机数生成对称密钥,最后用对称密钥高速加密传输数据。

    赞(0)
    未经允许不得转载:171主机测评 » HTTPS 的加密流程
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址