
Legion هو بنية مصادقة قائمة على المعرفة الصفرية (Zero-Knowledge) صُمِّمت للخصوصية.
مصادقة حقيقية بالمعرفة الصفرية مع توقيعات حلقية للأجهزة مرتبطة بالعتاد
Legion هو نظام مصادقة بالمعرفة الصفرية بدون كلمة مرور يُثبت أنك مخوَّل دون الكشف عن هويتك.
يمكنك المصادقة باستخدام بصمة إصبعك + عبارة الاسترداد المكوَّنة من 24 كلمة (مثل MetaMask). لا أسماء مستخدمين، لا كلمات مرور، ولا أسرار على جانب الخادم.
| الخاصية | الضمان |
|---|---|
| المصادقة | بدون كلمة مرور (BIP-39 + بصمة الإصبع) |
| إخفاء هوية المستخدم | 1 من 2^20 (1,048,576) |
| إخفاء هوية الجهاز | 1 من 2^10 (1,024) لكل مستخدم |
| خطأ السلامة | 2^-128 |
| نظام الإثبات | Halo2 PLONK (إعداد شفاف) |
| اشتقاق بيانات الاعتماد | Blake3 (بذرة BIP-39) |
| ربط العتاد | WebAuthn Level 2 (TPM/Secure Enclave) |
| الأجهزة المتعددة | حد أقصى جهازان لكل حساب |
| تحديد المعدل | 5 محاولات/ساعة |
| إبطال الجهاز | قائمة سوداء فورية |
git clone https://github.com/deadends/legion.git cd legion
chmod +x scripts/install.sh && ./scripts/install.sh
scripts\install.bat
**هذا كل شيء!** افتح http://localhost في متصفحك.
### ما الذي يتم تثبيته
- ✅ Redis (تخزين الجلسات)
- ✅ Legion Server (التحقق من براهين ZK)
- ✅ الواجهة الأمامية (عميل WASM)
- ✅ Nginx (وكيل عكسي)
**الأداء**: التسجيل ~5 ثوانٍ، المصادقة ~2 دقيقة (توليد برهان k=14)
---
### الإعداد اليدوي (بدون Docker)
<details>
<summary>انقر لتوسيع التثبيت اليدوي</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
للنشر في الإنتاج، انظر DEPLOYMENT.md
| مستوى الأمان | k | زمن الإثبات | حجم الإثبات | حالة الاستخدام |
|---|---|---|---|---|
| التطوير | 12 | ~30 ثانية | 3.2 كيلوبايت | الاختبار |
| الإنتاج | 14 | ~2 دقيقة | 3.4 كيلوبايت | موصى به |
جهاز الاختبار: Lenovo IdeaPad 3 - Intel Core i3 11th Gen
ملاحظة: قد يختلف الأداء اعتمادًا على مواصفات الجهاز.
| المقياس | القيمة | ملاحظات |
|---|---|---|
| حجم الإثبات | 3,264 بايت | 3.19 كيلوبايت مضغوط |
| المدخلات العامة | 10 | جذر شجرة المستخدم، جذر شجرة الجهاز، nullifier، إلخ. |
| توليد Params | 7.03 ثانية | إعداد لمرة واحدة لكل قيمة k |
| إنشاء الدائرة | 2.3 ميكروثانية | عبء إضافي لا يُذكر |
| توليد مفتاح التحقق | 1.29 ثانية | توليد مفاتيح لمرة واحدة |
| التحقق من الإثبات | 107.7 مللي ثانية | فحص إثبات ZK الفعلي |
| إجمالي التحقق | 8.43 ثانية | من البداية إلى النهاية (بدون تخزين مؤقت) |
التفصيل:
| المقياس | القيمة | ملاحظات |
|---|---|---|
| حجم الإثبات | 3,392 بايت | 3.31 كيلوبايت مضغوط |
| المدخلات العامة | 10 | جذر شجرة المستخدم، جذر شجرة الجهاز، nullifier، إلخ. |
| توليد Params | 100.78 ثانية | إعداد لمرة واحدة لكل قيمة k |
| إنشاء الدائرة | 5 ميكروثانية | عبء إضافي لا يُذكر |
| توليد مفتاح التحقق | 12.89 ثانية | توليد مفاتيح لمرة واحدة |
| التحقق من الإثبات | 967.2 مللي ثانية | فحص إثبات ZK الفعلي |
| إجمالي التحقق | 114.65 ثانية | من البداية إلى النهاية (بدون تخزين مؤقت) |
التفصيل:
مهم: توليد Params وkeygen تكلفة لمرة واحدة يمكن تخزينها مؤقتًا. بمجرد التخزين المؤقت، يستغرق التحقق ~108-967 مللي ثانية فقط حسب قيمة k. لا يقوم التنفيذ الحالي بتخزين Params مؤقتًا بعد.
لماذا يكون أبطأ من المعايير السابقة؟ تتحقق الدائرة غير المعتمدة على كلمة المرور الآن من شجرتي Merkle (المستخدم + الجهاز) بدلاً من شجرة واحدة، مما يوفر إخفاء هوية حقيقيًا على مستوى الجهاز (جهاز واحد من أصل 1024 جهازًا لكل مستخدم).
📖 للحصول على تدفق مصادقة مفصّل خطوة بخطوة مع تفاصيل التشفير، راجع ARCHITECTURE_FLOW.md