Cryptology Academy · 课时

PKCS#1 v1.5 填充与 Bleichenbacher 攻击

了解针对 PKCS#1 v1.5 的自适应选择密文攻击

第 2 / 4 课13 个步骤

PKCS#1 v1.5 填充与 Bleichenbacher 攻击 是 CoddyKit 上的免费 Cryptology Academy 课时。 这是第 2 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Cryptology Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Cryptology Academy 课程共包含 4 节课。

欢迎

PKCS#1 v1.5 填充曾是 20 年间占主导地位的 RSA 填充标准。1998 年,丹尼尔·布莱肯巴赫证明它容易受到自适应选择密文攻击。

PKCS#1 v1.5 结构

格式:0x00 0x02 [随机非零字节] 0x00 [消息] 0x00 0x02 前缀表示加密填充(签名使用 0x00 0x01)。 随机字节可以防止确定性,并且不得为零。

为什么曾使用 PKCS#1 v1.5

PKCS#1 v1.5 由 RSA Security 于 1993 年设计,当时距离 IND-CCA2 安全性证明出现还很早。它加入了随机性和结构检查。从 1995 年起,它被广泛部署在 SSL/TLS 中。

布莱肯巴赫攻击

布莱肯巴赫(1998 年)发现:如果服务器通过错误消息或计时泄露 RSA 解密是否产生有效的 PKCS#1 v1.5 填充,攻击者就能通过约 100 万次查询解密任意 RSA 加密值。

预言机定义

“填充预言机”是任何能够区分“有效填充”和“无效填充”的侧信道。即使极其微小的计时差异或不同的错误消息,也会产生可被利用的预言机。

攻击机制

攻击者将目标密文 C 乘以 s^e mod n,并发送修改后的 C×s^e。如果服务器响应“有效填充”,说明 s 的选择正确。不断重复这一过程,可以逐步缩小可能的明文范围,直到恢复 M。

DROWN 攻击(2016 年)

DROWN 通过 SSLv2 利用了布莱肯巴赫攻击。与任何 SSLv2 服务器共享密钥的现代 TLS 服务器都容易受到攻击。攻击者利用 SSLv2 作为预言机,解密现代 TLS 的 RSA 密钥交换。33% 的 HTTPS 服务器受到影响。

ROBOT 攻击(2017 年)

ROBOT(布莱肯巴赫预言机威胁回归)在最流行的 10 个 TLS 实现中,有 7 个重新发现了计时预言机,其中包括思科、F5 和雷德韦尔的实现。布莱肯巴赫攻击至今仍然有效,因为正确实现防御非常困难。

恒定时间 RSA 解密

防御措施:无论填充是否有效,都始终继续解密;对于无效填充,返回完全相同的响应。使用恒定时间代码,防止出现计时差异。正确实现这一点很困难。

为什么 OAEP 取代了 v1.5

OAEP 包含一种带陷门的单向哈希,可证明 IND-CCA2 安全性(能够抵抗选择密文攻击)。即使存在填充预言机,OAEP 的随机结构也会使预言机查询无法提供有效信息。

旧系统仍在使用 v1.5

尽管 OAEP 已经存在,PKCS#1 v1.5 仍然用于旧版支付系统、较早的 Java 应用和某些 PKI 实现。TLS 1.3 完全移除了 RSA 密钥交换,从而消除了这一攻击面。

快速检查

在布莱肯巴赫攻击中,“填充预言机”是什么?

回顾

布莱肯巴赫攻击是实用密码分析领域的里程碑。接下来我们将研究 OAEP——取代 v1.5 的、具有可证明安全性的填充方案。
免费开始

用 AI 导师学习 Cryptology Academy — 免费

在浏览器中编写并运行真实代码,获得全天候 AI 导师的即时帮助,并在网页或应用中继续学习。

课程
67
课程
261

常见问题解答

「PKCS#1 v1.5 填充与 Bleichenbacher 攻击」课时是免费的吗?

是的 — 「PKCS#1 v1.5 填充与 Bleichenbacher 攻击」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Cryptology Academy 课程的其余内容,请升级到 CoddyKit PRO。 Cryptology Academy 课程共包含 4 节课。

「PKCS#1 v1.5 填充与 Bleichenbacher 攻击」这节课中我会学到什么?

了解针对 PKCS#1 v1.5 的自适应选择密文攻击 你通过在浏览器中直接运行的动手代码来练习 Cryptology Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Cryptology Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 Cryptology Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 2 节课,共 4 节。

「PKCS#1 v1.5 填充与 Bleichenbacher 攻击」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 Cryptology Academy 课中编写并运行代码吗?

能。每节 Cryptology Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 教科书式 RSA 及其不安全原因
  2. PKCS#1 v1.5 填充与 Bleichenbacher 攻击
  3. OAEP:最优非对称加密填充
  4. 用于数字签名的 RSA-PSS
← 返回 Cryptology Academy