← [ BACK_TO_NOTES ]

非对称密码学(Public-Key Cryptography)

非对称密码学使用数学关联的公钥/私钥对构造公钥加密、数字签名与密钥协商等不同原语;公钥加密、私钥解密只描述其中一种能力,不能概括整个公钥密码体系。

#evergreen #concept #crypto

[!info] related notes

非对称密码学(Public-Key Cryptography)

一句话定义

非对称密码学使用一对数学关联的 key:

  • Public Key:可以公开;
  • Private Key:必须由持有者保护。

但这对 key 可以用于不同 cryptographic primitive。

最重要的边界是:

Public-Key Cryptography 不等于 Public-Key Encryption。

公钥密码体系至少包含:

  • public-key encryption;
  • digital signature;
  • key agreement / key establishment。

这些原语的目标和算法并不完全相同。

它解决了什么问题

对称密码要求通信双方事先共享 secret key。

公钥密码学通过 public information + private secret + hard mathematical problem,构造新的信任与密钥建立能力。

它没有消除信任问题,而是改变了信任建立方式。

1. Public-Key Encryption

公钥加密解决 confidentiality:

sender → encrypt with recipient public key → ciphertext

recipient → decrypt with recipient private key → plaintext

只有拥有对应 private key 的主体才能完成正常解密。

典型方案包括 RSA-OAEP 等标准化 public-key encryption scheme。

不要只写“RSA = 公钥加密私钥解密”,因为 RSA 只是数学基础;真正安全性来自具体 padding、encoding 与 protocol。

2. Digital Signature

数字签名主要解决:

  • authenticity;
  • integrity;
  • 某些 non-repudiation 场景中的证据基础。

基本方向是:

signer → sign with private key → signature

verifier → verify with public key → valid / invalid

这里不是“用私钥加密,公钥解密”。

签名和加密是不同 primitive。

例如:

  • RSA-PSS 是 signature scheme;
  • Ed25519 是 signature scheme;
  • ECDSA 是 signature scheme。

它们的安全定义和 encryption 不同。

3. Key Agreement

Diffie-Hellman / ECDH 的核心目标不是把一段明文加密。

它们让双方通过公开交换信息,导出共享 secret。

Alice private + Bob public → shared secret

Bob private + Alice public → same shared secret

然后再经过 KDF 生成实际 session keys。

所以 Diffie-Hellman 属于 key agreement,不是普通 public-key encryption。

为什么实际通信通常使用 Hybrid Encryption

非对称算法通常不适合直接加密大量业务数据。

现实系统更常见:

Public-key crypto → establish / wrap a symmetric key

Symmetric AEAD → encrypt bulk data

原因包括:

  • 对称密码性能更高;
  • 更适合大规模数据;
  • AEAD 适合 record/message encryption;
  • 公钥算法负责 key establishment / identity。

TLS 就是典型混合密码系统,而不是全程使用 RSA 加密网页内容。

公钥为什么可以公开

安全设计要求 public key 已知时,攻击者仍无法在可行计算成本内恢复 private key。

不同算法家族依赖不同数学困难问题和安全假设。

RSA

与大整数分解相关。

Diffie-Hellman 类

与有限群上的离散对数问题相关。

ECC

与椭圆曲线群上的离散对数问题相关。

不要笼统把所有公钥密码都写成完全相同的数学构造。

公钥真实性问题

即使 encryption 算法安全,如果攻击者把自己的 public key 冒充成 Bob 的,仍可能发生 MITM。

所以还需要回答:

这个 public key 到底属于谁?

常见解决方式:

  • PKI / certificate;
  • trust root;
  • certificate pinning;
  • out-of-band fingerprint verification;
  • Web of Trust 等。

详见 PKI。

Public Key 不等于 Identity

拿到一个 public key 只能说明某个 private key 与它数学对应。

不能自动证明:

  • 这是某个人;
  • 这是某个域名;
  • 这是某家公司。

身份绑定必须来自额外 trust mechanism。

对称 vs 非对称

维度对称密码非对称密码
keyshared secretpublic/private pair
bulk encryption非常适合通常不直接承担
key distribution需要安全共享public key 可公开,但需验证归属
digital signature不提供公钥可验证签名模型可以
key agreement需要已有共享秘密或其他机制可以构造
性能通常更高通常更昂贵

这不是谁更安全的排名;两者承担不同角色,现代协议通常组合使用。

RSA 不是整个非对称密码学

RSA 可以构造 encryption scheme 和 signature scheme。

ECC 更像一组椭圆曲线数学构造基础,可以进一步构造 ECDH、ECDSA、EdDSA 系列等不同协议/算法。

因此比较 RSA vs ECC 时,必须先明确是在比较:

  • key agreement;
  • signature;
  • encryption;
  • key size;
  • implementation ecosystem。

Key Size 不能跨算法直接比较

256-bit ECC key 不能因为数字小于 2048-bit RSA 就直接得出 ECC 更弱。

不同数学问题的攻击复杂度不同,key size 只能在对应算法和安全强度模型中解释。

Private Key 泄漏意味着什么

Private Key 泄漏的影响取决于用途。

Signature key

攻击者可能伪造新签名。

Decryption key

攻击者可能解密能够由该 key 解密的数据。

Key agreement key

是否能恢复历史 session,还取决于协议是否具有 Forward Secrecy。

因此不能把“私钥泄漏 = 所有历史通信全部可解密”作为统一结论。

Forward Secrecy

现代 TLS 常用 ephemeral Diffie-Hellman / ECDHE。

目标之一是长期身份 private key 未来泄漏,也不自动恢复过去每个 session 的临时密钥。

这进一步说明:身份签名 key 与 session encryption key 不是同一个对象。

常见误区

公钥加密,私钥解密;反过来就是签名

过度简化且容易误导。Signature 有自己的 scheme 和安全定义。

非对称密码比对称密码更安全

没有这种通用排名,它们承担不同角色。

Public key 可以公开,所以不需要保护

Public key 不需要保密,但需要真实性与完整性;被替换的 public key 会破坏身份信任。

非对称密码可以直接加密任意大文件

通常不会这样设计,现代系统使用 hybrid encryption。

学习检查

  1. Public-Key Cryptography 与 Public-Key Encryption 有什么区别?
  2. 加密、签名、密钥协商分别解决什么安全目标?
  3. 为什么“私钥加密、公钥解密 = 签名”是危险心智模型?
  4. Diffie-Hellman 为什么属于 key agreement 而不是普通 encryption?
  5. 为什么真实系统通常采用 hybrid encryption?
  6. Public key 不需要保密,为什么仍然必须验证真实性?
  7. RSA key size 与 ECC key size 为什么不能直接按数字大小比较?
  8. Forward Secrecy 为什么能减少长期 private key 泄漏对历史 session 的影响?
  9. 给 TLS 场景区分 certificate public key、ephemeral key agreement、symmetric session key 各自职责。
创建于 2026/1/6 更新于 2026/9/30
Digital Biome
Access

键盘导航

j / k / ↑ / ↓
选择对象
Enter / o
打开选择
/ 或 Ctrl+K
全站搜索
i / f / 1–4
筛选当前列表
g → h / l / p / t / a
首页 / 笔记 / 项目 / 工具 / About
r → 1–9
打开所选对象的关联
u
返回上一页
Esc
关闭浮层 / 取消命令;输入框内清空文本