RSA 加密实验室 STATION 03 · 现实应用
STATION 03 · 约 12 分钟

走出实验室:
RSA 在真实世界的一天

实验室里你用两位素数加解密了一句话。真实世界的 RSA 每天服务几十亿次网页浏览、支付、软件更新和电子合同——但它的用法和实验室有几处关键不同。这一站讲清它每天都在干什么活、为什么不直接拿它加密大文件、以及量子计算机是不是它的末日。

前置阅读:原理详解 · 动手实验室

JOB 01

HTTPS 里,RSA 只是「递钥匙的」

你访问 https:// 网站时,绝大部分数据其实不是 RSA 加密的,而是对称加密(如 AES)。RSA 的出场只有一瞬间——握手阶段用来安全地传递对称会话钥匙

  1. 打招呼浏览器与服务器互致问候,交换「我会哪些加密算法」。
  2. 出示证书服务器递上数字证书(内含公钥),由证书机构背书「这确实是本网站」。
  3. 递钥匙浏览器生成一把随机对称钥匙,用服务器公钥加密后发过去——全世界只有真服务器能解开。
  4. 换挡飞驰此后全部通信改用那把对称钥匙做 AES 加密,快如流水。

非对称加密又慢又贵(大数乘方),对称加密又快又稳(但递钥匙是死结)。所以现实方案是:用 RSA 解开「递钥匙」的死结,用对称加密跑真正的数据——这就是「混合加密」。实验室里一次加密一个字母,现实里 RSA 一次只用几毫秒,干最值钱的那一件事。

(补充一条现状:如今 TLS 1.3 的主流握手已改用更高效的 ECDHE 交换钥匙、RSA 主要退守签名验证岗位——但「非对称解决钥匙配送」的剧本没有变,详见下文签名部分。)

JOB 02

数字签名:把 RSA 反过来用

还记得实验室里那句「用 d 加密、e 解密也成立」吗?把它反过来,就得到了数字签名——用私钥处理,用公钥验证

  1. 盖章对文件计算摘要(哈希值),再用私钥处理它,附在文件末尾——这就是签名。
  2. 验章任何人用公钥解开签名得到摘要 A,再自己对文件算一遍摘要 B。A = B ⇒ 文件确实出自私钥持有者,且一字未改。

为什么先哈希再签?因为 RSA 运算慢,直接签大文件太奢侈;摘要只有几十字节,签它等于签了整份文件。这套机制支撑着:软件更新校验(防止更新包被篡改)、电子合同、代码签名、区块链交易、JWT 令牌……凡是需要证明「这是本人发的、没被改过」的场景。

加密与签名,是同一对钥匙的两种用法:加密 = 用收件人的公钥上锁(保机密);签名 = 用自己的私钥盖章(证身份)。现实中每个人都有两对钥匙:一对「给我上锁」,一对「替我盖章」。

JOB 03

实验室 vs 工业 RSA:三处关键升级

环节实验室版本工业版本为什么必须升级
明文处理逐字母加密整块处理 + OAEP 随机填充逐字加密会泄露模式(相同字母→相同密文),攻击者可重放、拼接密文。填充引入随机性,同样的话每次密文都不同
密钥尺寸两位数素数2048 位以上,素数由密码学随机数生成抵御「拆 n」;随机性防止密钥重复
使用方式直接加密内容只递钥匙 / 只签名,数据交给 AES性能 + 前向保密(钥匙泄露不影响历史通信)

一条从业者忠告:理解原理请像本站这样亲手算;写产品请永远使用 OpenSSL、平台密码库等成熟实现。自研加密的坑几乎全在填充、时序泄露、随机数这些「原理之外」的细节里。

FUTURE

量子威胁与后量子时代

实验室里 Eve 用「试除」拆 n,要跑 √n 次。1994 年 Shor 提出一种量子算法,理论上能在多项式时间内完成大数分解——一旦足够强大的量子计算机出现,RSA 的墙将被直接绕过。这就是密码学界认真讨论「后量子密码(PQC)」的原因。

RSA 的故事还没写完,但它的作者们当年或许没想到:一篇 1977 年的数学论文,会在半个世纪里守护人类绝大多数机密,还催生了一门为「量子时代」预备的全新数学军备。数学的安全,永远是进行时。

FAQ

常见疑问

HTTPS 网站证书里的「RSA 2048 位」指的是什么?

指证书里服务器公钥的模数 n 是 2048 比特。你在浏览器点地址栏小锁 → 查看证书,能看到「公钥算法:RSA (2048 bits)」——就是原理篇里那个 n 的真实尺寸。

有了 RSA,为什么密码学还在用对称加密?

性能差千倍以上:AES 加密 1GB 视频轻松自如,RSA 做同样的事要慢到无法接受。两者是分工而非竞争:RSA 管身份与钥匙,AES 管数据洪流。

私钥文件(.pem / .key)为什么那么长?

里面不只是 d:还存着 p、q、指纹、证书链等多种冗余字段,用于加速运算和管理。保护它的最好方式是:不进代码仓库、不进聊天记录、开启硬件保护(如 YubiKey)。

椭圆曲线加密(ECC)和 RSA 是竞争关系吗?

是同一思路(正易反难)的不同数学实现:ECC 用「椭圆曲线上的离散对数」当墙,256 位 ECC 的强度约等于 3072 位 RSA,又小又快。现代系统正逐步从 RSA 迁移到 ECC,但教学与兼容场景 RSA 依然无处不在。