Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

订阅源联系隐私© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
工具/GitHubGitHub/systemslibrarian/crypto-lab-merkle-proofs
哈希分析密码学学习与教育精选资源学习路径与课程实验室与实践
GitHubsystemslibrarian/crypto-lab-merkle-proofs

crypto-lab-merkle-proofs

基于浏览器的Merkle树演示 — 构建树、生成包含证明、逐个哈希重新计算根哈希,并重演RFC 6962第二原像和CVE-2012-2459攻击。真正的SHA-256。无需后端。

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
查看仓库网站
601天前尚未审核

crypto-lab-merkle-proofs

它是什么

这是一个 Merkle 树 与 Merkle 包含证明 的交互式演示,基于浏览器 WebCrypto API 的 SHA-256 构建。Merkle 树将一组数据块哈希成单一的根哈希,该根哈希一次性承诺了所有数据块;包含证明则是一小串兄弟哈希,让任何人都能从单个叶子重新推导出该根。其安全模型完全基于哈希:它依赖 SHA-256 的抗碰撞性和抗第二原像性,不涉及任何密钥或签名。哈希遵循 RFC 6962 的域分离(leaf = SHA-256(0x00 ∥ data),node = SHA-256(0x01 ∥ left ∥ right)),这正是该演示中第二原像防御真实有效而非流于形式的原因。它是一个教学工具,而非生产级库。

它与 crypto-lab-merkle-vault 的定位关系

本目录中有两个实验涉及 Merkle 树,它们不可互换。本实验关注的是证明语义:可信根必须来自何处、每一步所哈希的确切字节、RFC 9162 基于索引的验证、一致性证明及其所捕获的历史攻击、页面上被攻破的第二原像与 CVE-2012-2459 构造,以及一个固定的真实证书透明度条目,对照 Google 的 Argon 日志进行验证。 crypto-lab-merkle-vault 关注的是结构:用父子连接线绘制的树、逐层遍历单个证明并在运行哈希上升时点亮相应节点,以及在顶部逐字节断言重算根与承诺根相等。若想了解什么是 Merkle 树以及一次攀爬如何运作,请从那里开始;若想了解一个证明能让你相信什么、不能让你相信什么,请到这里来。

何时使用它

  • 以低成本证明某个元素属于一个大型承诺集合。 一个证明是 ⌈log₂ n⌉ 个哈希,因此可以证明单笔交易存在于一个包含数百万笔交易的区块中,而无需发送整个区块。
  • 对照可信根检测篡改。 如果你已持有根,就可以验证任意叶子+证明,并拒绝任何无法重算得到该根的内容。
  • 为轻客户端提供完整性而无需完整状态。 SPV 钱包和无状态客户端对照区块头的根检查成员资格,而不是下载全部内容。
  • 使日志可验证地仅追加。 证书透明度正是使用了这个 RFC 6962 构造。
  • 不要用 Merkle 证明来证明非成员资格或顺序,除非该树专门是排序/稀疏 Merkle 树——普通的包含证明对缺失内容一无所知,而未做域分离构建的树则容易受到第二原像伪造攻击。

在线演示

systemslibrarian.github.io/crypto-lab-merkle-proofs

实时添加或删除数据块以构建树,选择任意叶子生成其包含证明,然后进行验证——仅根据该叶子及其兄弟哈希重新计算根。你可以逐步执行或动画演示每次重算一个哈希的过程(观察运行中的哈希沿树向上攀升),在任意步骤展开**“显示字节”以查看确切的 SHA-256 原像(叶子为 0x00 ∥ data,节点为 0x01 ∥ L ∥ R),篡改叶子或翻转任意证明步骤中的一位,观察验证结果翻转为 REJECTED,并拖动滑块查看证明在多达 2³⁰ 个叶子时仍保持对数复杂度(还可构建真实的 256–4,096 叶子树)。一个信任模型演示直接呈现经典误解:提供叶子、证明和根的证明者会产生一个能通过验证的三元组——却什么也证明不了。两个安全演示让你开启/关闭 RFC 6962 域分离,使第二原像伪造先成功、后失败,并比较 Bitcoin 的奇数节点复制与 RFC 6962 的提升,以复现 CVE-2012-2459 根碰撞。一致性(仅追加)证明有独立的可视化——旧树以阴影显示在新树内部,并标记证明的子树根——外加三种历史篡改攻击(重写、删除、重排),证明均能捕获。最后,页面验证一个真实的证书透明度条目**:Google Argon2026h1 日志(28 亿份证书)中索引 1,234,567,890 处的一枚固定 Let's Encrypt 证书,使用 RFC 9162 基于索引的验证以 32 个哈希证明其已被包含——与实验其余部分使用相同的代码路径。学习目标、先预测后揭示的提示、自测测验、术语表工具提示、回顾表以及延伸阅读支持主动学习;**“复制此树的链接”**可为任意树状态生成深链接,便于用于幻灯片或作业。

如何在本地运行

git clone https://github.com/systemslibrarian/crypto-lab-merkle-proofs
cd crypto-lab-merkle-proofs
npm install
npm run dev

没有环境变量。使用 npm test 运行测试套件(RFC 6962 测试向量、证明往返、篡改拒绝、第二原像攻击/防御、一致性证明、针对独立参考实现的模糊测试,以及固定的真实世界 CT 证明)。

npm run test:a11y 运行浏览器门禁(Playwright)。e2e/claims.spec.ts 驱动真实页面,并根据页面打印的内容重新推导每一个判定——仅当重新计算出的根与显示的受信任根相等时才为 INCLUDED,仅当打印出的两个根相等时才为 ROOTS COLLIDE,效率标题来自其自身的算术——并遍历每条篡改路径(叶子、证明位、日志重写/删除/重排、CT 证书位翻转),以断言其达到拒绝、指明原因并恢复。e2e/a11y.spec.ts 是 axe-core WCAG A/AA 扫描。两者都在每次 Pages 部署前的 CI 中运行。

用它教学

参见 TEACHING.md 获取讲师指南:50 分钟的课程流程、讨论问题、每个部分旨在打破的误解,以及作业扩展。

Crypto-Lab 套件的一部分

位于 systemslibrarian.github.io/crypto-lab 的 170+ 个实时浏览器演示之一 —— 涵盖从 Atbash(公元前 600 年)到 NIST FIPS 203/204/205(2024 年)。


"所以,你们或吃或喝,无论做什么,都要为荣耀神而行。" —— 哥林多前书 10:31

下载工具