systemslibrarian/crypto-lab-timing-oracle
GitHub: systemslibrarian/crypto-lab-timing-oracle
这是一个基于浏览器的交互式教学工具,通过实时测量展示了密码学实现中存在的时序侧信道漏洞及其恒定时间防御策略。
Stars: 0 | Forks: 0
# crypto-lab-timing-oracle
Live demo: https://systemslibrarian.github.io/crypto-lab-timing-oracle/
Timing Attack · Constant-Time · HMAC · RSA · Cache-Timing
## 1. 简介
`crypto-lab-timing-oracle` 是一个演示字符串比较、WebCrypto HMAC-SHA-256 验证、玩具 RSA 算术以及缓存敏感内存访问模式中时序侧信道行为的浏览器演示。它通过实时浏览器时序测量,并排展示了易受攻击和恒定时间的实现。本演示中的核心密码学原语是 HMAC-SHA-256 和 RSA,而时序面板则展示了实现选择如何泄露依赖于秘密的信息。HMAC 是对称原语,RSA 是非对称原语,两者均在侧信道威胁模型下进行评估,在此模型中攻击者观察时序差异。
## 2. 使用场景
- 使用它来教授为什么 MAC 和秘密检查需要恒定时间比较,因为它通过可重复的测量使时序泄露变得可见。
- 在 HMAC 和 RSA 实现的安全编码研讨会中使用它,因为它在一个地方汇集了易受攻击和防御性的模式。
- 在验证浏览器相关加密代码的威胁建模假设时使用它,因为它演示了即使在计时器精度降低的情况下,时序观察仍可能揭示模式。
- 不要将其用作生产级密码学库,因为它是一个包含故意设计的易受攻击代码路径的教育演示。
## 3. Live Demo
Live demo: https://systemslibrarian.github.io/crypto-lab-timing-oracle/
该演示允许您针对字符串比较、HMAC 验证、RSA 指数行为和缓存访问时序运行时序实验。您可以更改目标秘密字符串、攻击者猜测字符串、消息和伪造 MAC 十六进制值等控件,然后触发基准运行以比较易受攻击和恒定时间的结果。迭代次数和实验参数内置于每个面板按钮操作中,而不是作为自由格式输入公开。
## 4. 本地运行方式
```
git clone https://github.com/systemslibrarian/crypto-lab-timing-oracle.git
cd crypto-lab-timing-oracle
npm install
npm run dev
```
无需环境变量。
## 5. Crypto-Lab 套件的一部分
本演示是位于 https://systemslibrarian.github.io/crypto-lab/ 的更大型 Crypto-Lab 系列的一部分。
So whether you eat or drink or whatever you do, do it all for the glory of God. — 1 Corinthians 10:31
标签:HMAC, MITM代理, RSA, Web Crypto API, 侧信道攻击, 信息泄露, 前端安全, 加密演示, 加密算法, 字符串比较, 安全教学, 密码学安全, 性能测量, 恒定时间编程, 数据可视化, 时序攻击, 漏洞演示, 缓存攻击, 自动化攻击, 防御编程