Add complete French (fr) and Chinese (zh) translations for all documentation: - Root files: README, CHANGELOG, SECURITY, BETA-RELEASE - docs/: All 16 core documentation files - DOCS/: All 19 deep-dive documents including embedded/ and archive/ - package/secubox/: All 123+ package READMEs - Misc: secubox-tools/, scripts/, EXAMPLES/, config-backups/, streamlit-apps/ Total: 346 translation files created Each file includes language switcher links for easy navigation between English, French, and Chinese versions. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
169 lines
3.9 KiB
Markdown
169 lines
3.9 KiB
Markdown
# ZKP Hamiltonian
|
||
|
||
:globe_with_meridians: **语言:** [English](README.md) | [Français](README.fr.md) | 中文
|
||
|
||
基于哈密顿回路问题(Blum 1986)的零知识证明(ZKP)库,通过 Fiat-Shamir 启发式实现 NIZK 转换。
|
||
|
||
**CyberMind.FR / SecuBox** — 版本 0.1.0
|
||
|
||
## 概述
|
||
|
||
该库实现了一个零知识证明(ZKP)协议,允许证明者向验证者证明其知道图中的哈密顿回路,而无需透露回路本身。
|
||
|
||
### 安全属性
|
||
|
||
- **完备性**:诚实的证明者拥有 H 的知识时总能说服验证者
|
||
- **可靠性**:欺骗者失败的概率 >= 1 - 2^(-128)
|
||
- **零知识性**:验证者不会了解到关于 H 的任何信息
|
||
|
||
## 构建
|
||
|
||
### 前提条件
|
||
|
||
- CMake >= 3.16
|
||
- OpenSSL(用于 SHA3-256)
|
||
- C99 编译器
|
||
|
||
### 构建命令
|
||
|
||
```bash
|
||
mkdir build && cd build
|
||
cmake ..
|
||
make
|
||
|
||
# 运行测试
|
||
ctest --output-on-failure
|
||
|
||
# 或单独运行测试
|
||
./test_crypto
|
||
./test_graph
|
||
./test_protocol
|
||
./test_nizk
|
||
```
|
||
|
||
### OpenWrt 构建
|
||
|
||
```bash
|
||
make package/zkp-hamiltonian/compile V=s
|
||
```
|
||
|
||
## 使用方法
|
||
|
||
### CLI 工具
|
||
|
||
#### 生成密钥对
|
||
|
||
```bash
|
||
zkp_keygen -n 50 -r 1.0 -o identity
|
||
# 创建:identity.graph(公开)、identity.key(保密!)
|
||
```
|
||
|
||
#### 生成证明
|
||
|
||
```bash
|
||
zkp_prover -g identity.graph -k identity.key -o auth.proof
|
||
```
|
||
|
||
#### 验证证明
|
||
|
||
```bash
|
||
zkp_verifier -g identity.graph -p auth.proof
|
||
# 退出码:0=接受,1=拒绝,2=错误
|
||
```
|
||
|
||
### C API
|
||
|
||
```c
|
||
#include "zkp_hamiltonian.h"
|
||
|
||
// 生成密钥对
|
||
Graph G;
|
||
HamiltonianCycle H;
|
||
zkp_generate_graph(50, 1.0, &G, &H);
|
||
|
||
// 证明者:生成证明
|
||
NIZKProof proof;
|
||
zkp_prove(&G, &H, &proof);
|
||
|
||
// 验证者:验证证明
|
||
ZKPResult result = zkp_verify(&G, &proof);
|
||
if (result == ZKP_ACCEPT) {
|
||
// 已认证!
|
||
}
|
||
```
|
||
|
||
## 协议概述
|
||
|
||
1. **设置**:证明者生成 (G, H),其中 H 是 G 中的哈密顿回路
|
||
2. **证明生成**:
|
||
- 生成随机排列 pi
|
||
- 计算 G' = pi(G)
|
||
- 使用 SHA3-256 对 G' 中的每条边进行承诺
|
||
- 通过 Fiat-Shamir 计算挑战:c = H(G, G', 承诺)
|
||
- 如果 c=0:揭示 pi 和所有 nonce(同构证明)
|
||
- 如果 c=1:揭示 pi(H) 和回路边的 nonce(哈密顿证明)
|
||
3. **验证**:
|
||
- 重新计算 Fiat-Shamir 挑战
|
||
- 验证响应是否匹配承诺
|
||
|
||
## 文件结构
|
||
|
||
```
|
||
zkp-hamiltonian/
|
||
├── include/
|
||
│ ├── zkp_types.h # 类型定义
|
||
│ ├── zkp_crypto.h # 密码学原语
|
||
│ ├── zkp_graph.h # 图操作
|
||
│ └── zkp_hamiltonian.h # 主 API
|
||
├── src/
|
||
│ ├── zkp_crypto.c # SHA3-256、承诺、RNG
|
||
│ ├── zkp_graph.c # 图操作
|
||
│ ├── zkp_prove.c # NIZK 证明生成
|
||
│ ├── zkp_verify.c # NIZK 证明验证
|
||
│ └── zkp_serialize.c # 二进制序列化
|
||
├── tests/
|
||
│ ├── test_crypto.c # 密码学原语测试
|
||
│ ├── test_graph.c # 图操作测试
|
||
│ ├── test_protocol.c # 协议完备性/可靠性
|
||
│ └── test_nizk.c # 完整 NIZK 测试 + 基准测试
|
||
├── tools/
|
||
│ ├── zkp_keygen.c # 密钥生成 CLI
|
||
│ ├── zkp_prover.c # 证明生成 CLI
|
||
│ └── zkp_verifier.c # 证明验证 CLI
|
||
├── CMakeLists.txt
|
||
└── README.md
|
||
```
|
||
|
||
## 配置
|
||
|
||
### 构建选项(CMake)
|
||
|
||
| 选项 | 默认值 | 描述 |
|
||
|------|--------|------|
|
||
| `OPENWRT_BUILD` | OFF | 启用 OpenWrt 优化 |
|
||
| `BUILD_TESTS` | ON | 构建测试可执行文件 |
|
||
| `BUILD_TOOLS` | ON | 构建 CLI 工具 |
|
||
| `BUILD_SHARED_LIBS` | OFF | 构建共享库 |
|
||
| `ZKP_MAX_N` | 128 | 最大图节点数 |
|
||
|
||
### 推荐参数
|
||
|
||
| 参数 | 推荐值 | 描述 |
|
||
|------|--------|------|
|
||
| n(节点) | 50-80 | 图大小 |
|
||
| extra_ratio | 0.5-1.5 | 诱饵边比例 |
|
||
|
||
## SecuBox 集成
|
||
|
||
详见 `SECUBOX_INTEGRATION.md`:
|
||
- 与 `secubox-auth` 集成
|
||
- 网络协议(ZKP_HELLO、ZKP_PROOF 等)
|
||
- UCI 配置
|
||
- LuCI 仪表板
|
||
|
||
## 许可证
|
||
|
||
GPL-2.0-or-later
|
||
|
||
Copyright (C) 2026 CyberMind.FR / SecuBox
|