Skip to content

الأمان

صُمّم OpenKey بحيث لا يستطيع الخادم قراءة خزنَتك.

اشتقاق المفاتيح

اشتقاق المفاتيح: Argon2id يحوّل البريد وكلمة المرور إلى مفتاح رئيسي ينتج تجزئة مصادقة ومفتاح خزنة ملفوف لتشفير AES-256-GCM
  1. ينتج Argon2id(email + master_password, salt) مفتاحاً رئيسياً.
  2. يشتق المفتاح الرئيسي تجزئة مصادقة (تُرسل للخادم لتسجيل الدخول) ويلفّ مفتاح الخزنة.
  3. يشفر مفتاح الخزنة أسماء المجموعات وحمولات الإدخالات (AES-256-GCM).
  4. يُشتق مفتاح تشفير قاعدة البيانات المحلية من مفتاح الخزنة.
  5. كلمة المرور الرئيسية لا تغادر الجهاز أبداً.

ما يخزّنه الخادم

يُخزَّنلا يُخزَّن
auth_hashكلمة المرور الرئيسية
الملح ومعلمات KDFمفتاح الخزنة كنص صريح
مفتاح الخزنة الملفوف (المشفّر)أسماء المجموعات مفكوكة
نص مشفّر غير شفاف للبيانات والمرفقات والمؤسسات والمشاركاتحمولات الإدخالات كنص صريح
إدخالات المنظمة المشتركة (encrypted_payload تحت مجموعات المنظمة)مفتاح المنظمة كنص صريح (يفكّه العملاء عبر المفاتيح الملفوفة)

تبقى العناصر المحذوفة بهدوء كـ tombstones حتى تتم مزامنة الأقران؛ آخر كتابة تفوز تستخدم revision لكل عنصر.

الرموز

  • رموز JWT للوصول قصيرة العمر.
  • تُجزَّأ رموز التحديث عند التخزين وتُدوَّر عند الاستخدام.
  • نقاط المصادقة محدودة المعدل لكل عنوان IP.

نموذج التهديد

حدود الثقة

المكوّنافتراض الثقة
الجهاز / الخزنة المحليةجذر الثقة أثناء الفتح؛ مستخدم نظام التشغيل قد يقرأ الذاكرة وملف قاعدة البيانات المشفّر
خادم المزامنة المستضاف ذاتياًغير موثوق للسرية — ciphertext فقط؛ موثوق للتوافر ومقارنة auth_hash
إضافة المتصفحموثوقة بنص الخزنة بعد الفتح؛ صفحات الويب لا تحصل على أسرار خارج التعبئة التلقائية المقصودة. <all_urls> مطلوب للملء/الالتقاط/WebAuthn على الويب المفتوح — انظر امتداد المتصفح
مضيف الرسائل الأصليةجسر محلي فقط للتطبيق المفتوح؛ ردود عند فتح الخزنة فقط
CLI / جسر سطح المكتبنفس ثقة جلسة التطبيق المفتوحة
الاقتران / Nearby على LANالأقران المقترنون يشاركون مفتاح جلسة؛ بعد ربط الخزنة يتبادلون مادة مفتاح الخزنة ويزامنون ciphertext على LAN — عامل الاقتران والربط كثقة كاملة بالخزنة

ماذا يستطيع المهاجم وماذا لا يستطيع

المهاجميستطيعلا يستطيع (بالتصميم)
مسؤول خادم مخترقحذف/حجب ciphertext واستبدال blobs ومراقبة بيانات وصفيةفك تشفير الإدخالات أو استعادة كلمة المرور من auth_hash وحده
MITM بدون TLSاعتراض JWT وciphertextقراءة النص الواضح بدون مفتاح الخزنة
جهاز مسروق وهو مقفلهجوم غير متصل على الخزنة الملفوفة (كلمة مرور قوية مطلوبة)الفتح بدون كلمة المرور / البيومترية
جهاز مسروق وهو مفتوحقراءة النص الواضح من الذاكرة— (خارج النطاق)
صفحة ويب خبيثةطلب واجهة التعبئة؛ محاولة تصيّدقراءة الخزنة كاملة عبر content scripts بدون وساطة
نظير منظمة/مشاركة خبيثمشاركة ما فُكّ بمفاتيح لُفّت لهفك عناصر الخزنة الشخصية غير ذات الصلة
نظير Nearby خبيثإرسال إدخالات / ادّعاء LAN Pro / استلام ciphertext بعد الربطفتح Pro على منصات متجر IAP؛ فك ciphertext بدون مفتاح الخزنة المشترك

