一文读懂 RSA 加密:从数学原理到实际应用


一文读懂 RSA 加密:从数学原理到实际应用

在 HTTPS、电子签名、区块链等现代网络安全场景中,RSA 加密算法几乎无处不在。作为非对称加密的经典代表,它解决了对称加密(如 AES)中 “密钥传递不安全” 的核心痛点。但很多人提到 RSA 就联想到复杂的数学公式,其实只要抓住核心逻辑,理解起来并不难。

本文将从 “数学基础→密钥生成→加密解密→安全性原理” 四个维度,用通俗语言 + 实例拆解 RSA,让你不仅知其然,更知其所以然。

一、先搞懂 3 个核心数学概念(无公式恐惧)

RSA 的数学逻辑基于数论,但无需深入研究理论,只需掌握以下 3 个关键概念,就能理解后续所有步骤。

1. 质数与互质:RSA 的 “积木”

  • 质数(素数):只能被 1 和自身整除的大于 1 的整数(如 2、3、5、7、11…)。RSA 的安全根基,就建立在 “大质数的乘积难以分解” 这一特性上。
  • 互质:两个数的最大公约数(GCD)为 1,即除了 1 之外没有其他共同约数。比如 4 和 9 互质(GCD (4,9)=1),但 4 和 6 不互质(GCD (4,6)=2)。

2. 欧拉函数 φ(n):RSA 的 “桥梁”

欧拉函数 φ(n) 的定义很简单:小于 n 且与 n 互质的正整数的个数

在 RSA 中,n 是两个不同质数 p 和 q 的乘积(n=p×q),此时欧拉函数有一个 “简化公式”(无需逐个计数):
φ(n) = (p-1) × (q-1)

为什么?因为:

  • 质数 p 的欧拉函数 φ(p)=p-1(所有小于 p 的数都和 p 互质);
  • 若 p 和 q 是不同质数(必然互质),则 φ(p×q)=φ(p)×φ(q)(欧拉函数的乘法性质)。

举个例子:若 p=3,q=11,则 n=33,φ(33)=(3-1)×(11-1)=2×10=20。意思是 “小于 33 且与 33 互质的数有 20 个”(如 2、4、5、7…)。

3. 模逆:RSA 的 “钥匙配对器”

若满足 (e × d) mod φ(n) = 1,则称 d 是 e 关于 φ(n) 的 “模逆”。

通俗解释:e 乘以 d 的结果,除以 φ(n) 后余数是 1。比如 φ(n)=20,若 e=7,那么 d=3(因为 7×3=21,21 mod 20=1),即 3 是 7 关于 20 的模逆。

这里有个关键前提:只有当 e 和 φ(n) 互质时,e 的模逆 d 才存在—— 这是后续选择公钥 e 的核心依据。

二、RSA 核心三步:生成密钥→加密→解密(附实例)

为了让过程更直观,我们用 “小质数举例”(实际应用中质数是几百位的大整数,否则不安全),完整走一遍 RSA 的流程。

步骤 1:生成公钥(可公开)和私钥(需保密)

这是 RSA 的核心步骤,所有操作围绕 “生成一对匹配的密钥” 展开,共 4 小步:

  1. 选两个不同的大质数 p 和 q
    简化示例:选 p=3,q=11(实际中 p 和 q 由计算机随机生成,且长度≥100 位)。
  2. 计算 n = p × q
    n 是公钥和私钥的 “公共部分”,也是后续加密 / 解密的 “模”。
    示例:n=3×11=33。
  3. 计算欧拉函数 φ(n) = (p-1) × (q-1)
    示例:φ(33)=(3-1)×(11-1)=2×10=20。
  4. 选公钥 e,算私钥 d
    • 选 e:需满足两个条件:① 1 <e < φ(n);② e 与 φ(n) 互质。
      示例中 φ(n)=20,可选 e=7(7<20,且 GCD (7,20)=1,满足条件)。
    • 算 d:d 是 e 关于 φ(n) 的模逆,即满足 (e×d) mod φ(n) = 1
      示例中:找 d 使得 (7×d) mod 20=1,计算得 d=3(7×3=21,21 mod20=1)。

最终结果:

  • 公钥(可公开给任何人):(e=7, n=33)
  • 私钥(必须妥善保管,绝不可泄露):(d=3, n=33)

步骤 2:用公钥加密(明文→密文)

