算法原理
1. 核心原理
基于大整数分解难题。
- 给定两个素数 ,求 很简单(单向容易)。
- 给定 ,分解出 极难(逆向困难)。
注意, 只在生成密钥时使用,在加解密时使用 。
2. 算法流程 (KeyGen, Enc, Dec)
Step 1: 密钥生成 (KeyGen)
- 选择素数:选取两个大素数 。
- 计算模数:。
- 计算欧拉函数:。
- 选择公钥指数 :
- 计算私钥指数 :
- 即 是 模 的逆元。
| 类型 | 包含内容 | 可见性 |
|---|---|---|
| 公钥 (Public Key) | 🌍 公开 | |
| 私钥 (Private Key) | (以及 ) | 🔒 保密 |
Step 2: 加密 (Encryption)
发送方使用接收方的公钥。
Step 3: 解密 (Decryption)
接收方使用自己的私钥。
3. 安全性根基
攻击者若想破解 ,必须解方程 。 要解此方程,必须知道 。 要知道 和 ,必须对 进行质因数分解。 RSA 的安全性依赖于大整数分解的困难性。
4. 常用小结论 (做题用)
- 若题目给出 ,求 :使用扩展欧几里得算法。
- 必须小于 。
- 常取 65537 (),因为它也是素数且二进制只有两个1,加密运算快。
证明
1. 证明目标
证明 RSA 加解密的可逆性,即: 代入 ,等价于证明:
2. 关键已知条件
核心公式
- ( 为互异素数)
- 展开指数:
3. 证明步骤 (分情况讨论)
由于欧拉定理要求底数与模数互质,故需分两种情况。
情况 1: 与 互质 ()
思路
直接使用欧拉定理 。
情况 2: 与 不互质 ()
思路
此时欧拉定理失效。 策略:利用 ,分别证明在 和 下成立,再通过 CRT 合并。 假设 是 的倍数,即 。
Step 1: 证明模 成立 因为 是 的倍数,显而易见:
Step 2: 证明模 成立 因为 且 是 的倍数,故 一定不是 的倍数。 。 根据费马小定理:。
Step 3: 合并结论 结合 (1) 和 (2):
因为 ,由模运算性质(或中国剩余定理): 即:
证毕。