[English](README.md) | [Francais](README.fr.md) | [中文](README.zh.md) # LuCI ZKP 哈密顿仪表板 基于哈密顿回路问题的零知识证明密码学 Web 界面(Blum 1986)。 ## 功能特性 - **密钥生成** - 创建图 + 哈密顿回路对 - **证明创建** - 使用 Fiat-Shamir 启发式生成 NIZK 证明 - **验证** - 验证证明并返回接受/拒绝结果 - **密钥管理** - 列出、查看和删除已保存的密钥 ## 截图 ``` ┌─────────────────────────────────────────────────────┐ │ ZKP 哈密顿密码学 [v1.0.0] │ ├─────────────────────────────────────────────────────┤ │ 已保存密钥: 3 最大节点: 50 哈希: SHA3-256 │ ├─────────────────────────────────────────────────────┤ │ 🔑 生成新密钥 │ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │ │ 名称 │ │ 节点 │ │ 密度 │ [生成] │ │ │ my_key │ │ 20 │ │ 0.8 │ │ │ └──────────┘ └──────────┘ └──────────┘ │ ├─────────────────────────────────────────────────────┤ │ 🗂️ 已保存密钥 │ │ ┌─────────┬───────┬────────┬─────────┬──────────┐ │ │ │ 名称 │ 节点 │ 图 │ 创建 │ 操作 │ │ │ ├─────────┼───────┼────────┼─────────┼──────────┤ │ │ │ test_1 │ 20 │ 1.2 KB │ 10:15 │ P V X │ │ │ │ demo │ 30 │ 2.1 KB │ 09:30 │ P V X │ │ │ └─────────┴───────┴────────┴─────────┴──────────┘ │ └─────────────────────────────────────────────────────┘ ``` ## 菜单位置 `状态 > ZKP 密码学` ## 依赖项 - `zkp-hamiltonian` - CLI 工具(zkp_keygen、zkp_prover、zkp_verifier) - OpenSSL(用于 SHA3-256) ## RPCD 方法 | 方法 | 参数 | 描述 | |------|------|------| | `status` | - | 库版本、密钥数量、路径 | | `keygen` | nodes, density, name | 生成图 + 回路 | | `prove` | name | 创建 NIZK 证明 | | `verify` | name | 验证证明 → 接受/拒绝 | | `list_keys` | - | 列出所有已保存密钥 | | `delete_key` | name | 删除密钥和文件 | | `get_graph` | name | 获取图元数据 | ## 使用方法 ### 生成密钥 1. 输入密钥名称(如 `my_secret`) 2. 选择节点数量(4-50,默认 20) 3. 选择边密度(0.5-1.0,默认 0.8) 4. 点击 **生成** ### 创建和验证证明 1. 在已保存的密钥上点击 **证明** 2. 等待证明生成 3. 点击 **验证** 进行验证 4. 结果显示 **接受** 或 **拒绝** ## 文件存储 ``` /var/lib/zkp/ ├── graphs/ # 二进制图文件 (.graph) ├── keys/ # 哈密顿回路文件 (.key) └── proofs/ # 生成的证明 (.proof) ``` ## 协议 ZKP 协议在不泄露回路的情况下证明对图中哈密顿回路的知识: 1. **证明者**拥有图 G 和秘密哈密顿回路 H 2. **证明者**创建随机置换 π,计算 G' = π(G) 3. **证明者**使用 SHA3-256 对 G' 的边进行承诺 4. **挑战**通过 Fiat-Shamir 导出(G、G'、承诺的哈希) 5. **响应**揭示: - 挑战=0:置换 π(证明 G ≅ G') - 挑战=1:G' 中的回路(证明 H 存在) 6. **验证者**检查承诺和响应 安全性:使用 SHA3-256 时 ~2^-128 健全性错误。 ## 构建 ```bash # 在 OpenWrt buildroot 中 make package/luci-app-zkp/compile V=s # 安装 opkg install luci-app-zkp_*.ipk ``` ## 快速部署(开发) ```bash # 部署到路由器 scp htdocs/luci-static/resources/view/zkp/overview.js root@192.168.255.1:/www/luci-static/resources/view/zkp/ scp root/usr/libexec/rpcd/luci.zkp root@192.168.255.1:/usr/libexec/rpcd/ ssh root@192.168.255.1 'killall rpcd; /etc/init.d/rpcd start' ``` ## 许可证 GPL-2.0-or-later ## 作者 SecuBox / CyberMind.FR