假设 A 要给 B 发送明文 m(需满足 m < n,若 m≥n 则分段加密),加密公式为:
密文c = (m^e) mod n

示例:A 要发送明文 m=5(5<33,无需分段),用 B 的公钥 (e=7, n=33) 加密:
c = (5^7) mod 33
计算过程:5^7=78125,78125 ÷33=2367 余 14 → 密文 c=14。
A 将密文 c=14 通过网络发给 B(即使被拦截,没有私钥也无法解密)。

步骤 3:用私钥解密(密文→明文)

B 收到密文 c 后,用自己的私钥 (d, n) 解密,解密公式为:
明文m = (c^d) mod n

示例:B 用私钥 (d=3, n=33) 解密密文 c=14:
m = (14^3) mod 33
计算过程:14^3=2744,2744 ÷33=83 余 5 → 明文 m=5,成功还原原始信息。

三、为什么 RSA 能成立?(数学本质)

很多人会疑惑:“为什么用公钥加密的内容,只有私钥能解密?” 核心是 “加密和解密的可逆性”,背后依赖一个数论定理:

对于任意整数 m(m <n),都满足 (m^e)^d ≡ m mod n,即 (m^e mod n)^d mod n = m

简单推导一下(不用记,理解逻辑即可):
因为 d 是 e 的模逆,所以 e×d = k×φ(n) + 1(k 是整数)。代入后:
m^(e×d) = m^(k×φ(n)+1) = (m^φ(n))^k × m

根据欧拉定理:若 m 与 n 互质,则 m^φ(n) ≡ 1 mod n。因此:
(m^φ(n))^k ≡ 1^k = 1 mod n → m^(e×d) ≡ 1×m = m mod n

这就证明了:加密后的密文 c,再经过 d 次幂取模,必然能还原出明文 m。

四、RSA 的安全性:为什么私钥很难被破解?

RSA 的安全基础是 **“大整数分解难题”**—— 这个 “难题” 是指:

  • 公钥中公开了 n,但 n 是两个大质数 p 和 q 的乘积(n=p×q);
  • 要破解私钥 d,必须先知道 φ(n),而 φ(n)=(p-1)(q-1),因此必须先分解 n 找到 p 和 q;
  • 当 p 和 q 是几百位的大质数时(如 2048 位或 4096 位),即使动用超级计算机,也无法在合理时间内分解 n。

举个直观例子:若 p 和 q 是 100 位质数,n 就是 200 位数字。要分解这个 200 位数字,即使全球所有超级计算机同时计算,也需要几百年甚至更久 —— 这就是 RSA 安全的核心逻辑。

五、RSA 的实际应用场景

RSA 虽安全,但计算效率较低(相比对称加密),因此实际应用中很少用它直接加密大量数据,而是用于以下核心场景:

1. 密钥交换(HTTPS 的核心)

在 HTTPS 通信中,客户端和服务器先通过 RSA 交换 “对称加密密钥”(如 AES 密钥):

  • 客户端用服务器的公钥加密 AES 密钥,发给服务器;
  • 服务器用私钥解密得到 AES 密钥;
  • 后续的网页内容、图片等数据,都用 AES 加密传输(兼顾 RSA 的安全性和 AES 的高效性)。

2. 数字签名(防篡改、防抵赖)

在电子合同、软件发布等场景中,RSA 用于 “数字签名”:

  • 发送方用自己的私钥对数据(如合同内容、软件哈希值)“签名”(相当于用私钥加密);
  • 接收方用发送方的公钥验证签名(相当于用公钥解密);
  • 若验证成功,说明数据未被篡改,且确实来自发送方(私钥唯一,无法抵赖)。

总结:RSA 的核心逻辑一句话讲清

RSA 本质是 “用数学上的单向难题(乘法易、分解难)构建非对称加密”:

  1. 用两个大质数生成公钥(e,n)和私钥(d,n);
  2. 公钥加密(m^e mod n),私钥解密(c^d mod n);
  3. 只要 p 和 q 足够大,就没人能通过 n 分解出 p 和 q,私钥就无法被破解。

作为现代网络安全的基石,RSA 的逻辑并不复杂 —— 关键是理解 “质数、欧拉函数、模逆” 这三个积木,以及 “大整数分解” 这个安全核心。希望本文能帮你真正读懂 RSA~


发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注