في عدد من الدول العربية، يلجأ كثير من المستخدمين إلى تحميل تطبيقات APK من مواقع خارجية أو قنوات تيليجرام بدلًا من متجر Google Play — بسبب قيود توفر بعض التطبيقات إقليميًا أو محدودية الوصول إليه في بعض البلدان. وقد وثّقت جهات أمنية عدة حملات احتيال تستغل هذا السلوك، منها تطبيقات مزيّفة تنتحل صفة تطبيقات دينية أو خدمية معروفة (كتطبيقات القرآن الكريم أو حجوزات الحج والعمرة) لتوزيع برمجيات خبيثة. مطابقة المجموع الاختباري المنشور من المصدر الرسمي مع الملف المُنزَّل وسيلة بسيطة لرصد هذا النوع من الاستبدال قبل التثبيت.
كيف يكتشف المجموع الاختباري التلف أو التلاعب
بسبب تأثير الانهيار الجليدي في دوال التجزئة، سواء كان التغيير نتيجة تلف عرضي أثناء النقل أو تعديلًا متعمدًا، فإن تغيير بايت واحد فقط يغيّر تمامًا التجزئة المحسوبة للملف. لذا أي اختلاف بين المجموع الاختباري المتوقّع والمحسوب يعني بوضوح أن الملف يختلف عن الأصل — بايتًا بايت.
ما لا يضمنه المجموع الاختباري
تطابق التجزئات يؤكد فقط أن الملف مطابق للملف الذي حُسبت منه التجزئة المنشورة — لا أن هذا الأصل آمن. فإذا كان الموقع المزيّف نفسه هو من ينشر الملف والمجموع الاختباري "المطابق" له معًا، فلن يكتشف التحقق شيئًا — لذلك يجب الحصول على التجزئة المرجعية من الموقع الرسمي للجهة المُصدِرة، لا من نفس المصدر الذي نزّلت منه الملف المشكوك فيه.
المجموع الاختباري مقابل التوقيع الرقمي
بخلاف المجموع الاختباري، يُنشأ التوقيع الرقمي بمفتاح خاص ولا يمكن التحقق منه إلا بالمفتاح العام المطابق. متجر Google Play يتحقق من هذا التوقيع تلقائيًا عند التثبيت، لكن عند تثبيت ملف APK يدويًا خارج المتجر تختفي هذه الحماية، ويصبح التحقق اليدوي من المجموع الاختباري خط الدفاع الوحيد المتبقي.
لماذا نحتاج هذا
- التأكد من سلامة ملف APK مُحمَّل يدويًا من مصدر غير رسمي.
- مقارنة ملفين كبيرين بسرعة دون مقارنتهما بايتًا بايت.
- التحقق من أن نسخة احتياطية لملف مطابقة للأصل.
لماذا يُستخدم CRC32 أحيانًا بدلًا من SHA-256
CRC32 أسرع بكثير من دوال التجزئة التشفيرية، لكن تزويره عمدًا سهل جدًا — وهذا ليس مشكلة عند اكتشاف تلف عرضي أثناء النقل، لكنه غير مناسب كحماية من مهاجم يريد استبدال الملف دون أن يُلاحَظ. لذا لا يزال CRC32 يظهر في برامج الأرشفة وبروتوكولات الشبكات لضبط الأخطاء، لا في المواضع التي تتطلب أمانًا فعليًا.