加密与安全通信

公钥加密

约 5 分钟阅读

什么是公钥加密

公钥加密 (Public Key Cryptography) 是一种使用两个不同密钥 (公钥和私钥) 进行加密和解密的加密方式。1976 年 Diffie 和 Hellman 发表了这一概念,1977 年 Rivest、Shamir、Adleman 提出了 RSA 算法,并于 1978 年发表论文。

公钥可以公开给任何人,私钥仅由所有者保管。用公钥加密的数据只能用对应的私钥解密,用私钥签名的数据则可以用对应的公钥验证。这种非对称性消除了事先共享密钥的需要,解决了对称加密的根本性密钥分发问题,也成为在互联网上安全通信的基石。

TLS/SSL端到端加密数字证书、SSH、加密货币等,现代安全技术中的许多都依赖公钥加密。

公钥加密的两大用途

公钥加密有两个主要应用。

1. 加密 (确保机密性)

发送方用接收方的公钥加密数据,接收方用自己的私钥解密。由于公钥可以自由获取,无需事先共享密钥。

实际应用:加密邮件 (PGP/GPG) 用收件人的公钥加密邮件,只有收件人能用自己的私钥解密。

2. 数字签名 (确保真实性)

签名者用自己的私钥对数据签名,接收方用签名者的公钥验证签名。签名验证通过,就证明了数据没有被篡改、且确实由该签名者创建。

实际应用:软件的发布方对二进制文件签名,用户下载后验证签名,即可确认文件未被篡改。数字证书也是同样的机理,由 CA 用私钥签署证书,浏览器再用 CA 的公钥验证。

主要算法

  • RSA:历史上使用最广泛的算法。安全性基于大素数乘积的因式分解困难性。推荐密钥长度 2048 位以上。历史悠久、实绩丰富,但由于密钥较大,处理速度较慢。
  • 椭圆曲线加密 (ECC):安全性基于椭圆曲线离散对数问题。以更短的密钥实现与 RSA 同等的安全性 (ECC 256 位 ≈ RSA 3072 位),处理速度更快,带宽占用更少。TLS 1.3 中作为标准采用。
  • EdDSA (Ed25519):基于扭曲 Edwards 曲线的签名算法。速度快,抗实现错误能力强。广泛用于 SSH 密钥和加密货币钱包。

面对量子计算机的潜在威胁,后量子密码学 (PQC) 研究正在推进。NIST 于 2024 年 8 月公开了首批后量子标准 ML-KEM (FIPS 203)、ML-DSA (FIPS 204) 与 SLH-DSA (FIPS 205)。在需要长期保密的产品中,迁移规划已经开始。

TLS 中公钥加密的使用方式

每次在浏览器中访问 HTTPS 网站时,公钥加密都在发挥作用。但并非所有数据都用公钥加密。

  1. 密钥交换:在 TLS 握手过程中,使用公钥加密 (如 ECDHE) 安全地交换共享密钥。
  2. 服务器认证:服务器出示数字证书并用私钥完成签名,以此证明自己是正当的服务器。
  3. 数据加密:实际的数据通信使用交换得到的共享密钥,通过对称加密 (如 AES) 完成。

公钥加密的处理速度比对称加密慢数百倍,并不适合加密大量数据。因此 TLS 采用「用公钥加密安全地交换共享密钥,实际数据则用高速的对称加密来加密」的混合方式。TLS 1.3 强制要求使用 ECDHE 进行密钥交换,确保前向保密。

实用注意事项与密钥管理

安全运用公钥加密,密钥长度的选择和密钥的生命周期管理与算法选择同样重要。

推荐密钥长度:RSA 最低要求 2048 位,若考虑 2030 年以后的长期使用,推荐 3072 位以上。ECDSA 中 P-256 (secp256r1) 是标准选择,用远短的密钥长度就实现了等同于 RSA 3072 位的安全性。Ed25519 在签名用途上效率最高,已被广泛用作 SSH 密钥。1024 位以下的 RSA 密钥已不再被视为安全,需要立即更新。

密钥轮换:私钥应定期更新 (轮换)。数字证书的有效期正依据 CA/Browser Forum 的基准分阶段缩短。截至 2026 年 8 月的规定,2026 年 3 月 15 日以后签发的证书最长有效期为 200 天,2027 年 3 月 15 日以后为 100 天,2029 年 3 月 15 日以后为 47 天。配合证书更新一并重新生成密钥对才是理想的运维方式。应善用自动化工具 (Let's Encrypt 的 certbot、AWS Certificate Manager 等),避免人工更新出现遗漏。

安全存储:私钥应存放在 HSM (硬件安全模块) 或安全的密钥库中。以明文文件保存私钥是严重的安全风险。密钥一旦泄露,用该密钥保护的所有数据都会面临风险。

证书固定的风险:把特定的证书或公钥硬编码进应用程序的证书固定 (certificate pinning),作为中间人攻击的对策是有效的,但密钥轮换时若应用程序的更新赶不上,就会引发服务中断。Google Chrome 已于 2019 年 1 月 (Chrome 72) 移除对 HPKP (HTTP Public Key Pinning) 的支持,此后推荐改用 Certificate Transparency 日志进行监控。

后量子加密 (Post-Quantum Cryptography):量子计算机一旦实用化,Shor 算法就能在多项式时间内破解 RSA 与 ECC。NIST 于 2024 年 8 月公开了后量子加密的首批标准 ML-KEM (FIPS 203、原 CRYSTALS-Kyber)、ML-DSA (FIPS 204、原 CRYSTALS-Dilithium)、SLH-DSA (FIPS 205、原 SPHINCS+)。截至 2026 年 8 月,尚无公开资料显示存在能够实际破解 RSA 或 ECC 的量子计算机,但为了防范「先收割、以后再解密」(Harvest Now, Decrypt Later) 的攻击,对需要长期保存的机密数据,应开始考虑引入 TLS 的混合密钥交换 (传统的 ECDHE 与 ML-KEM 并用)。

常见误解

公开公钥很危险
公钥顾名思义就是用来公开的。用传统计算机从公钥推算私钥,无法在现实可行的时间内完成,因此广泛分发公钥不会损害安全性。只有私钥需要保护。
密钥越长越好
更长的密钥提高安全性但降低处理速度。按 NIST 的等价强度对应关系,ECC 256 位相当于 RSA 3072 位,ECC 224 位相当于 RSA 2048 位,ECC 用更短的密钥就能达到同等强度。算法选择与密钥长度的平衡才是关键。

公钥加密与对称加密对比

公钥加密 (非对称)

加密和解密使用不同密钥。无需事先共享密钥。处理速度较慢。用于密钥交换和数字签名。代表:RSA、ECC。

对称加密

加密和解密使用相同密钥。需要事先安全共享密钥。处理速度快。用于大量数据加密。代表:AES。

分享

相关术语

相关文章