真实面经题目 · 原创解析

HTTPS 为什么结合使用对称加密和非对称加密?

HTTPS 同时使用非对称加密和对称加密,是为了兼顾安全密钥交换、身份认证和传输性能。非对称加密适合解决陌生双方如何安全协商密钥和验证服务器身份的问题,但计算成本高;对称加密速度快,适合保护大量业务数据,因此握手阶段协商会话密钥,传输阶段用对称密钥加密数据。

出现于:字节跳动 · 客户端

60 秒回答模板

可以按 TLS 流程回答:客户端和服务器一开始没有共享密钥,不能直接用对称加密,因为密钥一旦明文传输就会被中间人窃取。服务器通过证书和非对称密码体系证明自己的身份,握手阶段再通过 RSA 密钥交换或更常见的 ECDHE 这类密钥协商算法生成共享会话密钥。会话密钥建立后,后续 HTTP 数据使用 AES-GCM、ChaCha20-Poly1305 等对称加密算法保护,因为它们对大量数据更快、更省资源。现代 TLS 还会用消息认证和 AEAD 保证完整性,防止密文被篡改。

考点 对称加密优势
难度 真实面经高频题
回答目标 讲清机制、边界和追问

深入解析

01

核心矛盾

对称加密要求通信双方先拥有同一把密钥,但互联网通信双方往往从未见过,不能把密钥直接发到网络上。非对称加密或密钥交换可以在不预先共享秘密的情况下建立安全材料,并配合证书验证对方身份。HTTPS 的混合设计正是为了解决初始信任和高性能传输之间的矛盾。

02

身份认证

HTTPS 不只是加密,还要确认访问的是预期服务器。服务器发送证书,证书由受信任 CA 签发,包含域名、公钥和签名链。客户端校验证书链、域名、有效期和吊销状态后,才能信任该公钥属于目标站点。没有这一步,中间人可以伪造自己的公钥并拦截通信。

03

密钥协商

早期 TLS 可以使用 RSA 方式让客户端生成预主密钥并用服务器公钥加密发送;现代实践更常见 ECDHE,双方通过椭圆曲线 Diffie-Hellman 生成共享密钥,私钥不直接传输。ECDHE 的优势是前向安全:即使服务器长期私钥未来泄露,过去会话的流量也不容易被解密。

04

数据传输

握手结束后,双方基于协商结果派生出会话密钥。真正的业务数据不再用非对称算法逐块加密,而是用对称算法处理。原因很直接:对称加密在吞吐、延迟和 CPU 消耗上都更适合大流量传输。TLS 还会结合认证加密模式,让接收方能够发现篡改和伪造。

05

性能优化

混合加密也方便做性能优化。TLS 1.3 简化握手轮次,减少往返延迟;会话恢复和 PSK 能减少重复握手成本;硬件加速和现代 AEAD 算法能降低对称加密开销。非对称部分只用于握手中的关键步骤,避免每个业务包都承担昂贵运算。

易错点

  • 说 HTTPS 先用非对称加密传输所有数据,再改用对称加密,忽略非对称主要服务握手和密钥协商。
  • 只讲加密,不讲证书和身份认证,无法解释中间人攻击如何被防住。
  • 把 RSA 加密预主密钥当成现代 TLS 的唯一方式,忽略 ECDHE 和前向安全。
  • 遗漏完整性校验,误以为 HTTPS 只负责防止内容被偷看。

面试官追问

为什么不全程使用非对称加密?

非对称运算成本高、吞吐低,不适合逐块处理大量业务数据。它更适合握手中的身份认证和密钥协商,后续传输交给高效的对称加密。

为什么不直接用对称加密?

双方一开始没有共享密钥。如果把对称密钥明文发过去,中间人也能拿到密钥。必须先通过证书和密钥交换建立安全共享秘密。

证书在 HTTPS 中解决什么问题?

证书把域名和服务器公钥绑定起来,并由可信 CA 签名。客户端校验通过后,才能相信自己拿到的公钥不是中间人伪造的。

TLS 1.3 为什么更强调 ECDHE?

ECDHE 能提供前向安全,并且 TLS 1.3 删除了许多旧的不安全或复杂协商方式,让握手更简单、更快、更安全。