算法原理

1. 核心原理

基于大整数分解难题

  • 给定两个素数 ,求 很简单(单向容易)。
  • 给定 ,分解出 极难(逆向困难)。

注意, 只在生成密钥时使用,在加解密时使用

2. 算法流程 (KeyGen, Enc, Dec)

Step 1: 密钥生成 (KeyGen)

  1. 选择素数:选取两个大素数
  2. 计算模数
  3. 计算欧拉函数
  4. 选择公钥指数
  5. 计算私钥指数
    • 的逆元。
类型包含内容可见性
公钥 (Public Key)🌍 公开
私钥 (Private Key) (以及 )🔒 保密

Step 2: 加密 (Encryption)

发送方使用接收方的公钥

Step 3: 解密 (Decryption)

接收方使用自己的私钥

3. 安全性根基

攻击者若想破解 ,必须解方程 。 要解此方程,必须知道 。 要知道 ,必须对 进行质因数分解 RSA 的安全性依赖于大整数分解的困难性。

4. 常用小结论 (做题用)

  • 若题目给出 ,求 :使用扩展欧几里得算法
  • 必须小于
  • 常取 65537 (),因为它也是素数且二进制只有两个1,加密运算快。

证明

1. 证明目标

证明 RSA 加解密的可逆性,即: 代入 ,等价于证明:

2. 关键已知条件

核心公式

  1. ( 为互异素数)
  2. 展开指数:

3. 证明步骤 (分情况讨论)

由于欧拉定理要求底数与模数互质,故需分两种情况。

情况 1: 互质 ()

思路

直接使用欧拉定理

情况 2: 不互质 ()

思路

此时欧拉定理失效。 策略:利用 ,分别证明在 下成立,再通过 CRT 合并。 假设 的倍数,即

Step 1: 证明模 成立 因为 的倍数,显而易见:

Step 2: 证明模 成立 因为 的倍数,故 一定不是 的倍数。 。 根据费马小定理

Step 3: 合并结论 结合 (1) 和 (2):

因为 ,由模运算性质(或中国剩余定理): 即:

证毕。