secubox-openwrt/package/secubox/zkp-hamiltonian/README.zh.md
CyberMind-FR ccfb58124c docs: Add trilingual documentation (French and Chinese translations)
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>
2026-03-20 10:00:18 +01:00

169 lines
3.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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