systemslibrarian/crypto-lab-vrf-gate
GitHub: systemslibrarian/crypto-lab-vrf-gate
基于浏览器的 VRF 与 VDF 密码学教育演示,严格遵循 RFC 9381 标准,直观展示可验证随机性与延迟机制在区块链共识中的工作原理。
Stars: 0 | Forks: 0
# crypto-lab-vrf-gate
## 它是什么
本演示结合了 ECVRF-P256-SHA256 和基于 RSA 风格群 (group) 的 Wesolowski VDF,展示了如何使公共随机性兼具可验证性和延迟性。VRF 部分旨在解决以下问题:证明确定性的伪随机输出确实来自于特定的公钥和输入,且无需泄露私钥。VDF 部分旨在解决以下问题:在最终随机数被揭晓前强制引入一段连续的延迟,同时确保验证过程的成本远低于评估过程。其安全模型是非对称且可公开验证的,使用了 WebCrypto 和精确的 BigInt 算术,但不具备抗量子安全性。
此处的 VRF 是**严格遵循字节级 RFC 9381 标准**的(密码套件为 ECVRF-P256-SHA256-TAI):采用 try-and-increment 哈希到曲线 (hash-to-curve) 方法、RFC 6979 确定性随机数 (nonce)、`s = k + c·x` 响应,以及 SEC1 压缩点。已知答案测试 (`npm run check:rfc9381`) 能够重现该标准官方附录 B.1 中的测试向量(test vector)—— H、k、U、V、π 和 β 全部匹配——并且会在每次部署前的 CI 中运行,因此这里的输出可以被任何合规的验证器接受。此处的 VDF 是一个特意设计的“玩具级”小型 Wesolowski 结构,以提升浏览器内的运行速度;生产环境中的 VDF 会使用 2048 位 RSA 模数或未知阶的类群 (class groups)。每个展示区都带有一个分层的 **“查看数学原理”** 面板,可以实时展示这些中间值。
## 何时使用
- 用于讲解权益证明系统中的验证者选择或随机信标。该演示展示了为什么 VRF 能提供唯一且可验证的贡献,而 VDF 则能延迟战略性预测。
- 用于将确定性的公钥随机性与普通哈希进行对比。VRF 展示区表明,相同的密钥和输入始终会生成相同的可验证输出,这是普通哈希无法限制为单一生产者所做到的。
- 用于解释 commit-reveal 协议中的最后揭晓偏差 (last-reveal bias)。信标模拟展示了保留(提交)会如何改变 RANDAO 分支,以及为什么 VDF 会将其转变为一次盲选。
- 用于检查玩具级 VDF 的耗时与证明验证之间的权衡。VDF 展示区在浏览器中直接提供了延迟参数滑块、进度条和证明验证路径。
- 请勿将其用作生产环境的加密库。本实现仅出于教育目的,在 VDF 中使用了玩具级的 RSA 风格模数,并非抗量子或经过强化的安全部署包。
## 在线演示
[在线演示](https://systemslibrarian.github.io/crypto-lab-vrf-gate/)
在浏览器中,您可以生成并验证 VRF 输出,通过实时的延迟进度条运行 VDF,并模拟带有可选恶意保留(提交)行为的 RANDAO 风格信标轮次。该演示提供了 VRF 输入框、VDF 延迟滑块、验证者数量滑块以及恶意验证者开关,方便用户更改参数并直接观察证明流程。由于本演示关注的是可验证随机性和延迟,而非机密性,因此不包含加密/解密路径。
## 如何在本地运行
```
git clone https://github.com/systemslibrarian/crypto-lab-vrf-gate
cd crypto-lab-vrf-gate
npm install
npm run dev
```
无环境变量。
## 验证
```
npm run check # phase logic checks + RFC 9381 known-answer test
npm run e2e # headless Chromium: drives the real UI + axe accessibility scan
```
`npm run check` 证明了 VRF 能够重现 RFC 9381 附录 B.1 的测试向量。`npm run e2e` 会构建应用,在无头 Chromium 中启动它,执行 VRF 的计算/验证/篡改和 VDF 的评估/验证操作,断言在 360px 视口下没有控制台错误和水平溢出,并在深色和浅色主题下运行 [axe-core](https://github.com/dequelabs/axe-core) 无障碍扫描(WCAG 2.0/2.1 A + AA)——目前违规项为零。这两项测试都会在每次部署前的 CI 中运行。
## Crypto-Lab 套件的一部分
这是 [systemslibrarian.github.io/crypto-lab](https://systemslibrarian.github.io/crypto-lab/) 上 60 多个在线浏览器演示之一 —— 涵盖了从 Atbash(公元前 600 年)到 NIST FIPS 203/204/205(2024 年)的内容。
*"所以,你们或吃或喝,无论做什么,都要为荣耀神而行。" — 哥林多前书 10:31*
标签:MITM代理, Web前端, 区块链, 可验证延迟函数, 可验证随机函数, 密码学, 手动系统调用, 教育演示, 数据可视化, 自动化攻击