systemslibrarian/crypto-lab-corrupted-oracle
GitHub: systemslibrarian/crypto-lab-corrupted-oracle
基于浏览器的密码学教学演示,并行展示三种 DRBG 构造并实时复现 Dual_EC_DRBG 后门攻击,直观证明统计随机性测试无法检测结构性后门。
Stars: 0 | Forks: 0
# 被腐化的预言机
**标准已被攻破。这就是证据。**
## 这是什么
Corrupted Oracle 是一个基于浏览器的演示,展示了三个确定性随机位生成器 (DRBG):**HMAC-DRBG** (NIST SP 800-90A §10.1.2)、**ChaCha20-DRBG** (基于 RFC 8439) 和 **Dual\_EC\_DRBG** (SP 800-90A 附录 A.1) —— 包括使用 P-256 椭圆曲线算术对 Dual\_EC\_DRBG 后门进行的实时实现。它表明,一个结构上被植入后门的 CSPRNG 可以通过所有标准的统计随机性测试,而了解曲线点 P 和 Q 之间秘密关系的攻击者可以恢复内部状态并预测所有未来输出。其安全模型是对称密钥 DRBG 构造,后门利用了嵌入在生成器常量中的非对称(椭圆曲线)陷门。
## 何时使用
- **教学 Dual\_EC\_DRBG 后门** —— 演示在浏览器中运行真实的 EC 数学运算,让学生可以实时看到状态恢复的发生,而不仅仅是阅读相关内容。
- **证明为什么统计测试是不够的** —— 所有四个 NIST SP 800-22 测试(频率、块频率、游程、最长游程)都能通过被植入后门的输出,证明通过测试并不意味着生成器是安全的。
- **并排比较 DRBG 构造** —— HMAC-DRBG、ChaCha20-DRBG 和 Dual\_EC\_DRBG 并行生成输出,因此您可以看到具有截然不同的安全属性的相同统计特征。
- **阐明密码学标准中的供应链信任** —— 该演示具体地展示了一个标准机构发布受损常量意味着什么。
- **不要在生产环境中使用此项目的任何代码** —— Dual\_EC\_DRBG 实现出于教育目的被故意植入了后门,且演示用的 DRBG 并未针对实际使用进行强化。
## 在线演示
**[在线演示 →](https://systemslibrarian.github.io/crypto-lab-corrupted-oracle/)**
从所有三个 DRBG 生成随机输出,对每个 DRBG 运行 NIST SP 800-22 统计测试,并触发 Dual\_EC\_DRBG 后门攻击,以观看攻击者暴力破解 2¹⁶ 个候选对象并恢复内部状态。您可以为任何生成器重新设置种子,并查看比较所有三种算法输出的位热图。
## 如何在本地运行
```
git clone https://github.com/systemslibrarian/crypto-lab-corrupted-oracle.git
cd crypto-lab-corrupted-oracle
npm install
npm run dev
```
## 验证密码学
不要只听信演示的一面之词 —— 其数学运算已由自动化测试套件进行了验证:
```
npm test
```
该套件根据权威来源验证了以下内容:
- **HMAC-DRBG** 复现了每一个 NIST CAVS 14.3 `HMAC_DRBG(SHA-256)` 的已知答案向量。
- **ChaCha20** 复现了 RFC 8439 §2.3.2 密钥流测试向量。
- **P-256** 算术是正确的:生成器具有正确的阶 (`n·G = ∞`),并且标准生成器 P 和已发布的常量 Q 都位于曲线上。
- **陷门成立**:`d·Q = P`,其中 `d = e⁻¹ mod n` 且 `Q = e·P` —— 这正是将截获的输出还原为内部状态的关系。
- **端到端攻击**从两个输出块中恢复生成器的状态,并准确地预测其未来输出。
关于速度的说明:后门搜索的成本确实很低 —— 在优化的原生代码中,它可以在不到一秒钟的时间内完成。本项目在浏览器中使用纯 `BigInt` 从头开始运行相同的椭圆曲线数学运算(编写时注重清晰度而非速度),因此实时攻击需要几十秒的时间,您可以实时观察每一个候选对象的倒下。无论哪种方式,掌握此秘密的攻击者所付出的代价都是微乎其微的。
## Crypto-Lab 套件的一部分
本项目是 Crypto-Lab 集合中的一个模块 —— 请在 [systemslibrarian.github.io/crypto-lab/](https://systemslibrarian.github.io/crypto-lab/) 查看所有演示。
*所以,你们或吃或喝,或做任何事,都要为神的荣耀而行。 —— 哥林多前书 10:31*
标签:伪随机数生成器, 后门分析, 密码学, 手动系统调用, 教育演示, 数据可视化, 暗色界面, 椭圆曲线密码学, 自动化攻击