هندسة الأمان
مكدّس Rust/Tauri، تنسيق .rkvey v5، الحجرات، فك التشفير المؤجّل ونموذج التهديدات.
تعتمد أمان QubKey على هندسة طبقات ومبدأ الدفاع المتعدّد: نظام الملفات، تنسيق .rkvey v5، التشفير ونواة التطبيق المكتوبة بلغة Rust تحمي أسرارك في كل مرحلة — من التخزين إلى فتح القفل.
كل طبقة تقدّم ضمانًا تكميليًا. إذا فُقد حماية على مستوى النظام (مثل عدم تشفير القرص)، تظل طبقات التطبيق والتشفير تحمي خزنتك. مع تنسيق v5، لا تُفكّ أسرار أي إدخال إلا عند عرضها أو نسخها — لا عند فتح القفل ولا في القائمة.
الواجهة (رد فعل + تاوري)
- قبو
- المجلدات
- يبحث
- مولد
- رموز لمرة واحدة
- لوحة القيادة
- مزامنة
- مشاركة
- امتداد المتصفح
قلب الصدأ (QubKey Core)
- تنسيق .rkvey v5
- اشتقاق Argon2id
- التشفير المعتمد
- فهرس البحث
- الالتزامات الآمنة
- مسح الذاكرة
- التعافي من الأعطال
ملف .rkvey v5 على نظام الملفات
- الديباجة
- رأس مشفرة
- الفهرس المشفر
- مقصورات سرية
- المرفقات
- ارتكاب التاريخ
طبقات الأمان
تدفّق فتح القفل
يتبع فتح القفل مسارًا صارمًا: تصل كلمة المرور الرئيسية إلى نواة Rust، يشتق Argon2id المفتاح الرئيسي، وتفك المفاتيح الفرعية الترويسة وفهرس B-Tree. حجرات الإدخال (الأسرار، المرفقات) تبقى مشفّرة وتُقرأ عند الحاجة فقط. عند القفل تُمسح كل المفاتيح والأسرار من الذاكرة.
كلمة المرور الرئيسية + الملح
.rkvey الديباجة (نص عادي)
- تم الدخول في Rust core (Tauri IPC) - لم يتم عرضه مطلقًا على WebView
- ملح عشوائي مخزن في الديباجة (16 بايت)
أرجون2id
- ذاكرة الوصول العشوائي (RAM) سعة 64 ميجابايت · 3 تكرار · p=4 (الافتراضي `KdfParams`)
- مقاومة GPU/ASIC
- معايرة ~ 250-500 مللي ثانية حسب النظام الأساسي
المفتاح الرئيسي
256 بت · `KeyManager::derive_master_key`
اشتقاق المفتاح الفرعي
HKDF-SHA256(رئيسي، ملح=إدخال ملف، معلومات=نوع)
header_key
رأس آمن
Index_key
مؤشر B-شجرة
حجرة_مفتاح
المقصورات
فك تشفير AEAD
- AES-256-GCM أو XChaCha20-Poly1305
- الرأس · الفهرس · الأقسام (حسب الطلب)
الذاكرة بعد فتح
- القائمة/العرض: بيانات التعريف فقط
- الأسرار والمرفقات فك تشفيرها فقط عند الطلب
قفل
- `KeyManager::clear_keys()` + صفر
- تم مسح الأسرار ومسح الحافظة
نموذج التهديدات
صُمّم QubKey لأكثر سيناريوهات التهديد شيوعًا في مدير محلي. يصف الجدول ناقل الهجوم والتدابير المدمجة (تنسيق .rkvey-v5).
| التهديد | الناقل | ردّ QubKey |
|---|---|---|
| وصول غير مصرّح للملف | سرقة أو نسخ .rkvey | تشفير AEAD + اشتقاق Argon2id |
| تسريب عبر الشبكة | اعتراض سحابي / MITM | Local-first: QubKey لا يرفع أسرارك |
| تلف البيانات | تعطّل أثناء الكتابة | commits append-only مُتحقَّقة + استرداد عند التشغيل |
| التلاعب بالخزنة | تعديل يدوي للملف | مصادقة AEAD لكل حجرة + checksums |
| لقطة الذاكرة (التصفّح) | خزنة مفتوحة، قائمة / عرض | الأسرار تبقى مشفّرة حتى تعرضها |
| كلمة مرور رئيسية ضعيفة | محاولات offline | Argon2id معاير (~500 ms) + مقياس الإنتropy |
| إعادة استخدام كلمة المرور | تسريبات على مواقع أخرى | لوحة الأمان (كشف محلي) |
| تسريبات الحافظة | نسخ سر | مهلة الحافظة (30 ث) + مسح عند القفل |
| هجوم side-channel | توقيت عمليات التشفير | تنفيذات ثابتة الزمن (RustCrypto) |
أفضل الممارسات
يغطي هذا النموذج التهديدات التي يعالجها QubKey مباشرة عبر هندسته. للحماية المثلى، اجمع QubKey مع ممارسات النظام: تشفير القرص مفعّل، نظام تشغيل محدّث وكلمة مرور رئيسية قوية.
الحماية المدمجة
| المجال | كيف يحمي QubKey بياناتك |
|---|---|
| البيانات في حالة السكون | AEAD (AES-256-GCM / XChaCha20)، مفتاح Argon2id، مفتاح منفصل لكل حجرة |
| سلامة الخزنة | commits append-only مُتحقَّقة، checksums وكتابات ذرّية |
| السرية | Zero-Knowledge: أسرارك تبقى مشفّرة على جهازك |
| فك التشفير المؤجّل | قائمة وعرض بدون أسرار؛ عرض / نسخ عند الحاجة فقط |
| اشتقاق المفاتيح | Argon2id معاير (~500 ms، 64 MB) لحماية كلمة المرور الرئيسية |
| التطبيق | نواة Rust معزولة، واجهة عبر Tauri IPC، zeroization عند القفل |
| امتداد المتصفّح | Native Messaging محلي — الامتداد لا يحصل أبدًا على كلمة المرور الرئيسية |
| المزامنة | مزامنة اختيارية مشفّرة متعددة الأجهزة (سحابة أو self-host) أو ملف .rkvey مشفّر (سحابة، USB، NAS) |
هندسة الثقة
Zero-knowledge
ينظّم QubKey الثقة على عدة مستويات تكميلية:
-
أنت تتحكم في الوصول — كلمة المرور الرئيسية ومفتاح الاسترداد إن وُجد يتحكمان في الوصول للخزنة. QubKey لا يمكنه قراءتهما أو إعادة تعيينهما.
-
تكامل النظام — QubKey يستخدم أمان نظام التشغيل: صلاحيات الملفات، تشفير القرص (FileVault، BitLocker، LUKS)، تخزين آمن (Keychain، Credential Manager) وعزل العمليات.
-
فصل Rust / الواجهة — كل التشفير يعمل في نواة Rust مع أمان الذاكرة وقت التجميع. واجهة React تتواصل عبر Tauri IPC؛ WebView لا يصل مباشرة إلى كلمة المرور الرئيسية.
-
التعامل الحذر مع الذاكرة (v5) — عند فتح القفل يُفك تشفير الترويسة والفهرس فقط. الأسرار والمرفقات تبقى مشفّرة حتى إجراء صريح (عرض، نسخ، تنزيل). عند القفل: zeroization ومسح الحافظة.
-
امتداد المتصفّح — Native Messaging محلي؛ الامتداد لا يحصل أبدًا على كلمة المرور الرئيسية.
ميزات الحماية
القفل التلقائي
تُقفل الخزنة بعد فترة خمول قابلة للضبط (افتراضي: 5 دقائق). يفعّل zeroization ومسح الحافظة.
فك التشفير المؤجّل
لا تُفك أسرار الإدخال إلا عند عرضها أو نسخها. القائمة والعرض لا يظهران الحقول المحمية.
Zeroization
تُمسح الأسرار من RAM عند القفل (crate Rust zeroize)؛ تُفرَّغ caches، وفك تشفير مؤقت عند الحاجة فقط.
مهلة الحافظة
تُفرَّغ الحافظة تلقائيًا بعد 30 ثانية. قابلة للضبط في إعدادات الخزنة.