2. 非对称加密基础:公钥与私钥概念、常见算法(RSA、ECC、SM2)、数学原理简介
2.1 核心概念:公钥与私钥
非对称加密(Asymmetric Cryptography)又称公钥密码学,其核心在于使用一对数学上相关但无法互相推导的密钥:公钥(Public Key) 和 私钥(Private Key)。
- 公钥:公开分发,用于加密数据或验证签名。任何人都可以获取。
- 私钥:必须严格保密,用于解密数据或生成签名。仅持有者知晓。
这一设计解决了对称加密中密钥分发的难题:通信双方无需事先协商一个共享密钥,只需交换公钥即可建立安全信道。
面试高频点: 非对称加密的“单向陷门函数”特性——正向计算(加密/验签)容易,逆向计算(解密/签名)在无密钥时极其困难。
2.2 常见算法对比
| 算法 | 数学基础 | 密钥长度(安全级别) | 主要用途 | 性能特点 |
|---|---|---|---|---|
| RSA | 大整数分解 | 2048 / 3072 / 4096 位 | 加密、数字签名、密钥交换 | 加密慢,签名验证较快;密钥生成慢 |
| ECC | 椭圆曲线离散对数 | 256 / 384 / 521 位 | 加密、数字签名(ECDSA)、密钥交换(ECDH) | 同等安全强度下密钥更短,计算更快 |
| SM2 | 椭圆曲线离散对数(国密标准) | 256 位 | 加密、数字签名、密钥交换 | 与 ECC 性能相当,符合中国商用密码标准 |
安全强度对照: RSA-2048 ≈ ECC-224 ≈ SM2-256;RSA-3072 ≈ ECC-256;RSA-15360 ≈ ECC-521。ECC 在同等安全级别下密钥长度仅为 RSA 的 1/10 左右。
2.3 数学原理简介
2.3.1 RSA:大整数分解难题
RSA 的安全性基于大整数分解的困难性。其核心步骤包括:
- 密钥生成:选择两个大素数 p 和 q,计算 n = p × q 和欧拉函数 φ(n) = (p-1)(q-1)。选择公钥指数 e(通常为 65537),计算私钥 d 满足 e × d ≡ 1 mod φ(n)。
- 加密:明文 m 转换为整数,计算密文 c = me mod n。
- 解密:使用私钥 d 计算 m = cd mod n。
攻击者若想从公钥 (n, e) 推导出私钥 d,必须分解 n 为 p 和 q,而大整数分解在计算上不可行。
2.3.2 ECC / SM2:椭圆曲线离散对数难题
ECC 和 SM2 的安全性基于椭圆曲线离散对数问题(ECDLP)。给定椭圆曲线上的基点 G 和公钥 Q = kG(k 为私钥),求解 k 在计算上不可行。
- SM2 曲线参数:使用国家密码管理局推荐的 256 位素数域上的椭圆曲线,曲线方程为 y² = x³ + ax + b,其中 a、b 为固定参数。
- 密钥生成:随机选择私钥 d(1 < d < n-1,n 为基点阶),计算公钥 P = dG。
- 加密:将明文编码为曲线上的点,结合随机数进行点乘和异或运算。
- 签名:SM2 签名算法基于 ECDSA 改进,使用双哈希和随机数保护。
面试避坑: 不要混淆 ECC 与 ECDH/ECDSA。ECC 是底层数学结构,ECDH 和 ECDSA 是基于 ECC 的密钥交换和签名协议。SM2 同时包含加密、签名和密钥交换三种功能。
2.4 非对称加密工作流程(SVG 图)
下图展示了非对称加密在安全通信中的典型流程:发送方使用接收方的公钥加密数据,接收方使用自己的私钥解密。
2.5 密钥管理要点
- 公钥分发:必须通过可信渠道(如数字证书、PKI)分发,防止中间人攻击。
- 私钥保护:私钥应存储在硬件安全模块(HSM)、安全飞地或密码学安全令牌中,避免明文存储。
- 密钥生命周期:定期更换密钥对,废弃密钥需安全销毁。
- 混合加密:实际通信中通常使用非对称加密交换对称密钥(会话密钥),再用对称加密加密大量数据,兼顾安全与性能。
面试加分项: 能够解释为什么 RSA 不适合加密大量数据(性能差、密文膨胀),以及 ECC 在移动端和 IoT 场景下的优势(密钥短、功耗低)。
2.6 常见面试追问
| 问题 | 核心考察点 |
|---|---|
| RSA 中 e 为什么常用 65537? | 费马数 F4,质数且二进制仅两个 1,计算效率高;安全性好 |
| ECC 相比 RSA 的优势? | 密钥短、计算快、带宽低、同等安全强度下更高效 |
| SM2 与 ECDSA 的区别? | SM2 使用双哈希、签名结构不同、曲线参数固定为国密标准 |
| 量子计算对非对称加密的影响? | Shor 算法可破解 RSA 和 ECC,需迁移至后量子密码(如格密码) |