docs(luci-app-zkp): Add README with usage and protocol docs

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
CyberMind-FR 2026-02-24 10:33:12 +01:00
parent b60d7fd009
commit a5fc33c8bc

View File

@ -0,0 +1,122 @@
# LuCI ZKP Hamiltonian Dashboard
Web interface for Zero-Knowledge Proof cryptography based on the Hamiltonian Cycle problem (Blum 1986).
## Features
- **Key Generation** - Create graph + Hamiltonian cycle pairs
- **Proof Creation** - Generate NIZK proofs using Fiat-Shamir heuristic
- **Verification** - Validate proofs with ACCEPT/REJECT result
- **Key Management** - List, view, and delete saved keys
## Screenshot
```
┌─────────────────────────────────────────────────────┐
│ ZKP Hamiltonian Cryptography [v1.0.0] │
├─────────────────────────────────────────────────────┤
│ Saved Keys: 3 Max Nodes: 50 Hash: SHA3-256 │
├─────────────────────────────────────────────────────┤
│ 🔑 Generate New Key │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ Name │ │ Nodes │ │ Density │ [Generate] │
│ │ my_key │ │ 20 │ │ 0.8 │ │
│ └──────────┘ └──────────┘ └──────────┘ │
├─────────────────────────────────────────────────────┤
│ 🗂️ Saved Keys │
│ ┌─────────┬───────┬────────┬─────────┬──────────┐ │
│ │ Name │ Nodes │ Graph │ Created │ Actions │ │
│ ├─────────┼───────┼────────┼─────────┼──────────┤ │
│ │ test_1 │ 20 │ 1.2 KB │ 10:15 │ P V X │ │
│ │ demo │ 30 │ 2.1 KB │ 09:30 │ P V X │ │
│ └─────────┴───────┴────────┴─────────┴──────────┘ │
└─────────────────────────────────────────────────────┘
```
## Menu Location
`Status > ZKP Cryptography`
## Dependencies
- `zkp-hamiltonian` - CLI tools (zkp_keygen, zkp_prover, zkp_verifier)
- OpenSSL (for SHA3-256)
## RPCD Methods
| Method | Parameters | Description |
|--------|------------|-------------|
| `status` | - | Library version, key count, paths |
| `keygen` | nodes, density, name | Generate graph + cycle |
| `prove` | name | Create NIZK proof |
| `verify` | name | Verify proof → ACCEPT/REJECT |
| `list_keys` | - | List all saved keys |
| `delete_key` | name | Delete key and files |
| `get_graph` | name | Get graph metadata |
## Usage
### Generate a Key
1. Enter a name for the key (e.g., `my_secret`)
2. Select node count (4-50, default 20)
3. Choose edge density (0.5-1.0, default 0.8)
4. Click **Generate**
### Create and Verify Proof
1. Click **Prove** on a saved key
2. Wait for proof generation
3. Click **Verify** to validate
4. Result shows **✅ ACCEPT** or **❌ REJECT**
## File Storage
```
/var/lib/zkp/
├── graphs/ # Binary graph files (.graph)
├── keys/ # Hamiltonian cycle files (.key)
└── proofs/ # Generated proofs (.proof)
```
## Protocol
The ZKP protocol proves knowledge of a Hamiltonian cycle in a graph without revealing the cycle:
1. **Prover** has graph G and secret Hamiltonian cycle H
2. **Prover** creates random permutation π, computes G' = π(G)
3. **Prover** commits to G' edges using SHA3-256
4. **Challenge** derived via Fiat-Shamir (hash of G, G', commits)
5. **Response** reveals either:
- Challenge=0: Permutation π (proves G ≅ G')
- Challenge=1: Cycle in G' (proves H exists)
6. **Verifier** checks commitments and response
Security: ~2^-128 soundness error with SHA3-256.
## Building
```bash
# In OpenWrt buildroot
make package/luci-app-zkp/compile V=s
# Install
opkg install luci-app-zkp_*.ipk
```
## Quick Deploy (Development)
```bash
# Deploy to router
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'
```
## License
GPL-2.0-or-later
## Author
SecuBox / CyberMind.FR