الأمان

هندسة الأمان

مكدّس Rust/Tauri، تنسيق .rkvey v5، الحجرات، فك التشفير المؤجّل ونموذج التهديدات.

تعتمد أمان QubKey على هندسة طبقات ومبدأ الدفاع المتعدّد: نظام الملفات، تنسيق .rkvey v5، التشفير ونواة التطبيق المكتوبة بلغة Rust تحمي أسرارك في كل مرحلة — من التخزين إلى فتح القفل.

كل طبقة تقدّم ضمانًا تكميليًا. إذا فُقد حماية على مستوى النظام (مثل عدم تشفير القرص)، تظل طبقات التطبيق والتشفير تحمي خزنتك. مع تنسيق v5، لا تُفكّ أسرار أي إدخال إلا عند عرضها أو نسخها — لا عند فتح القفل ولا في القائمة.

UI

الواجهة (رد فعل + تاوري)

  • قبو
  • المجلدات
  • يبحث
  • مولد
  • رموز لمرة واحدة
  • لوحة القيادة
  • مزامنة
  • مشاركة
  • امتداد المتصفح
Core

قلب الصدأ (QubKey Core)

  • تنسيق .rkvey v5
  • اشتقاق Argon2id
  • التشفير المعتمد
  • فهرس البحث
  • الالتزامات الآمنة
  • مسح الذاكرة
  • التعافي من الأعطال
Storage

ملف .rkvey v5 على نظام الملفات

  • الديباجة
  • رأس مشفرة
  • الفهرس المشفر
  • مقصورات سرية
  • المرفقات
  • ارتكاب التاريخ

طبقات الأمان

تدفّق فتح القفل

يتبع فتح القفل مسارًا صارمًا: تصل كلمة المرور الرئيسية إلى نواة Rust، يشتق Argon2id المفتاح الرئيسي، وتفك المفاتيح الفرعية الترويسة وفهرس B-Tree. حجرات الإدخال (الأسرار، المرفقات) تبقى مشفّرة وتُقرأ عند الحاجة فقط. عند القفل تُمسح كل المفاتيح والأسرار من الذاكرة.

كلمة المرور الرئيسية + الملح

.rkvey الديباجة (نص عادي)

  • تم الدخول في Rust core (Tauri IPC) - لم يتم عرضه مطلقًا على WebView
  • ملح عشوائي مخزن في الديباجة (16 بايت)
KDF

أرجون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
تسريب عبر الشبكةاعتراض سحابي / MITMLocal-first: QubKey لا يرفع أسرارك
تلف البياناتتعطّل أثناء الكتابةcommits append-only مُتحقَّقة + استرداد عند التشغيل
التلاعب بالخزنةتعديل يدوي للملفمصادقة AEAD لكل حجرة + checksums
لقطة الذاكرة (التصفّح)خزنة مفتوحة، قائمة / عرضالأسرار تبقى مشفّرة حتى تعرضها
كلمة مرور رئيسية ضعيفةمحاولات offlineArgon2id معاير (~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 الثقة على عدة مستويات تكميلية:

  1. أنت تتحكم في الوصول — كلمة المرور الرئيسية ومفتاح الاسترداد إن وُجد يتحكمان في الوصول للخزنة. QubKey لا يمكنه قراءتهما أو إعادة تعيينهما.

  2. تكامل النظام — QubKey يستخدم أمان نظام التشغيل: صلاحيات الملفات، تشفير القرص (FileVault، BitLocker، LUKS)، تخزين آمن (Keychain، Credential Manager) وعزل العمليات.

  3. فصل Rust / الواجهة — كل التشفير يعمل في نواة Rust مع أمان الذاكرة وقت التجميع. واجهة React تتواصل عبر Tauri IPC؛ WebView لا يصل مباشرة إلى كلمة المرور الرئيسية.

  4. التعامل الحذر مع الذاكرة (v5) — عند فتح القفل يُفك تشفير الترويسة والفهرس فقط. الأسرار والمرفقات تبقى مشفّرة حتى إجراء صريح (عرض، نسخ، تنزيل). عند القفل: zeroization ومسح الحافظة.

  5. امتداد المتصفّح — Native Messaging محلي؛ الامتداد لا يحصل أبدًا على كلمة المرور الرئيسية.

ميزات الحماية

القفل التلقائي

تُقفل الخزنة بعد فترة خمول قابلة للضبط (افتراضي: 5 دقائق). يفعّل zeroization ومسح الحافظة.

فك التشفير المؤجّل

لا تُفك أسرار الإدخال إلا عند عرضها أو نسخها. القائمة والعرض لا يظهران الحقول المحمية.

Zeroization

تُمسح الأسرار من RAM عند القفل (crate Rust zeroize)؛ تُفرَّغ caches، وفك تشفير مؤقت عند الحاجة فقط.

مهلة الحافظة

تُفرَّغ الحافظة تلقائيًا بعد 30 ثانية. قابلة للضبط في إعدادات الخزنة.