secubox-openwrt/package/secubox/zkp-hamiltonian/README.fr.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

4.6 KiB

ZKP Hamiltonian

🌐 Langues: English | Français | 中文

Bibliothèque de preuve à divulgation nulle de connaissance (ZKP) basée sur le problème du cycle hamiltonien (Blum 1986) avec transformation NIZK via l'heuristique de Fiat-Shamir.

CyberMind.FR / SecuBox — Version 0.1.0

Aperçu

Cette bibliothèque implémente un protocole de preuve à divulgation nulle de connaissance (ZKP) qui permet à un Prouveur de convaincre un Vérificateur qu'il connaît un cycle hamiltonien dans un graphe, sans révéler le cycle lui-même.

Propriétés de sécurité

  • Complétude : Un prouveur honnête avec connaissance de H convainc toujours le vérificateur
  • Solidité : Un tricheur échoue avec une probabilité >= 1 - 2^(-128)
  • Divulgation nulle : Le vérificateur n'apprend rien sur H

Compilation

Prérequis

  • CMake >= 3.16
  • OpenSSL (pour SHA3-256)
  • Compilateur C99

Commandes de compilation

mkdir build && cd build
cmake ..
make

# Exécuter les tests
ctest --output-on-failure

# Ou exécuter les tests individuellement
./test_crypto
./test_graph
./test_protocol
./test_nizk

Compilation OpenWrt

make package/zkp-hamiltonian/compile V=s

Utilisation

Outils CLI

Générer une paire de clés

zkp_keygen -n 50 -r 1.0 -o identity
# Crée : identity.graph (public), identity.key (SECRET !)

Générer une preuve

zkp_prover -g identity.graph -k identity.key -o auth.proof

Vérifier une preuve

zkp_verifier -g identity.graph -p auth.proof
# Code de sortie : 0=ACCEPTÉ, 1=REJETÉ, 2=ERREUR

API C

#include "zkp_hamiltonian.h"

// Générer une paire de clés
Graph G;
HamiltonianCycle H;
zkp_generate_graph(50, 1.0, &G, &H);

// Prouveur : générer une preuve
NIZKProof proof;
zkp_prove(&G, &H, &proof);

// Vérificateur : vérifier la preuve
ZKPResult result = zkp_verify(&G, &proof);
if (result == ZKP_ACCEPT) {
    // Authentifié !
}

Aperçu du protocole

  1. Configuration : Le prouveur génère (G, H) où H est un cycle hamiltonien dans G
  2. Génération de preuve :
    • Générer une permutation aléatoire pi
    • Calculer G' = pi(G)
    • S'engager sur chaque arête de G' en utilisant SHA3-256
    • Calculer le défi via Fiat-Shamir : c = H(G, G', engagements)
    • Si c=0 : révéler pi et tous les nonces (preuve d'isomorphisme)
    • Si c=1 : révéler pi(H) et les nonces des arêtes du cycle (preuve hamiltonienne)
  3. Vérification :
    • Recalculer le défi Fiat-Shamir
    • Vérifier que la réponse correspond aux engagements

Fichiers

zkp-hamiltonian/
├── include/
│   ├── zkp_types.h       # Définitions de types
│   ├── zkp_crypto.h      # Primitives cryptographiques
│   ├── zkp_graph.h       # Opérations sur les graphes
│   └── zkp_hamiltonian.h # API principale
├── src/
│   ├── zkp_crypto.c      # SHA3-256, engagements, RNG
│   ├── zkp_graph.c       # Manipulation de graphes
│   ├── zkp_prove.c       # Génération de preuve NIZK
│   ├── zkp_verify.c      # Vérification de preuve NIZK
│   └── zkp_serialize.c   # Sérialisation binaire
├── tests/
│   ├── test_crypto.c     # Tests des primitives crypto
│   ├── test_graph.c      # Tests des opérations sur graphes
│   ├── test_protocol.c   # Complétude/solidité du protocole
│   └── test_nizk.c       # Tests NIZK complets + benchmarks
├── tools/
│   ├── zkp_keygen.c      # CLI de génération de clés
│   ├── zkp_prover.c      # CLI de génération de preuves
│   └── zkp_verifier.c    # CLI de vérification de preuves
├── CMakeLists.txt
└── README.md

Configuration

Options de compilation (CMake)

Option Défaut Description
OPENWRT_BUILD OFF Activer les optimisations OpenWrt
BUILD_TESTS ON Compiler les exécutables de test
BUILD_TOOLS ON Compiler les outils CLI
BUILD_SHARED_LIBS OFF Compiler en bibliothèque partagée
ZKP_MAX_N 128 Nombre maximum de noeuds du graphe

Paramètres recommandés

Paramètre Recommandé Description
n (noeuds) 50-80 Taille du graphe
extra_ratio 0.5-1.5 Ratio d'arêtes de camouflage

Intégration SecuBox

Voir SECUBOX_INTEGRATION.md pour les détails sur :

  • Intégration avec secubox-auth
  • Protocole réseau (ZKP_HELLO, ZKP_PROOF, etc.)
  • Configuration UCI
  • Tableau de bord LuCI

Licence

GPL-2.0-or-later

Copyright (C) 2026 CyberMind.FR / SecuBox