
Legion هو بنية مصادقة قائمة على المعرفة الصفرية (Zero-Knowledge) صُمِّمت للخصوصية.
مصادقة حقيقية بمعرفة صفرية مع توقيعات حلقية للأجهزة المرتبطة بالعتاد
Legion هو نظام مصادقة بمعرفة صفرية يثبت أنك مُصرَّح لك دون الكشف عن هويتك. تثبت شيئًا بناءً على بيانات عامة دون ربط إجرائك الحالي بعنوانك العام.
| الخاصية | الضمان |
|---|---|
| إخفاء هوية المستخدم | 1 من 2^20 (1,048,576) |
| إخفاء هوية الجهاز | 1 من 2^10 (1,024) |
| خطأ السلامة الصوتية | 2^-128 |
| نظام الإثبات | Halo2 PLONK |
| تجزئة كلمة المرور | Argon2id |
| ربط العتاد | WebAuthn Level 2 |
| تحديد المعدل | 5 محاولات/ساعة |
| إبطال الجهاز | قائمة حظر فورية |
# Clone and run
git clone https://github.com/deadends/legion.git
cd legion
# Linux/macOS
chmod +x install.sh && ./install.sh
# Windows
install.bat
هذا كل شيء! افتح http://localhost في متصفحك.
الأداء: التسجيل ~10 ثوانٍ، المصادقة ~4 دقائق (توليد إثبات k=16)
# 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
لنشر الإنتاج، راجع DEPLOYMENT.md
| مستوى الأمان | k | زمن الإثبات | حجم الإثبات | حالة الاستخدام |
|---|---|---|---|---|
| الاختبار | 12 | ~10s | 2.5 KB | التطوير |
| قياسي | 14 | ~60s | 3.0 KB | التجهيز |
| الإنتاج | 16 | ~4min | 3.5 KB | موصى به |
| أمان عالٍ | 18 | ~15min | 4.0 KB | المؤسسات |
📖 للحصول على تدفق المصادقة التفصيلي خطوة بخطوة مع التفاصيل التشفيرية، راجع ARCHITECTURE_FLOW.md
┌──────────────────────────────────────────────────────────────────────────┐
│ CLIENT (Browser) │
├──────────────────────────────────────────────────────────────────────────┤
│ ┌────────────────┐ ┌─────────────────┐ ┌──────────────────────────┐ │
│ │ UI Layer │ │ WASM Module │ │ Hardware Security │ │
│ │ (Vanilla JS) │ │ (Rust→WASM) │ │ (WebAuthn Level 2) │ │
│ ├────────────────┤ ├─────────────────┤ ├──────────────────────────┤ │
│ │ • Registration │ │ • Blake3 Hash │ │ • TPM 2.0 │ │
│ │ • Login Form │ │ • Argon2id KDF │ │ • Secure Enclave │ │
│ │ • Session UI │ │ • Halo2 Prover │ │ • FIDO2 Authenticator │ │
│ │ • Error Handle │ │ • Merkle Proof │ │ • Device Private Key │ │
│ └────────────────┘ └─────────────────┘ └──────────────────────────┘ │
└────────────────────────────────┬─────────────────────────────────────────┘
│ HTTPS/TLS 1.3
│ (Encrypted Channel)
▼
┌──────────────────────────────────────────────────────────────────────────┐
│ REVERSE PROXY (Nginx) │
├──────────────────────────────────────────────────────────────────────────┤
│ • TLS Termination • Rate Limiting (100 req/min) │
│ • Load Balancing • Request Logging │
│ • Static File Serving • Security Headers (CSP, HSTS) │
└────────────────────────────────┬─────────────────────────────────────────┘
│ HTTP (Internal Network)
▼
┌──────────────────────────────────────────────────────────────────────────┐
│ LEGION SERVER (Rust/Axum) │
├──────────────────────────────────────────────────────────────────────────┤
│ ┌─────────────────────────────────────────────────────────────────┐ │
│ │ API Layer (Axum) │ │
│ ├─────────────────────────────────────────────────────────────────┤ │
│ │ POST /register │ POST /auth/challenge │ POST /auth/verify│ │
│ │ POST /auth/session │ GET /health │ POST /logout │ │
│ └─────────────────────────────────────────────────────────────────┘ │
│ │ │
│ ┌─────────────────────────────────────────────────────────────────┐ │
│ │ Business Logic Layer │ │
│ ├─────────────────────────────────────────────────────────────────┤ │
│ │ • Credential Manager │ • Challenge Generator (32-byte random)│ │
│ │ • Merkle Tree Builder │ • Nullifier Tracker (replay protection)│ │
│ │ • ZK Proof Verifier │ • Session Manager (linkability tags) │ │
│ │ • Device Tree Manager │ • Timestamp Validator (±5min window) │ │
│ └─────────────────────────────────────────────────────────────────┘ │
│ │ │
│ ┌─────────────────────────────────────────────────────────────────┐ │
│ │ Cryptographic Layer │ │
│ ├─────────────────────────────────────────────────────────────────┤ │
│ │ • Halo2 Verifier (PLONK) │ • Poseidon Hash (ZK-friendly) │ │
│ │ • Blake3 (credential hash)│ • Argon2id (password KDF) │ │
│ │ • Merkle Tree (2^20 users)│ • Device Tree (2^10 devices/user) │ │
│ └─────────────────────────────────────────────────────────────────┘ │
└────────────────────────┬──────────────────────┬──────────────────────────┘
│ │
▼ ▼
┌────────────────────────┐ ┌───────────────────────────┐
│ Redis (In-Memory) │ │ RocksDB (Persistent) │
├────────────────────────┤ ├───────────────────────────┤
│ • Session Tokens │ │ • User Credentials │
│ • Linkability Tags │ │ • Merkle Tree Nodes │
│ • Active Challenges │ │ • Device Trees │
│ • Nullifier Cache │ │ • Nullifier History │
│ TTL: 1 hour │ │ Persistent Storage │
└────────────────────────┘ └───────────────────────────┘