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 قائمة صريحة (بدون *).
  • أبقِ الخزنة مقفلة عند الخمول؛ فعّل الفتح البيومتري بحذر.
  • فعّل الإعدادات ← الأمان ← الملء التلقائي ليتمكن النظام / المتصفح من الملء بعد فتح القفل فقط.
  • عامل التصدير / النسخ الاحتياطي كمادة سرية — خزّنها دون اتصال ومشفّرة.
  • اقرن أجهزة Nearby فقط مع من تثق بهم؛ ربط الخزنة يشارك مادة مفتاح الخزنة عبر جلسة LAN — ألغِ الاقتران لإبطال شهادات LAN Pro وإيقاف المزامنة.
  • أبلغ عن الثغرات بخصوصية — انظر الإبلاغ عن الثغرات.

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

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

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

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

قواعد عملية ​

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

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

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

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