1.1 非对称加密概述:公钥与私钥体系
非对称加密(Asymmetric Cryptography),又称公钥密码学(Public-Key Cryptography),是现代密码学中最重要的革命性突破之一。它解决了对称加密中密钥分发与管理的核心难题,为数字签名、密钥交换、安全通信等场景提供了基础支撑。
1.1.1 公钥与私钥体系
在非对称加密体系中,每个通信实体拥有一对数学上关联但功能分离的密钥:
- 公钥(Public Key):公开分发,任何人均可获取。用于加密数据或验证数字签名。
- 私钥(Private Key):秘密保存,仅所有者持有。用于解密数据或生成数字签名。
公钥与私钥的核心特性是:从公钥推导出私钥在计算上不可行。这一性质保证了即使公钥被广泛传播,私钥的安全性依然不受威胁。
关键概念:非对称加密中,加密与解密使用不同的密钥。发送方使用接收方的公钥加密消息,只有持有对应私钥的接收方才能解密。这一机制彻底消除了对称加密中需要预先共享密钥的安全信道需求。
1.1.2 对称加密与非对称加密对比
对称加密与非对称加密在密钥管理、性能、安全属性等方面存在显著差异。下表从多个维度进行系统对比:
| 对比维度 | 对称加密 | 非对称加密 |
|---|---|---|
| 密钥数量 | 通信双方共享同一密钥 | 每个实体拥有一对密钥(公钥+私钥) |
| 密钥分发 | 需要安全信道预先分发密钥 | 公钥可通过公开信道分发,无需安全信道 |
| 密钥规模 | n 个实体需 n(n-1)/2 个密钥对 | n 个实体仅需 n 个密钥对 |
| 加密速度 | 快(硬件加速可达 Gbps 级) | 慢(通常比对称加密慢 1000 倍以上) |
| 典型算法 | AES、ChaCha20、SM4 | RSA、ECC(ECDSA、ECDH)、SM2 |
| 主要用途 | 批量数据加密 | 密钥交换、数字签名、身份认证 |
| 安全基础 | 混淆与扩散(置换-代换) | 数学难题(大整数分解、离散对数) |
| 抗量子攻击 | 部分算法受影响(如 AES-256 仍安全) | RSA/ECC 均受 Shor 算法威胁 |
工程实践建议:实际系统中通常采用混合加密(Hybrid Encryption)方案——使用非对称加密安全地交换对称密钥,再使用对称加密高效地加密实际数据。例如 TLS 协议中,握手阶段使用 ECDHE 或 RSA 交换会话密钥,记录层使用 AES-GCM 加密应用数据。
1.1.3 非对称加密的数学基础:单向函数与陷门函数
非对称加密的安全性建立在特定的数学难题之上。这些难题的核心是单向函数(One-way Function)与陷门函数(Trapdoor Function)的概念。
单向函数
单向函数是指满足以下两个性质的函数 f : X → Y:
- 易于计算:对于任意输入 x ∈ X,可以在多项式时间内计算出 f(x)。
- 难于求逆:对于任意输出 y ∈ Y,在多项式时间内找到满足 f(x) = y 的 x 在计算上不可行。
单向函数的存在是密码学安全性的基础,但尚未被严格证明。目前使用的单向函数均基于计算复杂性假设,即某些数学问题在经典计算机上不存在多项式时间算法。
陷门函数
陷门函数是单向函数的一种特殊形式,它额外包含一个陷门信息(Trapdoor)。拥有陷门信息时,求逆变得容易;没有陷门信息时,求逆仍然困难。这正是非对称加密的核心机制:
- 公钥:定义陷门函数的正向计算规则(加密)。
- 私钥:提供陷门信息,使逆向计算(解密)可行。
安全警告:所有基于单向函数和陷门函数的非对称加密算法,其安全性都依赖于尚未被证明的数学假设。一旦出现突破性算法(如量子计算机上的 Shor 算法),RSA、ECC 等主流算法将面临根本性威胁。后量子密码学(Post-Quantum Cryptography)正是为应对这一挑战而发展。
经典数学难题
当前主流非对称加密算法依赖以下三类数学难题:
| 难题类型 | 数学描述 | 典型算法 | 安全强度(比特) |
|---|---|---|---|
| 大整数分解 (IFP) |
给定大合数 n = p × q,求其素因子 p, q | RSA、Rabin | 2048 位 RSA ≈ 112 比特安全 |
| 离散对数 (DLP) |
给定素数 p 和生成元 g,已知 g^x mod p,求 x | DSA、ElGamal、DH | 2048 位 DLP ≈ 112 比特安全 |
| 椭圆曲线离散对数 (ECDLP) |
给定椭圆曲线上的点 G 和 Q = kG,求标量 k | ECDSA、ECDH、SM2、EdDSA | 256 位 ECC ≈ 128 比特安全 |
性能与安全权衡:ECC 在同等安全强度下所需的密钥长度远小于 RSA。例如,128 比特安全级别下,RSA 需要 3072 位密钥,而 ECC 仅需 256 位密钥。这使得 ECC 在资源受限设备(如 IoT 终端、智能卡)中具有显著优势,也是当前非对称加密优化的重点方向。