3. 密码学基础(二):非对称加密算法(RSA、ECC)的原理、特点与应用场景
非对称加密(Asymmetric Cryptography)是现代密码学最重要的里程碑之一。与对称加密使用单一密钥不同,非对称加密使用一对数学上相关但无法互相推导的密钥:公钥(Public Key) 和 私钥(Private Key)。公钥可以公开分发,私钥必须严格保密。这一特性彻底解决了对称加密中密钥分发的安全难题,成为 HTTPS 握手协议(TLS/SSL)的基石。
3.1 非对称加密的核心思想与数学基础
非对称加密的安全性建立在“单向陷门函数”(Trapdoor One-way Function)之上:正向计算(加密)非常容易,逆向计算(解密)在没有“陷门信息”(即私钥)时极其困难。目前主流的非对称算法主要依赖以下两类数学难题:
- 大整数分解问题(IFP):给定两个大素数 p 和 q 的乘积 n = p × q,已知 n 求 p 和 q 在计算上不可行。RSA 算法基于此。
- 椭圆曲线离散对数问题(ECDLP):在椭圆曲线上给定基点 G 和标量倍点 kG,求标量 k 在计算上不可行。ECC 算法基于此。
3.2 RSA 算法:原理、特点与应用
RSA(Rivest-Shamir-Adleman)是 1977 年提出的第一个实用的非对称加密算法,也是目前应用最广泛的公钥密码体制之一。
3.2.1 RSA 算法原理
RSA 的核心操作包括密钥生成、加密和解密三个步骤:
- 密钥生成:
- 随机选择两个大素数 p 和 q,计算 n = p × q。n 的二进制长度即为 RSA 密钥长度(如 2048 位)。
- 计算欧拉函数 φ(n) = (p-1)(q-1)。
- 选择一个整数 e(通常为 65537),满足 1 < e < φ(n) 且 gcd(e, φ(n)) = 1。
- 计算 e 关于 φ(n) 的模逆元 d,满足 e × d ≡ 1 (mod φ(n))。
- 公钥为 (n, e),私钥为 (n, d)。
- 加密:将明文 m 转换为整数(0 ≤ m < n),计算密文 c = m^e mod n。
- 解密:计算明文 m = c^d mod n。
3.2.2 RSA 特点与安全强度
| 特性 | 说明 |
|---|---|
| 安全性基础 | 大整数分解问题(IFP)。目前 2048 位 RSA 被认为是安全的,768 位已被破解,1024 位已不推荐。 |
| 运算速度 | 加密/解密速度远慢于对称加密(约慢 1000-10000 倍)。私钥操作(解密/签名)比公钥操作(加密/验签)更慢。 |
| 密钥长度 | 为达到 128 位对称加密的安全强度,RSA 需要 3072 位密钥,导致密钥体积大、证书链臃肿。 |
| 应用场景 | HTTPS 握手中的密钥交换(RSA Key Exchange)、数字签名(RSA-SHA256)、数字证书(X.509)。 |
3.3 ECC 算法:原理、特点与应用
椭圆曲线密码学(Elliptic Curve Cryptography, ECC)是 1985 年由 Neal Koblitz 和 Victor Miller 独立提出的公钥密码体制。ECC 在提供相同安全强度的前提下,密钥长度远小于 RSA,已成为现代密码学的主流方向。
3.3.1 ECC 算法原理
ECC 基于椭圆曲线上的点群运算。一条椭圆曲线通常由 Weierstrass 方程定义:y² = x³ + ax + b(其中 4a³ + 27b² ≠ 0)。
- 密钥生成:
- 选择一条椭圆曲线 E 和一个基点 G(阶为 n)。
- 随机选择一个整数 d(1 ≤ d < n)作为私钥。
- 计算 Q = d × G(椭圆曲线上的标量乘法),Q 即为公钥。
- 加密(以 ECIES 为例):
- 发送方生成临时密钥对 (k, R = k×G),计算共享点 S = k×Q(Q 为接收方公钥)。
- 使用 KDF(密钥派生函数)从 S 中导出对称密钥,加密明文。
- 发送 (R, 密文)。
- 解密:
- 接收方计算共享点 S = d×R(d 为私钥),使用相同的 KDF 导出对称密钥,解密密文。
3.3.2 ECC 特点与安全强度
| 特性 | 说明 |
|---|---|
| 安全性基础 | 椭圆曲线离散对数问题(ECDLP)。目前 256 位 ECC(如 secp256r1)提供与 3072 位 RSA 相当的安全强度。 |
| 运算速度 | 私钥操作(解密/签名)比 RSA 快得多;公钥操作(加密/验签)也更快。密钥生成速度远快于 RSA。 |
| 密钥长度 | 256 位 ECC 密钥即可达到 128 位安全级别,密钥体积小,证书链更紧凑。 |
| 应用场景 | HTTPS 握手中的密钥交换(ECDHE)、数字签名(ECDSA)、数字证书(ECC 证书)、区块链(比特币/以太坊地址生成)。 |
3.4 RSA 与 ECC 对比分析
下表从多个维度对比 RSA 和 ECC,帮助理解为何 ECC 正在逐步取代 RSA 成为现代密码学的主流选择:
| 对比维度 | RSA | ECC |
|---|---|---|
| 数学难题 | 大整数分解(IFP) | 椭圆曲线离散对数(ECDLP) |
| 128 位安全强度密钥长度 | 3072 位 | 256 位 |
| 密钥生成速度 | 慢(需要生成大素数并计算模逆) | 快(随机数 + 标量乘法) |
| 签名/解密速度 | 慢(大指数模幂运算) | 快(点乘运算) |
| 验证/加密速度 | 快(小指数 e=65537) | 较快 |
| 证书体积 | 大(公钥 3072 位 + 签名) | 小(公钥 256 位 + 签名) |
| 抗量子计算 | 脆弱(Shor 算法可高效分解) | 脆弱(Shor 算法可高效求解 ECDLP) |
| HTTPS 应用现状 | 仅用于证书签名(TLS 1.3 已废弃 RSA 密钥交换) | 密钥交换(ECDHE)+ 签名(ECDSA)+ 证书 |
3.5 非对称加密在 HTTPS 中的典型应用流程
在 HTTPS 的 TLS 握手过程中,非对称加密主要承担两个关键角色:身份认证和密钥协商。下图展示了基于 ECDHE 密钥交换的 TLS 1.3 握手简化流程:
- 身份认证:步骤②中,服务器使用 ECDSA 签名证明其拥有与证书公钥对应的私钥,客户端通过 CA 证书链验证签名的合法性。
- 前向安全性(Forward Secrecy):步骤③④中,ECDHE 密钥交换使用临时密钥对,即使服务器长期私钥泄露,历史会话的对称密钥也无法被破解。
- 混合加密:非对称加密(ECDHE + ECDSA)仅用于握手阶段的身份认证和密钥协商,后续大量数据传输使用对称加密(AES-GCM),兼顾安全与性能。
3.6 应用场景总结与选型建议
在实际的 HTTPS 配置和密码学工程中,RSA 和 ECC 各有其适用场景:
| 场景 | 推荐算法 | 原因 |
|---|---|---|
| HTTPS 证书(X.509) | ECC(ECDSA) | 证书体积小、握手延迟低、安全强度高。主流 CA 已全面支持 ECC 证书。 |
| TLS 密钥交换 | ECDHE | 提供前向安全性,性能优于 DHE。TLS 1.3 强制使用。 |
| 兼容性优先(老旧客户端) | RSA | 部分老旧系统(如 Windows XP、Java 6)对 ECC 支持不完善,RSA 证书兼容性更好。 |
| 代码签名 | RSA 或 ECC | 两者均可。RSA 签名验证速度快(小指数),适合高频验证场景。 |
| 物联网/嵌入式设备 | ECC | 密钥短、计算资源消耗低、存储占用小,非常适合资源受限环境。 |