امتثال فيودكس

الشفافية: من يقرأ ماذا

بياناتك عندنا في ثلاثة أوعية، ولكل وعاء نظام مختلف. نكتب هنا ما نستطيع فعله وما لا نستطيع، وأين ينتهي ما نَعِد به.

1 ثلاثة أوعية بثلاثة أنظمة

من يملك أي مفتاح البيانات التشغيلية تقرؤها فيودكس. الأرشيف مشفّر على الخادم بمفتاح عند فيودكس. الخزنة مشفّرة في متصفحك بمفتاح عندك وليس عند فيودكس. البيانات التشغيلية تواريخ، أسماء، سجل نقرؤها نحن لنشغّل الخدمة: لا مفتاح يمنعنا الأرشيف مشفّر على الخادم، ونبحث فيه ونعرضه لك المفتاح عندنا نحن، على خادمنا الخزنة مشفّرة في متصفحك قبل أن تصل إلينا المفتاح عندك أنت: عبارتك وورقتك. لا نملكه شرط وعد الخزنة في الفقرة التالية للرسم.

ما دام الكود الذي نسلّمه لمتصفحك سليماً، لا نستطيع نحن ولا من يستولي على خادمنا قراءة خزنتك. لو اختُرق خادمنا أو حساب من ينشر الكود، فقد يُسلَّم كود يسرق عبارة مرورك عند كتابتها. نقلّل ذلك بتثبيت بصمة الكود ونشرها، وبمنع أي سكربت خارجي في صفحة الخزنة، وبسجل تغييرات علني.

شريط FuSuite: لوحة التطبيق تحمّل شريط منصّات فيودكس من خادم آخر، ولا نستطيع تثبيت بصمته لأنه يتحدّث مع المنصّات كلها. لذلك تعمل الخزنة من أصل مستقل هو vault.comply.fudex.com.sa: لا يصله الشريط، ولا يستطيع سكربت على لوحة التطبيق قراءة صفحتها أو طلب نصّها المشفّر. وحدّ ذلك أن تدخل الخزنة من هذا العنوان وتتأكد منه قبل كتابة عبارتك، فسكربت مخترق على لوحة التطبيق يستطيع تغيير الرابط إليها. وكوكي الدخول مشترك بين منصّات فيودكس، فمن يستولي على جلسة دخولك يصل إلى النص المشفّر ويخمّن عبارة ضعيفة خارج الخادم، ولهذا نرفض العبارات السهلة.

وما على جهازك من برمجيات خبيثة أو إضافات متصفح خارج سيطرتنا. والمتصفح لا يحمي الذاكرة كما يحميها برنامج مكتبي.

2 الخوارزميات بمعاملاتها

باختصار: عبارتك تولّد مفتاحاً، وهذا المفتاح يفتح مفتاحاً ثانياً، والمفتاح الثاني يفتح عناصرك. لهذا يكون تغيير العبارة فورياً، ويكون استبعاد شخص أثقل.

المعاملات لمن يريد التدقيق
اشتقاق مفتاح التغليف KEKPBKDF2-HMAC-SHA256، 600,000 iterations، salt 16 bytes، 256-bit
مفتاح البيانات DEK256-bit من crypto.getRandomValues عبر WebCrypto generateKey، ويُفك غير قابل للاستخراج في الجلسة العادية
تغليف DEKAES-256-GCM، iv 96-bit، AAD = fucomply-vault-v1|<tenant>|dek
العناصرAES-256-GCM، iv جديد عند كل حفظ، AAD = <tenant>|<item_id>|<version>
مفتاح الاسترداد200-bit، Base32 Crockford، 40 chars؛ HKDF-SHA256 (salt 16 bytes، info = fucomply-vault-v1|<tenant>|recovery)؛ AAD = fucomply-vault-v1|<tenant>|dek-recovery
العبارة المولَّدةسبع كلمات عشوائية من قائمة عربية فيها 2048 كلمة، أي 77.0 بت. القوة المستهدفة في التصميم كانت قائمة أكبر، ولم نبلغ بعد قائمة بتلك الجودة، فنكتب الرقم الحقيقي.
العبارة الخاصة14 حرفاً على الأقل و60 بتاً بمقياس تقريبي يحسب الكلمات لا الحروف، ويرفض اسم منشأتك والسنوات والكلمات المتوقعة. يعمل المقياس في متصفحك عند الاختيار، ولا يستطيع خادمنا فحص عبارة لا يراها. قوتها الفعلية بقدر عشوائيتها.
تطبيع العبارة قبل الاشتقاقNFKC، حذف التشكيل والكشيدة ومحارف الاتجاه، توحيد الهمزات والتاء المربوطة والألف المقصورة، ومسافة واحدة بين الكلمات. هذا يقلّل قوة العبارة الخاصة قليلاً مقابل ألّا يقفلك اختلاف لوحة المفاتيح.
أرضية في المتصفحيرفض المتصفح ترويسة بتكرارات أقل من 600,000 أو أكثر من 20,000,000 أو خوارزمية غير معروفة، حتى لو أرسلها الخادم.
الأرشيفAES-256-GCM على الخادم، DEK لكل منشأة، مغلَّف بمفتاح رئيسي لدى فيودكس

