كيف يحمي LifeVeil ملفاتك
تشرح هذه الصفحة بكلمات بسيطة ما يفعله LifeVeil، وما لا يستطيع فعله أيضًا. نفضّل أن تعرف الحدود على أن تثق بوعد أكبر من الحقيقة.
باختصار
- يتم التشفير كله على هاتفك. لا يوجد خادم لـ LifeVeil ولا حساب.
- تُشفَّر ملفاتك بمفتاح عشوائي. ولا يفتح هذا المفتاح إلا النقش أو عبارة الاسترداد أو بصمة إصبعك.
- نحن المطوّرين لا نملك أبدًا النقش أو العبارة أو مفاتيحك. لا يمكننا فتح ملفاتك، ولا يمكننا إعادة تعيين النقش.
- نستخدم التشفير المدمج في Android ومكتبة libsodium المعروفة. لم نكتب تشفيرًا خاصًا بنا.
- لم يخضع LifeVeil بعد لتدقيق أمني مستقل.
من النقش إلى المفتاح
ترسم نقشًا على شبكة 5×5، من 6 نقاط على الأقل ودون المرور بنقطة مرتين. يحوّل LifeVeil النقش إلى مفتاح باستخدام Argon2id من مكتبة libsodium (الإصدار 1.0.20 على Android).
- الإعدادات: ذاكرة 64 MiB، و3 تمريرات، ومسار واحد، ومفتاح بطول 256 بت.
- Argon2id بطيء عمدًا ويحتاج إلى ذاكرة كبيرة لكل تخمين. وهذا يجعل التخمين باستخدام بطاقات الرسومات أعلى تكلفة بكثير.
- على هواتف الاختبار لدينا، يستغرق فتح القفل مرة واحدة من 0.6 إلى 0.9 ثانية تقريبًا.
- يُمزج النقش مع ملح الجهاز، وهو قيمة عشوائية بحجم 16 بايت. يُحفظ الملح في التطبيق مشفّرًا بمفتاح موجود في Android Keystore، ولا يمكن نسخ هذا المفتاح خارج الهاتف.
- لا تُحفظ أي نسخة من النقش. يتحقق التطبيق من النقش بمحاولة فتح المفتاح به.
- بعد 5 محاولات نقش خاطئة متتالية، يجب أن تنتظر 30 ثانية. وتتضاعف مدة الانتظار بعد كل خطأ إضافي، حتى 16 دقيقة.
كيف تُشفَّر الملفات
- لكل خزنة مفتاح رئيسي عشوائي بطول 256 بت. أما مفتاح النقش ومفتاح الاسترداد فدورهما فقط "تغليف" (تشفير) هذا المفتاح الرئيسي.
- تُشفَّر الملفات والصور المصغّرة وقائمة عناصرك (أسماء الملفات الأصلية والتواريخ والأحجام) باستخدام AES-256-GCM، عبر التشفير المدمج في Android. ويكشف GCM أيضًا ما إذا كان ملف قد عُدّل أو استُبدل.
- للملفات داخل التطبيق أسماء عشوائية. وتُشفَّر الملفات الكبيرة على أجزاء بحجم 1 MiB، فتُشغَّل الفيديوهات دون أن تُكتب أبدًا نسخة غير مشفّرة في وحدة التخزين.
- بالنسبة إلى صور JPEG، تُحفظ التفاصيل المخفية (EXIF، مثل الكاميرا والتاريخ) بشكل منفصل، وهي مشفّرة أيضًا.
- عندما يُقفل التطبيق، يستبدل بالمفاتيح الموجودة في الذاكرة أصفارًا.
عبارة الاسترداد
- عند إنشاء خزنة، يختار مولّد الأرقام العشوائية الآمن في الهاتف 9 كلمات إنجليزية. تأتي الكلمات من قائمتين تضم كل منهما 1,024 كلمة شائعة، بأحد 4 ترتيبات ثابتة. وهذا يعادل 92 بت من العشوائية. الكلمات إنجليزية في كل لغات التطبيق.
- تمر العبارة بإعدادات Argon2id نفسها، وتفتح المفتاح الرئيسي وحدها. لا تحتاج إلى ملح الجهاز، لذلك تعمل حتى عندما لا يعود النقش يعمل.
- تُحفظ نسخة من العبارة على الهاتف مشفّرة مرتين: مرة بالمفتاح الرئيسي ومرة بمفتاح من Android Keystore. يمكنك رؤيتها في الإعدادات بعد رسم النقش مرة أخرى.
- عندما تغيّر النقش أو تستخدم العبارة للدخول من جديد، تحصل على عبارة جديدة. وتتوقف القديمة عن العمل.
بصمة الإصبع
الفتح ببصمة الإصبع اختياري. يتحقق Android من البصمة، وليس LifeVeil؛ فالتطبيق لا يتلقى بصمتك أبدًا. يفتح المفتاحَ الرئيسي مفتاحٌ في Android Keystore لا يعمل إلا مباشرة بعد تحقق بيومتري قوي. إذا أضاف أحد بصمة جديدة إلى الهاتف، يتوقف هذا المفتاح عن العمل ويجب أن تستخدم النقش مرة أخرى.
ملف النسخة الاحتياطية
- النسخة الاحتياطية ملف واحد بامتداد
.lvb. يحتوي على عناصرك كما هي مشفّرة أصلًا، بالإضافة إلى نسختين مغلّفتين من المفتاح الرئيسي: واحدة للنقش الذي رسمته عند إنشاء النسخة الاحتياطية، وأخرى لعبارة الاسترداد التي كانت لديك وقتها. - تستخدم نسخة النقش ملحًا عشوائيًا جديدًا لكل نسخة احتياطية، وليس ملح الجهاز. وهذا ما يتيح لك فتح النسخة الاحتياطية على هاتف جديد.
- رأس الملف محمي، بحيث يُكتشف أي تعديل أو استبدال لأجزاء منه.
- تختار مكان الحفظ من شاشة الحفظ الخاصة بـ Android. ولا يمر الملف عبرنا أبدًا.
- للاستعادة، افتح الملف بالنقش أو العبارة الخاصين به. بعدها ترسم نقشًا جديدًا وتحصل على عبارة استرداد جديدة.
وسائل حماية أخرى في التطبيق
- لقطات الشاشة وتسجيل الشاشة والمعاينة في قائمة التطبيقات الأخيرة محظورة في كل الشاشات.
- افتراضيًا، يُقفل التطبيق فور مغادرته. ويمكنك اختيار 30 ثانية أو دقيقة واحدة بدلًا من ذلك.
- النسخ الاحتياطي السحابي في Android والنقل من هاتف إلى آخر لا يشملان بيانات LifeVeil. استخدم ملف النسخة الاحتياطية بدلًا من ذلك.
- لا يطلب التطبيق الوصول إلى الموقع أو جهات الاتصال أو "جميع الملفات".
- خزنة فارغة عند النقش الخاطئ. النقش الذي لا يفتح أي خزنة يفتح خزنة فارغة بدلاً من رسالة خطأ، فلا يعرف من يجبرك على فتح التطبيق ما الذي يوجد غير ذلك. تبقى المحاولات الخاطئة محسوبة، وتبقى صور المتطفلين تُلتقط، ويبقى الانتظار مطبقًا. يمكنك إيقاف ذلك من الإعدادات > الأمان > خزنة فارغة عند النقش الخاطئ.
الذكاء الاصطناعي وتخمين النقش
- لا يستطيع الذكاء الاصطناعي تجاوز الحسابات. كل تخمين لا يزال يتطلب تشغيل Argon2id بذاكرة 64 MiB. الذكاء الاصطناعي لا يكسر Argon2id ولا AES، لذلك لا يصبح أي تخمين أرخص.
- ما يغيّره الذكاء الاصطناعي هو ترتيب التخمينات. يمكنه أن يتعلم الأشكال التي يفضّلها الناس (الحروف، والمربعات، وزوايا البدء المفضّلة) ويجربها أولًا. ويمكنه أيضًا المساعدة في قراءة النقش من فيديو صُوّر من فوق كتفك، أو من آثار الأصابع على الشاشة.
- لذلك تركّز وسائل الدفاع على النقش، لا على الحسابات. يحذّرك مقياس القوة من الأشكال الشائعة. يضيف النقش + PIN رمز PIN من 4–6 أرقام، فلا يكفي نقش ظهر في فيديو. ولا يترك إخفاء خط النقش أي خط يمكن تصويره. ويمنع ملح الجهاز المحفوظ في Android Keystore التخمين خارج الهاتف.
حدود يجب أن تعرفها
لا يوجد تطبيق يحمي من كل شيء. هذه هي حدود LifeVeil بصراحة.
يمكن تخمين النقوش البسيطة
يمكن تخمين الأشكال القصيرة أو الشائعة (حرف L، أو حرف Z، أو خط مستقيم) بمراقبتك، أو من آثار الأصابع على الشاشة، أو ببضع محاولات. النقوش الحقيقية أسهل في التخمين بكثير مما يوحي به عدد النقوش الممكنة. استخدم نقاطًا أكثر وانعطافات أكثر. يحذّرك التطبيق من النقوش البسيطة جدًا.
كم قد يستغرق التخمين
داخل التطبيق، تستغرق كل محاولة ثانية تقريبًا، وتطول مدة الانتظار بعد 5 أخطاء. لكن من يملك ملف النسخة الاحتياطية، أو أخذ ملح الجهاز من هاتف بصلاحيات الجذر (root)، يمكنه التخمين على كمبيوتر بدلًا من ذلك، دون أي انتظار. يبطئ Argon2id ذلك، لكن احتمالات النقش أقل بكثير من احتمالات كلمة مرور طويلة. تقديرات تقريبية لبطاقة رسومات واحدة متطورة (من فئة RTX 4090) بمعدل نحو 1,000 تخمين في الثانية:
| ما يتم تخمينه | عدد الاحتمالات | الوقت، ببطاقة رسومات واحدة |
|---|---|---|
| أكثر 10,000 نقش شيوعًا | 104 | نحو 10 ثوانٍ |
| كل النقوش من 6 نقاط | 1.28 × 108 | نحو 1.5 يوم |
| كل النقوش من 7 نقاط | 2.42 × 109 | نحو 28 يومًا |
| كل النقوش من 8 نقاط | 4.36 × 1010 | نحو 1.4 سنة |
| عبارة الاسترداد (92 بت) | 4.95 × 1027 | نحو 1.6 × 1017 سنة |
هذه تقديرات وليست قياسات. أعداد النقوش هي حدود قصوى؛ والنقوش الحقيقية أقل بكثير. وكلما زادت الأجهزة أو زادت سرعتها، أصبح التخمين أسرع بالنسبة نفسها.
احتفظ بملف النسخة الاحتياطية لنفسك
لا يحتوي ملف النسخة الاحتياطية على ملح الجهاز، لذلك يمكن لأي شخص يحصل عليه أن يجرّب النقوش دون اتصال، كما هو موضح أعلاه. احفظه فقط في مكان لا يصل إليه أحد سواك، مثل حسابك السحابي الخاص، واستخدم نقشًا أطول.
الهواتف ذات صلاحيات الجذر أو المصابة
إذا استطاع أحد تشغيل تعليمات برمجية بصلاحيات التطبيق (مثلًا على هاتف بصلاحيات الجذر، أو عبر برنامج ضار يتحكم بالهاتف بالكامل)، فيمكنه فتح ملح الجهاز والتخمين دون اتصال. وأثناء فتح الخزنة، تكون المفاتيح في الذاكرة ويمكن قراءتها بصلاحيات الجذر أو بمصحّح أخطاء. وبعض النسخ التي تُنشأ داخل Android وFlutter، والصور المعروضة على الشاشة، لا يمكن مسحها من الذاكرة فورًا.
بعض المعلومات ظاهرة
عدد الملفات المشفّرة في وحدة تخزين التطبيق، وأحجامها التقريبية، ووقت إنشائها أو تعديلها، ليست مخفية. ولا حقيقة أن LifeVeil مثبّت على الهاتف.
الخزنة الفارغة تخدع الشاشة فقط
من يستطيع قراءة ملفات التطبيق (على هاتف مزوّد بصلاحيات الروت مثلاً) يمكنه عدّ مجلدات الخزنات ورؤية أن هذا الإعداد مفعّل. وبعد 5 نقوش خاطئة يجعلك التطبيق تنتظر، وهذا يكشف أن النقوش السابقة لم تفتح شيئًا.
التمويه يغيّر الشاشة الرئيسية فقط
- تتغيّر فقط أيقونة التطبيق واسمه في المشغّل. أما قائمة الإعدادات > التطبيقات في الهاتف، وشاشة معلومات التطبيق، وشاشات التخزين، فلا تزال تعرض LifeVeil.
- قد تنطق قارئات الشاشة "LifeVeil". على سبيل المثال، يمرّر مشغّل Samsung One UI اسم التطبيق الحقيقي إلى TalkBack، ولا يستطيع التطبيق تغيير ذلك.
- تعرض قائمة المشاركة في Android دائمًا اسم التطبيق الحقيقي، لذلك يُخرج LifeVeil نفسه منها عند تغيير الأيقونة. ويمكنك إعادته إليها.
- تعرض طلبات الأذونات في Android الاسم الحقيقي، لذلك يطلب التطبيق الأذونات قبل أن تغيّر الأيقونة.
- ما دامت الأيقونة مغيّرة، لا يرسل التطبيق إشعارات.
- رمز التمويه (من 4 إلى 8 أرقام) يُظهر شاشة القفل فقط، ولا يفتح ملفاتك. يُحفظ كتجزئة مملّحة (salted hash)، لكن مع هذا العدد القليل من الاحتمالات يسهل اكتشافه إذا حصل أحد على الملف.
بصمة الإصبع طريق أضعف
الفتح ببصمة الإصبع لا يمر عبر Argon2id. وتعتمد قوته على مستشعر البصمة في هاتفك وعلى Android Keystore. يمكنك إيقافه من الإعدادات في أي وقت.
صور المتطفلين
لا يُصدر التطبيق صوت الغالق، لكن الهواتف التي تُباع في بعض البلدان، مثل اليابان وكوريا، تُصدره دائمًا. لا تُلتقط أي صورة إذا كان تطبيق آخر يستخدم الكاميرا أو إذا لم تكن هناك كاميرا أمامية. وإلى أن تفتح أول خزنة أنشأتها، تبقى الصور محمية بمفتاح من Android Keystore.
تفاصيل الصور
- بالنسبة إلى صور HEIC وPNG وWebP، تبقى التفاصيل المخفية (EXIF) داخل الملف. ومع ذلك يبقى الملف كله مشفّرًا.
- على Android 10 والإصدارات الأحدث، يزيل Android موقع GPS من الصور التي يقرأها LifeVeil، لأن التطبيق لا يطلب الوصول إلى الموقع. وعند حذف الصورة الأصلية من المعرض، يضيع ذلك الموقع.
- الصور المضافة عبر أداة اختيار الصور في Android تحصل على أسماء جديدة مبنية على التاريخ، لأن أداة الاختيار لا تعطي الاسم الأصلي.
يتوقف القفل مؤقتًا أثناء شاشات النظام
أثناء فتح شاشة من شاشات النظام (طلب إذن، أو تأكيد حذف، أو أداة اختيار الصور أو الملفات، أو طلب بصمة الإصبع) وأثناء تشغيل استيراد أو تصدير، ينتظر التطبيق قبل أن يُقفل. وإذا كنت قد غادرت التطبيق، فإنه يُقفل بعد ثانيتين من انتهاء ذلك.
الخزنات تشترك في ملح جهاز واحد
تستخدم كل الخزنات على الهاتف ملح الجهاز نفسه. إذا كان هذا الملح لدى أحد، فإن تخمينًا واحدًا يختبر كل الخزنات في وقت واحد. أما تكلفة مهاجمة خزنة واحدة فتبقى كما هي.
أمور لا يستطيع أي تطبيق منعها
شخص يراقبك وأنت ترسم النقش، أو كاميرا تصوّر شاشتك.
إذا فقدتهما معًا، فلن يستطيع أحد المساعدة
إذا فقدت النقش وعبارة الاسترداد معًا، فلن يتمكن أحد من استعادة ملفاتك. ولا حتى نحن.