所有 SSL 文章 SSL 与证书

公钥密码学:SSL 加密的实际工作原理

公钥密码学(也称非对称密码学)是 SSL/TLS 的基础。它使用一对数学相关的密钥——一个公钥、一个私钥——来加密数据、验证身份和建立安全连接。每个 HTTPS 连接都依赖于它。

密钥对概念

公钥私钥
谁拥有所有人(包含在证书中)仅服务器所有者
能加密
能解密仅限私钥加密的内容仅限公钥加密的内容
能否共享?是——这正是其目的永远不能

核心原理:用公钥加密的数据只能用匹配的私钥解密。反之亦然。两个密钥在数学上相关联,但无法从公钥推导出私钥。

在 SSL/TLS 中的应用

公钥密码学在每个 HTTPS 连接中服务于三个目的:

1. 密钥交换——建立共享密钥

TLS 握手过程中,服务器和浏览器需要协商一个用于加密流量的共享会话密钥。它们不能以明文发送这个密钥——可能被截获。

解决方案:Diffie-Hellman 密钥交换(现代 TLS 中具体为 ECDHE)。双方各自贡献随机值,数学原理使它们能计算出相同的共享密钥而无需传输。服务器的私钥对其贡献进行签名,证明服务器身份。

2. 身份认证——证明身份

服务器的 SSL 证书包含其公钥。证书由证书颁发机构签名。在握手过程中,服务器证明它持有匹配的私钥,从而证明服务器确实是证书所声明的身份。

没有这一步,任何人都可以声称自己是 google.com

3. 数字签名——证明数据完整性

私钥可以创建数字签名——一个数学证明,表明特定数据由密钥持有者签名且未被修改。TLS 握手消息被签名以防止篡改。

对称加密 vs 非对称加密

非对称(公钥)对称(会话密钥)
密钥两个(公钥 + 私钥)一个(共享密钥)
速度慢(约慢 1000 倍)
用途密钥交换 + 认证加密实际数据
算法RSA、ECDSA、ECDHEAES-GCM、ChaCha20
在 TLS 中仅握手阶段握手后(所有流量)

HTTPS 同时使用两者:非对称加密用于握手(证明身份、交换密钥),然后对称加密用于实际数据传输(因为快得多)。

SSL 背后的算法

RSA

仍在使用的最古老的公钥算法(1977 年)。基于大素数分解的困难性。可用于签名和密钥交换,但不使用 Diffie-Hellman 的 RSA 密钥交换不提供前向保密,已从 TLS 1.3 中移除。

ECDSA(椭圆曲线数字签名算法)

使用椭圆曲线数学的现代签名算法。256 位 ECC 密钥提供等同于 3072 位 RSA 密钥的安全性——更小的密钥、更快的签名。GetHTTPS 默认使用 ECDSA P-256。

ECDHE(临时椭圆曲线 Diffie-Hellman)

现代 TLS 中使用的密钥交换机制。“临时”意味着每个连接都生成新的密钥对——提供前向保密。在 TLS 1.2 和 1.3 中均使用。

AES-GCM

握手后用于加密实际流量的对称加密算法。AES(高级加密标准)配合 GCM(Galois/Counter 模式)同时提供加密和认证。通过 AES-NI 指令在现代 CPU 上硬件加速。

GetHTTPS 如何使用公钥密码学

当你使用 GetHTTPS 时:

  1. 你的浏览器使用 Web Crypto API 生成一个密钥对——与 TLS 本身使用的相同密码学原语
  2. 公钥放入发送给 Let’s Encrypt 的 CSR
  3. 私钥留在你的浏览器内存中——从不传输
  4. Let’s Encrypt 签名公钥并返回你的证书
  5. 你下载证书(公开)和私钥到你的服务器

私钥仅存在于浏览器内存中,这就是为什么 GetHTTPS 比在远程服务器上生成密钥的工具更具隐私性。

常见问题

量子计算机能破解公钥密码学吗?

当前的量子计算机不能。但足够强大的量子计算机运行 Shor 算法可以破解 RSA 和 ECC。行业正在用后量子密码学做准备——新算法(ML-KEM、ML-DSA)可抵抗量子攻击。TLS 将以混合模式(经典 + 后量子)采用这些算法,不会改变证书的工作方式。

为什么不直接用非对称加密处理所有数据?

速度。非对称操作比对称慢约 1000 倍。用 RSA 加密整个网页是不切实际的。因此,TLS 仅在握手时使用非对称加密(约 1ms),然后切换到对称加密(AES)处理数据——以硬件速度运行。

256 位 ECC 密钥真的足够安全吗?

256 位 ECC 提供约 128 位安全性——意味着攻击者需要大约 2^128 次操作才能破解。这比可观测宇宙中的原子数还多。在可预见的未来(不考虑量子计算机,那需要完全不同的算法)是安全的。

加密和签名有什么区别?

加密: 保护机密性。用接收方的公钥加密 → 只有其私钥能解密。 签名: 证明真实性。用你的私钥签名 → 任何拥有你公钥的人都可以验证它来自你且未被修改。TLS 证书使用签名;TLS 数据传输使用加密。

相关文章

SSL 与证书 2026-05-07
SSL/TLS 如何工作:TLS 握手详解
TLS 握手的可视化解析——浏览器和服务器如何在毫秒内建立加密连接。涵盖 TLS 1.2、TLS 1.3、会话恢复和前向保密。
SSL 与证书 2026-05-07
ECC 与 RSA 证书:该如何选择?
对比 ECC(ECDSA P-256)和 RSA(2048/4096 位)证书。ECC 密钥更小、更快。了解为什么 GetHTTPS 默认使用 ECC,以及何时 RSA 仍有意义。
SSL 与证书 2026-05-08
什么是 SSL 证书?
SSL 证书是一个数字文件,用于验证网站身份并启用加密 HTTPS 连接。了解证书包含什么、如何工作、如何免费获取,以及为什么每个站点都需要。
SSL 与证书 2026-05-07
什么是 CSR(证书签名请求)?
CSR 是发送给证书颁发机构以申请 SSL 证书的消息。了解 CSR 包含什么、如何生成,以及为什么 GetHTTPS 会自动处理它。
在浏览器中获取免费 SSL 证书
无需安装,无需账号。私钥始终留在你的设备上。
获取证书