كيف يحمي 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، ولا يمكن نسخ هذا المفتاح خارج الهاتف.
- لا تُحفظ أي نسخة من النقش، باستثناء النسخة المحفوظة مع عبارة الاسترداد (انظر أدناه). يتحقق التطبيق من النقش بمحاولة فتح المفتاح به.
- كل ما تكتبه في خانة الرقم السري فوق النقاط يدخل في عملية اشتقاق المفتاح نفسها مع النقش. والخانة الفارغة تعني النقش وحده.
مستويات الأمان
لكل خزنة مستوى واحد. تختاره عند البدء، ويمكنك تغييره لاحقًا من الإعدادات > الخزنة > مستوى الأمان، بعد رسم النقش مرة أخرى.
- أعلى أمان (Ultra): النقش ورقم سري من 6 إلى 8 أرقام، وكلاهما في ذهنك فقط. آمن حتى من التخمين بالذكاء الاصطناعي. إذا نسيت أيًّا منهما، فلا يمكن استرداد الخزنة.
- المستوى 1 (موصى به): النقش فقط. آمن إذا تجنّبت الأشكال الشائعة. إذا نسيته، فلا يمكن استرداد الخزنة.
- المستوى 2: النقش وعبارة استرداد مكتوبة على ورقة. يمكنك الدخول من جديد إذا نسيت النقش، لكن من يجد الورقة يستطيع أيضًا فتح الخزنة.
- المستوى 3: النقش وبصمة الإصبع. الأكثر راحة، لكن قد يجبرك أحد على وضع إصبعك على المستشعر. تعمل البصمة لخزنة واحدة فقط.
كيف تُشفَّر الملفات
- لكل خزنة مفتاح رئيسي عشوائي بطول 256 بت. أما مفتاح النقش ومفتاح الاسترداد فدورهما فقط "تغليف" (تشفير) هذا المفتاح الرئيسي.
- تُشفَّر الملفات والصور المصغّرة وقائمة عناصرك (أسماء الملفات الأصلية والتواريخ والأحجام) باستخدام AES-256-GCM، عبر التشفير المدمج في Android. ويكشف GCM أيضًا ما إذا كان ملف قد عُدّل أو استُبدل.
- للملفات داخل التطبيق أسماء عشوائية. وتُشفَّر الملفات الكبيرة على أجزاء بحجم 1 MiB، فتُشغَّل الفيديوهات دون أن تُكتب أبدًا نسخة غير مشفّرة في وحدة التخزين.
- بالنسبة إلى صور JPEG، تُحفظ التفاصيل المخفية (EXIF، مثل الكاميرا والتاريخ) بشكل منفصل، وهي مشفّرة أيضًا.
- عندما يُقفل التطبيق، يستبدل بالمفاتيح الموجودة في الذاكرة أصفارًا.
عبارة الاسترداد
- عبارة الاسترداد اختيارية. لا تحصل الخزنة على عبارة إلا عندما تختار المستوى 2، وتُحفظ بعد أن تجتاز اختبارًا قصيرًا.
- يختار مولّد الأرقام العشوائية الآمن في الهاتف 9 كلمات إنجليزية. تأتي الكلمات من قائمتين تضم كل منهما 1,024 كلمة شائعة، بأحد 4 ترتيبات ثابتة. وهذا يعادل 92 بت من العشوائية. الكلمات إنجليزية في كل لغات التطبيق.
- تمر العبارة بإعدادات Argon2id نفسها، وتفتح المفتاح الرئيسي وحدها. لا تحتاج إلى ملح الجهاز، لذلك تعمل حتى عندما لا يعود النقش يعمل.
- تُحفظ على الهاتف نسخة من العبارة ونسخة من نقش الخزنة (ورقمها السري)، وكل منهما مشفّرة مرتين: مرة بالمفتاح الرئيسي ومرة بمفتاح من Android Keystore. عندما تفتح العبارة الخزنة، يعرض التطبيق النقش مرة واحدة. ويُنسى عندما يُقفل التطبيق.
- تبقى العبارة كما هي عندما تغيّر النقش. والخزنة التي ليست لها عبارة لا سبيل للعودة إليها إذا نُسي النقش.
بصمة الإصبع
الفتح ببصمة الإصبع اختياري ويعمل لخزنة واحدة. يتحقق Android من البصمة، وليس LifeVeil؛ فالتطبيق لا يتلقى بصمتك أبدًا. يفتح المفتاحَ الرئيسي مفتاحٌ في Android Keystore لا يعمل إلا مباشرة بعد تحقق بيومتري قوي. إذا أضاف أحد بصمة جديدة إلى الهاتف، يتوقف هذا المفتاح عن العمل ويجب أن تستخدم النقش مرة أخرى.
ملف النسخة الاحتياطية
- النسخة الاحتياطية ملف واحد بامتداد
.lvb. يحتوي على عناصرك كما هي مشفّرة أصلًا، بالإضافة إلى نسخ مغلّفة من المفتاح الرئيسي: واحدة للنقش الذي رسمته عند إنشاء النسخة الاحتياطية، وأخرى لعبارة الاسترداد إن كانت للخزنة عبارة. - تستخدم نسخة النقش ملحًا عشوائيًا جديدًا لكل نسخة احتياطية، وليس ملح الجهاز. وهذا ما يتيح لك فتح النسخة الاحتياطية على هاتف جديد.
- رأس الملف محمي، بحيث يُكتشف أي تعديل أو استبدال لأجزاء منه.
- تختار مكان الحفظ من شاشة الحفظ الخاصة بـ Android. ولا يمر الملف عبرنا أبدًا.
- للاستعادة، افتح الملف بالنقش أو العبارة الخاصين به. بعدها ترسم نقشًا جديدًا. وتبدأ الخزنة المستعادة دون عبارة استرداد.
وسائل حماية أخرى في التطبيق
- لقطات الشاشة وتسجيل الشاشة والمعاينة في قائمة التطبيقات الأخيرة محظورة في كل الشاشات.
- افتراضيًا، يُقفل التطبيق فور مغادرته. ويمكنك اختيار 30 ثانية أو دقيقة واحدة بدلًا من ذلك.
- النسخ الاحتياطي السحابي في Android والنقل من هاتف إلى آخر لا يشملان بيانات LifeVeil. استخدم ملف النسخة الاحتياطية بدلًا من ذلك.
- لا يطلب التطبيق الوصول إلى الموقع أو جهات الاتصال أو "جميع الملفات".
- خزنة فارغة لكل نقش جديد. الخزنة التي ليس فيها ملفات تبدو كما هي سواء حُفظت أم لا، فلا يعرف من يجبرك على فتح التطبيق ما الذي يوجد غير ذلك. يمكنك إيقاف ذلك من الإعدادات > الأمان، وعندها يُظهر النقش الذي لا يفتح شيئًا رسالة خطأ.
إبطاء التخمين
لأن كل نقش يفتح خزنة، يبدو التخمين كأنه فتح لخزنات فارغة كثيرة. يبطئ LifeVeil ذلك دون أن يذكره على الشاشة، ومدة الانتظار واحدة لكل نقش، بما فيها النقش الصحيح.
- خلال 24 ساعة، يضيف فتح خزنات ليس فيها ملفات 10 مرات 10 ثوانٍ إلى كل فتح، و20 مرة تضيف 60 ثانية، و30 مرة تضيف 5 دقائق، وهو الحد الأقصى.
- علامات الأتمتة تؤدي مباشرة إلى الحد الأقصى: نقوش تكتمل بفارق أقل من ثانيتين ثلاث مرات متتالية، أو لمسات تأتي من خدمات تسهيل الاستخدام أو من إدخال مُحقَن بدلًا من إصبع.
- كل 24 ساعة دون فتح خزنة فارغة تخفّفه درجة واحدة. وإرجاع ساعة الهاتف إلى الوراء لا يقصّره.
- يعمل هذا داخل التطبيق فقط. ولا يبطئ التخمين على كمبيوتر باستخدام ملف منسوخ (انظر الحدود أدناه).
الذكاء الاصطناعي وتخمين النقش
- لا يستطيع الذكاء الاصطناعي تجاوز الحسابات. كل تخمين لا يزال يتطلب تشغيل Argon2id بذاكرة 64 MiB. الذكاء الاصطناعي لا يكسر Argon2id ولا AES، لذلك لا يصبح أي تخمين أرخص.
- ما يغيّره الذكاء الاصطناعي هو ترتيب التخمينات. يمكنه أن يتعلم الأشكال التي يفضّلها الناس (الحروف، والمربعات، وزوايا البدء المفضّلة) ويجربها أولًا. ويمكنه أيضًا المساعدة في قراءة النقش من فيديو صُوّر من فوق كتفك، أو من آثار الأصابع على الشاشة.
- لذلك تركّز وسائل الدفاع على النقش، لا على الحسابات. يحذّرك التطبيق من الأشكال الشائعة. ويضيف المستوى الأعلى من الأمان رقم سري من 6 إلى 8 أرقام، فلا يكفي نقش ظهر في فيديو. ولا يترك إخفاء خط النقش أي خط يمكن تصويره. ويمنع ملح الجهاز المحفوظ في Android Keystore التخمين خارج الهاتف.
حدود يجب أن تعرفها
لا يوجد تطبيق يحمي من كل شيء. هذه هي حدود LifeVeil بصراحة.
يمكن تخمين النقوش البسيطة
يمكن تخمين الأشكال القصيرة أو الشائعة (حرف L، أو حرف Z، أو خط مستقيم) بمراقبتك، أو من آثار الأصابع على الشاشة، أو ببضع محاولات. النقوش الحقيقية أسهل في التخمين بكثير مما يوحي به عدد النقوش الممكنة. استخدم نقاطًا أكثر وانعطافات أكثر. يحذّرك التطبيق من النقوش البسيطة جدًا، وكذلك قبل حفظ خزنة يقل نقشها عن 6 نقاط.
كم قد يستغرق التخمين
داخل التطبيق، تستغرق كل محاولة ثانية تقريبًا، ويؤدي التخمين المتكرر إلى إبطاء كل فتح، حتى 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 سنة |
هذه تقديرات وليست قياسات. أعداد النقوش هي حدود قصوى؛ والنقوش الحقيقية أقل بكثير. وكلما زادت الأجهزة أو زادت سرعتها، أصبح التخمين أسرع بالنسبة نفسها. والرقم السري في المستوى الأعلى يضاعف هذه الأرقام حتى 108 مرة.
احتفظ بملف النسخة الاحتياطية لنفسك
لا يحتوي ملف النسخة الاحتياطية على ملح الجهاز، لذلك يمكن لأي شخص يحصل عليه أن يجرّب النقوش دون اتصال، كما هو موضح أعلاه. احفظه فقط في مكان لا يصل إليه أحد سواك، مثل حسابك السحابي الخاص، واستخدم نقشًا أطول.
عبارة الاسترداد تُظهر النقش أيضًا
من يملك عبارة الاسترداد لخزنة يستطيع فتح تلك الخزنة، ثم يعرض له التطبيق نقشها ورقمها السري. وإذا كنت تستخدم النقش نفسه في مكان آخر، مثل قفل شاشة هاتفك، فسيعرفه هو أيضًا. احفظ الورقة بعناية لا تقل عن عنايتك بالملفات نفسها.
الهواتف ذات صلاحيات الجذر أو المصابة
إذا استطاع أحد تشغيل تعليمات برمجية بصلاحيات التطبيق (مثلًا على هاتف بصلاحيات الجذر، أو عبر برنامج ضار يتحكم بالهاتف بالكامل)، فيمكنه فتح ملح الجهاز والتخمين دون اتصال. وأثناء فتح الخزنة، تكون المفاتيح في الذاكرة ويمكن قراءتها بصلاحيات الجذر أو بمصحّح أخطاء. وبعض النسخ التي تُنشأ داخل Android وFlutter، والصور المعروضة على الشاشة، لا يمكن مسحها من الذاكرة فورًا.
بعض المعلومات ظاهرة
عدد الملفات المشفّرة في وحدة تخزين التطبيق، وأحجامها التقريبية، ووقت إنشائها أو تعديلها، ليست مخفية. ولا حقيقة أن LifeVeil مثبّت على الهاتف.
الخزنة الفارغة تخدع الشاشة فقط
من يستطيع قراءة ملفات التطبيق (على هاتف مزوّد بصلاحيات الروت مثلاً) يمكنه عدّ مجلدات الخزنات ورؤية أن هذا الإعداد مفعّل. ويحسب الإبطاء الخزنات الفارغة المحفوظة وغير المحفوظة بالطريقة نفسها، فلا يميّز الانتظار نفسه بينها.
التمويه يغيّر الشاشة الرئيسية فقط
- تتغيّر فقط أيقونة التطبيق واسمه في المشغّل. أما قائمة الإعدادات > التطبيقات في الهاتف، وشاشة معلومات التطبيق، وشاشات التخزين، فلا تزال تعرض LifeVeil.
- قد تنطق قارئات الشاشة "LifeVeil". على سبيل المثال، يمرّر مشغّل Samsung One UI اسم التطبيق الحقيقي إلى TalkBack، ولا يستطيع التطبيق تغيير ذلك.
- تعرض قائمة المشاركة في Android دائمًا اسم التطبيق الحقيقي، لذلك يُخرج LifeVeil نفسه منها عند تغيير الأيقونة. ويمكنك إعادته إليها.
- تعرض طلبات الأذونات في Android الاسم الحقيقي، لذلك يطلب التطبيق الأذونات قبل أن تغيّر الأيقونة.
- ما دامت الأيقونة مغيّرة، لا يرسل التطبيق إشعارات.
- رمز التمويه (من 4 إلى 8 أرقام) يُظهر شاشة القفل فقط، ولا يفتح ملفاتك. يُحفظ كتجزئة مملّحة (salted hash)، لكن مع هذا العدد القليل من الاحتمالات يسهل اكتشافه إذا حصل أحد على الملف.
بصمة الإصبع طريق أضعف
الفتح ببصمة الإصبع لا يمر عبر Argon2id. وتعتمد قوته على مستشعر البصمة في هاتفك وعلى Android Keystore. يمكنك إيقافه من الإعدادات في أي وقت.
تفاصيل الصور
- بالنسبة إلى صور HEIC وPNG وWebP، تبقى التفاصيل المخفية (EXIF) داخل الملف. ومع ذلك يبقى الملف كله مشفّرًا.
- على Android 10 والإصدارات الأحدث، يزيل Android موقع GPS من الصور التي يقرأها LifeVeil، لأن التطبيق لا يطلب الوصول إلى الموقع. وعند حذف الصورة الأصلية من المعرض، يضيع ذلك الموقع.
- الصور المضافة عبر أداة اختيار الصور في Android تحصل على أسماء جديدة مبنية على التاريخ، لأن أداة الاختيار لا تعطي الاسم الأصلي.
يتوقف القفل مؤقتًا أثناء شاشات النظام
أثناء فتح شاشة من شاشات النظام (طلب إذن، أو تأكيد حذف، أو أداة اختيار الصور أو الملفات، أو طلب بصمة الإصبع) وأثناء تشغيل استيراد أو تصدير، ينتظر التطبيق قبل أن يُقفل. وإذا كنت قد غادرت التطبيق، فإنه يُقفل بعد ثانيتين من انتهاء ذلك.
الخزنات تشترك في ملح جهاز واحد
تستخدم كل الخزنات على الهاتف ملح الجهاز نفسه. إذا كان هذا الملح لدى أحد، فإن تخمينًا واحدًا يختبر كل الخزنات في وقت واحد. أما تكلفة مهاجمة خزنة واحدة فتبقى كما هي.
أمور لا يستطيع أي تطبيق منعها
شخص يراقبك وأنت ترسم النقش، أو كاميرا تصوّر شاشتك.
بلا عبارة، لا يستطيع أحد المساعدة
إذا نسيت نقش خزنة ليس لها عبارة استرداد، أو فقدت النقش والعبارة معًا، فلن يتمكن أحد من استعادة ملفاتها. ولا حتى نحن.