غير أهداف صريحة

  • لا استعادة لكلمة المرور الرئيسية — فقدانها يعني ciphertext غير قابل للاسترداد.
  • الخادم لا يفكّ حمولات الخزنة أو المرفقات أو المنظمات أو المشاركات.
  • المزامنة LWW حسب revision وليست CRDT — التعديلات المتزامنة قد تُستبدل؛ الخادم يعيد الصف الفائز عند رفض دفع قديم. مزامنة Nearby على LAN تستخدم نفس قاعدة LWW بين الأجهزة المقترنة والمرتبطة بالخزنة (وليست بديلاً عن النسخ الاحتياطي).
  • شهادة LAN Pro تسهيل بين أجهزة مقترنة على منصات بلا IAP متجر — وليست إثبات شراء مشفّر.

قائمة تصلّيب تشغيلية

  • عيّن JWT_SECRET قوياً وفريداً (حد أدنى 32 حرفاً؛ تُرفض القيم النائبة عند الإقلاع).
  • استخدم HTTPS أمام الـ API في الإنتاج.
  • اجعل CORS_ORIGINS قائمة صريحة (بدون *).
  • أبقِ الخزنة مقفلة عند الخمول؛ فعّل الفتح البيومتري بحذر.
  • استخدم الإعدادات ← الأمان ← صحة كلمات المرور لاكتشاف الضعيفة/المعاد استخدامها؛ فحص HIBP الاختياري يرسل بادئة تجزئة SHA-1 فقط (k-anonymity)، وليس كلمة المرور.
  • عامل التصدير / النسخ الاحتياطي كمادة سرية — خزّنها دون اتصال ومشفّرة.
  • اقرن أجهزة Nearby فقط مع من تثق بهم؛ ربط الخزنة يشارك مادة مفتاح الخزنة عبر جلسة LAN — ألغِ الاقتران لإبطال شهادات LAN Pro وإيقاف المزامنة.
  • أبلغ عن الثغرات بخصوصية — انظر الإبلاغ عن الثغرات.

الإبلاغ عن الثغرات

إذا وجدت مشكلة أمنية في OpenKey (خادم، امتداد، CLI، وثائق، أو التطبيق)، أبلغ عنها بخصوصية.

لا تفتح issue عام على GitHub للثغرات القابلة للاستغلال.

ضمّن الحزمة المتأثرة والإصدار/الـ commit إن عُرف وخطوات إعادة الإنتاج والأثر. نهدف للرد خلال 7 أيام. السياسة الكاملة في ملف SECURITY.md.

قواعد عملية

  • اختر كلمة مرور رئيسية قوية — فهي جذر الثقة.
  • اجعل JWT_SECRET (الخادم) طويلاً وفريداً؛ تُرفض القيم النائبة عند الإقلاع.
  • فضّل HTTPS في الإنتاج وقيّد CORS_ORIGINS (بدون *).
  • احتفظ بنسخة احتياطية من تصدير الخزنة / مواد الاستعادة دون اتصال.

ملاحظة حول الحزم

الحزم المنشورة تشمل الخادم وإضافة المتصفح وCLI والوثائق (MIT). قد يحتوي هذا المونوريبو على نسخة تطوير من تطبيق OpenKey للجوال/سطح المكتب للعمل عبر الحزم. راجع نظرة عامة والحزم.

لتفاصيل واجهة البرمجة، راجع README لحزمة openkey_server و/docs على خادم قيد التشغيل.