
Legion è un fabric di autenticazione Zero-Knowledge progettato per la privacy.
Autenticazione Zero-Knowledge reale con firme ad anello dei dispositivi legate all'hardware
Legion è un sistema di autenticazione zero-knowledge senza password che dimostra che sei autorizzato senza rivelare chi sei.
Autenticati usando solo la tua impronta digitale + frase di recupero di 24 parole (come MetaMask). Niente nomi utente, niente password, niente segreti lato server.
| Proprietà | Garanzia |
|---|---|
| Autenticazione | Senza password (BIP-39 + impronta digitale) |
| Anonimato dell'utente | 1 su 2^20 (1.048.576) |
| Anonimato del dispositivo | 1 su 2^10 (1.024) per utente |
| Errore di solidità | 2^-128 |
| Sistema di prova | Halo2 PLONK (setup trasparente) |
| Derivazione delle credenziali | Blake3 (seed BIP-39) |
| Binding hardware | WebAuthn Level 2 (TPM/Secure Enclave) |
| Multi-dispositivo | Massimo 2 dispositivi per account |
| Limitazione delle richieste | 5 tentativi/ora |
| Revoca dei dispositivi | Blacklist istantanea |
git clone https://github.com/deadends/legion.git cd legion
chmod +x scripts/install.sh && ./scripts/install.sh
scripts\install.bat
**Tutto qui!** Apri http://localhost nel tuo browser.
### Cosa viene installato
- ✅ Redis (archiviazione sessioni)
- ✅ Legion Server (verificatore di prove ZK)
- ✅ Frontend (client WASM)
- ✅ Nginx (reverse proxy)
**Prestazioni**: Registrazione ~5s, Autenticazione ~2min (generazione della prova k=14)
---
### Configurazione manuale (senza Docker)
<details>
<summary>Clicca per espandere l'installazione manuale</summary>```bash
# 1. Install Redis
# macOS: brew install redis && redis-server
# Ubuntu: sudo apt install redis && redis-server
# Windows: https://redis.io/docs/install/install-redis/install-redis-on-windows/
# 2. Run server (terminal 1)
cd legion-server
cargo run --release --features redis
# 3. Build frontend (terminal 2)
cd wasm-client
wasm-pack build --target web --release
python3 -m http.server 8000
# 4. Open http://localhost:8000
Per il deployment in produzione, vedi DEPLOYMENT.md
| Livello di Sicurezza | k | Tempo di Prova | Dimensione della Prova | Caso d'Uso |
|---|---|---|---|---|
| Sviluppo | 12 | ~30s | 3.2 KB | Test |
| Produzione | 14 | ~2min | 3.4 KB | Consigliato |
Hardware di Test: Lenovo IdeaPad 3 - Intel Core i3 11th Gen
Nota: Le prestazioni possono variare in base alle specifiche hardware.
| Metrica | Valore | Note |
|---|---|---|
| Dimensione della Prova | 3.264 byte | 3,19 KB compressi |
| Input Pubblici | 10 | Radice User tree, radice Device tree, nullifier, ecc. |
| Generazione dei Parametri | 7.03s | Configurazione una tantum per valore di k |
| Creazione del Circuito | 2.3µs | Overhead trascurabile |
| Generazione della Chiave di Verifica | 1.29s | Keygen una tantum |
| Verifica della Prova | 107.7ms | Controllo effettivo della prova ZK |
| Verifica Totale | 8.43s | End-to-end (senza caching) |
Dettaglio:
| Metrica | Valore | Note |
|---|---|---|
| Dimensione della Prova | 3.392 byte | 3,31 KB compressi |
| Input Pubblici | 10 | Radice User tree, radice Device tree, nullifier, ecc. |
| Generazione dei Parametri | 100.78s | Configurazione una tantum per valore di k |
| Creazione del Circuito | 5µs | Overhead trascurabile |
| Generazione della Chiave di Verifica | 12.89s | Keygen una tantum |
| Verifica della Prova | 967.2ms | Controllo effettivo della prova ZK |
| Verifica Totale | 114.65s | End-to-end (senza caching) |
Dettaglio:
Importante: La generazione dei parametri e il keygen sono costi una tantum che possono essere memorizzati nella cache. Una volta in cache, la verifica richiede solo ~108-967ms a seconda del valore di k. L'implementazione attuale non memorizza ancora i parametri nella cache.
Perché più lento dei vecchi benchmark? Il circuito passwordless ora verifica DUE Merkle tree (utente + dispositivo) invece di uno, fornendo un vero anonimato a livello di dispositivo (1 dispositivo su 1024 per utente).
📖 Per un flusso di autenticazione dettagliato passo-passo con dettagli crittografici, vedi ARCHITECTURE_FLOW.md