SHARE THE PERSPECTIVE
تطابق قيمة التحقق البايتات بمرجع، ويربط التوقيع سلامتها بمفتاح. ولا يثبت أي منهما وحده أن البرنامج آمن.

قبل تثبيت ملف APK على أندرويد، ميّز بين ثلاثة اختبارات: هل يطابق هذا الملف الإصدار المتوقع؟ هل وُقّع بالمفتاح المتوقع؟ وهل يستطيع مطوّرون مستقلون إعادة بنائه من المصدر المعلن؟ تتناول قيمة SHA-256 وتوقيع APK والبناء القابل لإعادة الإنتاج هذه الأسئلة بطرق مختلفة.

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

ما الذي تثبته كل طريقة للتحقق؟

الاختبار النتيجة المفيدة قيد مهم
بصمة ملف SHA-256 تطابق بايتات ملفك بصمة موثوقة بعينها يستطيع مهاجم يستبدل الملف والبصمة معاً إبطال فائدة هذه المقارنة
التحقق من توقيع APK يصح توقيع الحزمة باستخدام شهادة التوقيع الخاصة بها يجب أن تحدد مفتاح التوقيع المتوقع؛ صحة التوقيع وحدها لا تثبت هوية الناشر
مقارنة بناء قابل لإعادة الإنتاج يمكن إعادة إنشاء ملف الإصدار المحدد من مدخلات موثقة تطابق المصدر والملف التنفيذي لا يثبت أمان المصدر
مراجعة أمنية جرى تقييم مسائل محددة في التصميم أو التنفيذ نطاقها وإصدارها ونتائجها والمشكلات غير المحلولة أمور مهمة

يشترط أندرويد توقيع ملفات APK للتثبيت والتحديث. مع Play App Signing، يمكن لـGoogle إدارة مفتاح توقيع التطبيق وإنشاء ملفات APK للتوزيع من حزمة تطبيق. هذه ترتيبات ثقة موثقة، وليست دليلاً على أن أي وسيط يستطيع تغيير الحزمة سراً مع الحفاظ على صحة توقيعها. راجع دليل أندرويد لتوقيع التطبيقات.

الخطوة 1: حدّد ملف الإصدار المقصود بدقة

دوّن إصدار التطبيق وقناة الإصدار واسم الملف والنسخة المناسبة للمنصة. استخدم صفحة التوزيع الرسمية للناشر، لا قيمة تحقق منسوخة من الرسالة غير المطلوبة نفسها التي وصل معها ملف APK.

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

السؤال العملي هو: من أين جاءت القيمة المتوقعة، ولماذا أثق بهذا المصدر؟ حساب البصمة دون اتصال لا يحل مشكلة الثقة ببصمة مرجعية حصلت عليها عبر الإنترنت.

الخطوة 2: احسب SHA-256 محلياً

استبدل messenger.apk باسم الملف الذي حمّلته. تقرأ هذه الأمثلة الملف ولا تثبّته.

Linux:

sha256sum messenger.apk

macOS:

shasum -a 256 messenger.apk

موجه الأوامر في Windows:

certutil -hashfile messenger.apk SHA256

قارن البصمة كاملة، مع تجاهل مسافات العرض وحالة الأحرف فقط. لا تكتفِ بمقارنة أول بضعة أحرف أو آخرها. احتفظ بالبصمة المتوقعة إلى جانب معلومات إصدارها كي يمكن تكرار المقارنة.

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

الخطوة 3: تحقّق من توقيع APK

لمن يستخدمون Android SDK Build Tools، تشرح وثائق apksigner من Google التحقق من التوقيع وعرض معلومات الشهادة:

apksigner verify --verbose --print-certs messenger.apk

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

بصمة SHA-256 لملف APK وبصمة SHA-256 لشهادة توقيعه قيمتان مختلفتان. لا تقارن إحداهما بالأخرى.

الخطوة 4: ابحث عن أدلة على إمكانية إعادة إنتاج البناء

يتطلب الادعاء بإمكانية إعادة إنتاج البناء تحديد مراجعة الشيفرة المصدرية وبيئة البناء والتعليمات والملف المستهدف. ينبغي أن تتمكن جهات مستقلة من إعادة إنشاء ذلك الملف ومقارنة النتيجة. يجعل تعريف مشروع Reproducible Builds هذه المدخلات جزءاً من الادعاء.

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

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

أين يقع Proof Lab من ليفارا ضمن هذه الصورة؟

يوفر Proof Lab من ليفارا حساب بصمة APK محلياً ومقارنتها بالبصمة المنشورة. عروضه التوضيحية للتشفير أضيق نطاقاً من تدقيق بروتوكول المراسلة بالكامل. استخدم اختبار البصمة لغرضه المعلن، إلى جانب معلومات الإصدار والتوقيع المتوقعة؛ ولا تعتبره دليلاً مستقلاً على إمكانية إعادة إنتاج البناء أو غياب الأبواب الخلفية.

يذكر نموذج التهديدات صراحةً القيد المتمثل في إمكانية استبدال ملف APK والبصمة المعروضة معاً. لذلك تهمّ موثوقية مصدر القيمة المرجعية بقدر ما تهمّ صحة تنفيذ الحساب.

الأسئلة الشائعة

هل يثبت تطابق قيمة التحقق أن ملف APK آمن؟

لا. يثبت التطابق مع البصمة المرجعية، بافتراض موثوقية المرجع والخصائص الأمنية لدالة التجزئة. لكنه لا يقيّم سلوك البرنامج.

هل يصبح التحقق من التوقيع غير ضروري إذا تطابقت قيمة التحقق؟

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

هل يجب أن يطابق تنزيل المتجر بصمة APK المنشورة على الموقع؟

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

هل تكشف هذه الاختبارات برامج التجسس الموجودة بالفعل على هاتفي؟

لا. إنها تقيّم ملف التثبيت، لا كل مكونات الحالة الحالية للجهاز أثناء التشغيل.

تحقّق من ملف إصدارك في Proof Lab
CONTINUE THE THREADAndroid & device security ↗
YOU’VE REACHED THE ENDBack to the reading room ↗