3 ما نراه وما لا نراه

في الخزنة يرى خادمنا: المنشأة، معرّفات العناصر، أحجامها، أزمنتها، من جلب ماذا ومتى، والنص المشفّر.

ولا يرى: المحتوى، العناوين، عبارة المرور، مفتاح البيانات، مفتاح الاسترداد.

حدود ذلك: حجم العنصر ظاهر لنا لأن الحجم لا يُخفى. والخادم لا يفك شيئاً، لكنه يستطيع نظرياً أن يحذف عنصراً أو يمنعه عنك أو يعيد نسخة أقدم منه؛ التشفير يكشف العبث بالمحتوى ولا يمنع الحذف.

فريقنا: لا يدخل حساب منشأتك إلا بمنحة مؤقتة بسبب مكتوب، وتظهر في سجل الأثر عندك المنحة وكل ملف فُتح بها وكل صفحة وصل إليها، وتستطيع إلغاءها. وبوت تيليجرام يضبطه موظف تحت منحة ينفكّ ربطه بانتهائها. هذه المنح لا تصل إلى الخزنة ولا إلى نصّها المشفّر. أما البيانات التشغيلية والأرشيف فتصل إليها المنحة بحدود دورها.

4 الاسترداد: الحقيقة كاملة

عند تفعيل الخزنة تظهر ورقة استرداد مرة واحدة، فتطبعها أنت. لا نحتفظ بها.

ضياع العبارة والورقة معاً يعني ضياع الخزنة. لا يستطيع خادمنا ولا فريقنا استعادتها، ولا توجد نسخة احتياطية تفتحها: نسخنا الاحتياطية تحوي النص المشفّر نفسه.

تغيير العبارة يعيد تغليف المفتاح وحده. أما استبعاد عضو فيعني مفتاحاً جديداً وإعادة تشفير كل عنصر في متصفحك وعبارة جديدة وورقة جديدة. وحتى هذا لا يمحو ما اطّلع عليه العضو من قبل، فغيّر الأسرار نفسها عند مصادرها.

5 أين تعيش البيانات

مسودة قيد مراجعة قانونية

خوادمنا عند هتزنر في فالكنشتاين بألمانيا، والنسخ الاحتياطي في Wasabi بمنطقة eu-central-1.

نسخة ما قبل الترحيل: قبل كل تحديث لبنية القاعدة نأخذ نسخة صريحة منها على الخادم نفسه للرجوع عن تحديث فاشل. تُحذف تلقائياً بعد 7 أيام على الأكثر. وحذف منشأتك يمحوها من هذه النسخ فوراً.

النسخ الاحتياطية الخارجية: حذف منشأتك لا يصل إلى اللقطات الخارجية المأخوذة قبله. فيها القاعدة بما فيها البيانات التشغيلية ونص البحث، والنص المشفّر، ومفتاح الأرشيف مغلَّفاً. لم نعلن هنا مدة بقائها بعد، فاسألنا عنها قبل أن تعتمد على الحذف الفوري.

يعني هذا أن بياناتك تُحفظ خارج المملكة. ما يترتّب على ذلك تحت نظام حماية البيانات الشخصية نصٌّ يراجعه محامٍ قبل اعتماده، ولا نقدّم هذه الفقرة بوصفها رأياً قانونياً.

6 كيف تتحقق بنفسك

حد هذا الفحص: البصمة هنا وصفحة الخزنة يقدّمهما خادم واحد، فمن يخترقه يستطيع تغييرهما معاً. لذلك تزيد قيمة الفحص حين تقارن بما حفظته سابقاً أو بنسخة منشورة خارج هذا الخادم.

بصمات الملفات بالتفصيل (SHA-256)
vault/index.html0d52983d5c50b25b49eda67c7bf92411706d8bb0654660cab306f4759dbd34fd
vault.jsd6ba4fd6c22fef3465a932cd9bc017042b5fe6746420b7f33d53f6892fb41847
vault-crypto.js84c4d8da47071c313f47ec456e98a7593ba671e08f50ba83661eea998a1eae4b
vault-words.jsa1fdb3690738eb1c7cbd112502890a6898339ea005bf345d21f18bed59d44192
vault.cssec54d6437c955efb33a9f9c9ded0d4f77910697e0b812c871d290d1fd1695e3e

بصمة البناء: SHA-256 لبيان أسطره «الاسم البصمة» لملفات الخزنة الأربعة بالترتيب الوارد في tools/vault_build.py.

7 ما لا نفعله

هذه الصفحة بلا سكربت ولا خطوط خارجية ولا أدوات تتبّع.