التحقق من توقيعات APK: كيفية التأكد من أن تطبيقك آمن
يوفر التحميل الجانبي للتطبيقات على Android الحرية والمرونة، ولكنه يأتي مع مخاطرة كبيرة: التطبيقات العبثية. غالبًا ما تقوم الجهات الفاعلة الضارة بتعديل التطبيقات الشائعة لتشمل برامج التجسس أو برامج الإعلانات المتسللة قبل إعادة توزيعها على مواقع غير رسمية. كيف يمكنك التأكد من أن ملف APK الذي قمت بتنزيله للتو هو نفسه الذي قام المطور بتحميله على Google Play؟
الجواب يأتي إلى APK التوقيعات الرقمية. أدناه، سنغطي كيفية عمل توقيع التطبيق فعليًا ونستعرض استخدام أداة التحقق من APK عبر الإنترنت للتحقق من تجزئة ملف APK وشهادته قبل أن تقرر الوثوق به.
نسخة 60 ثانية:
يقوم Android بتوقيع كل ملف APK باستخدام مفتاح الناشر. يرفض الهاتف "التحديث" الذي لا يتطابق توقيعه مع التثبيت الحالي؛ هذا هو الدفاع الرئيسي لنظام التشغيل ضد انتحال الشخصية. للتحقق من ملف APK تم تحميله على الجانب، قم بحساب تجزئة SHA-256 وبصمة شهادة التوقيع الخاصة به، ثم قارنهما بالقيم التي تثق بها (تثبيت متجر Play الحالي، أو البصمة المنشورة للمطور، أو نسخة سابقة معروفة جيدة). تعني المطابقة أن الملف متطابق بالبايت وموقع من قبل نفس الناشر؛ عدم التطابق يعني لا تقم بتثبيت.
ما هو توقيع APK؟
التوقيع الرقمي هو إثبات تشفير للهوية. عندما ينتهي المطور من تطبيق ما، فإنه "يوقعه" باستخدام مفتاح خاص (مخزن المفاتيح). يستخدم Android بعد ذلك المفتاح العام المقابل المضمن في APK لضمان ما يلي:
- النزاهة: الملف لم يتغير منذ التوقيع عليه.
- الأصالة: المطور هو من يقولون أنهم هم.
- التحديثات: فقط ملفات APK الموقعة بنفس المفتاح يمكنها تحديث تطبيق موجود على هاتفك.
تطور التوقيع: V1، V2، V3، وV4
قامت Google باستمرار بتحسين أمان APK على مر السنين:
- V1 (توقيع الجرة): يوقع الإدخالات الفردية في ملف ZIP. بطيء وعرضة لهجمات معينة.
- V2 (نظام توقيع APK): يوقع كتلة الملف بأكملها. أسرع بكثير للتحقق وأكثر أمنا. (Android 7.0+)
- V3 (تدوير المفتاح): يسمح للمطورين بتغيير مفتاح التوقيع الخاص بهم مع الحفاظ على تحديثات التطبيق. (Android 9.0+)
- الإصدار 4 (البث): مُحسّن للتثبيتات المتزايدة عبر ADB. (Android 11+)
كيفية التحقق من توقيعات APK عبر الإنترنت
لا يقوم أداة التحقق من APK الخاص بنا بحساب التجزئات فقط؛ يقوم بإجراء تدقيق تشفير كامل لسلسلة الشهادات. هنا كيفية استخدامه:
خطوات التحقق:
- انتقل إلى صفحة أداة التحقق من APK.
- حدد ملف APK أو XAPK الخاص بك.
- تقوم أداتنا بتوزيع دليل META-INF/ واستخراج بيانات الشهادة (.RSA أو .DSA أو .EC).
- انتظر حتى يكتمل التحليل (يستغرق ثواني فقط).
- قم بمراجعة معلومات الشهادة: اسم المطور والمؤسسة وبلد المنشأ.
- تحقق من التجزئة: قارن SHA-256 المعروض على موقعنا بالقيمة التي نشرها الناشر على موقعه الرسمي أو صفحة إصدار المشروع أو بيان التوقيع.
تحذير أمني
إذا أظهر برنامج التحقق "شهادة التصحيح" أو كيانًا غير معروف "موقّع ذاتيًا" لتطبيق رئيسي مثل Facebook أو WhatsApp، لا تقم بتثبيته. يكاد يكون من المؤكد أنه معرض للخطر.
فهم المجاميع الاختبارية (MD5، SHA-1، SHA-256)
المجموع الاختباري عبارة عن سلاسل ذات طول ثابت تمثل الملف بأكمله. إذا قمت بتغيير بكسل واحد في أيقونة التطبيق، فسوف يتغير تجزئة SHA-256 بالكامل.
| نوع التجزئة | مستوى الأمان | ملاحظات |
|---|---|---|
| MD5 | تراث | عرضة للاصطدامات. ليس من أجل الأمن. |
| SHA-1 | معتدل | لا يزال يستخدم على نطاق واسع لعمليات البحث السريعة. |
| SHA-256 | ممتاز | المعيار الحديث للتحقق من التطبيق. |
ما الذي تخبرك به شهادة التوقيع فعليًا
عندما يقوم المدقق بإرجاع شهادة، فإن الأجزاء المهمة لسلامة التحميل الجانبي ليست البتات الملونة لبيانات تعريف X.509 ولكن مجموعة صغيرة من الحقول. من الناحية العملية:
- SHA-256 بصمة الشهادة. هذه هي القيمة الأكثر أهمية: تجزئة مكونة من 64 حرفًا سداسيًا تحدد مفتاح التوقيع بشكل فريد. تم توقيع ملفي APK لهما نفس بصمة SHA-256 بواسطة نفس المفتاح الخاص. هذا هو ما تعنيه "استمرارية التوقيع" في منطق تحديث نظام التشغيل.
- الاسم المميز للموضوع. في كثير من الأحيان شيء من هذا القبيل CN=Some App, O=Example Inc., C=US. مفيد كـ تَلمِيح، وليس كإثبات للهوية، حيث يمكن للمهاجم وضع أي سلسلة يريدها في الاسم المميز (DN) الخاص بالشهادة الموقعة ذاتيًا. قم دائمًا بالتحقق من بصمة الإصبع، وليس الاسم.
- فترة الصلاحية. يتم إنشاء معظم مفاتيح النشر الشرعية بصلاحية تصل إلى 25 عامًا تقريبًا (التوصية التاريخية هي 10000 يوم). تعتبر الشهادة التي تنتهي صلاحيتها الشهر المقبل، أو تلك التي تتداخل صلاحيتها بالفعل مع الماضي، بمثابة علامة حمراء.
- خوارزمية التوقيع. تستخدم التطبيقات الحديثة SHA256withRSA أو SHA256withECDSA. MD5 مكسور. تم إهمال SHA1withRSA. ملف APK الموقّع فقط باستخدام الإصدار v1 / SHA-1 سيكون مشبوهًا في عام 2026.
التجزئة مقابل التوقيع: الفرق بين معظم البرامج التعليمية
غالبًا ما يخلط الناس بين "التجزئة" و"التوقيع". إنها تخدم أغراضًا مختلفة جدًا ويحتاج التحقق الآمن إلى ما يلي:
- يخبرك التجزئة (SHA-256 لملف APK بأكمله) ما إذا كانت وحدات بايت الملف مطابقة للنسخة المرجعية. إذا تطابقت التجزئة الخاصة بك مع التجزئة المنشورة للناشر، فلن يتم تغيير الملف منذ أن قاموا بحساب تلك التجزئة. لا يوضح فحص التجزئة وحده شيئًا عن من قام بإنشاء البايتات.
- يثبت إمضاء من قام بإنشاء البايتات، على وجه التحديد، أن صاحب المفتاح الخاص المقترن بشهادة التوقيع هو من أنتج هذا الملف. لا يوضح فحص التوقيع وحده شيئًا عما إذا كان الملف قد تم التلاعب به بعد التوقيع (سيكتشف نظام التشغيل ذلك ويرفضه، لكن الشهادة نفسها لا "تعرف" محتوى الملف).
بالنسبة لملف APK الذي تم تحميله على الجانب، فإن أقوى ضمان يجمع بين الاثنين: بصمة الشهادة تتطابق مع بصمة الناشر المعروفة و، وSHA-256 للملف يطابق القيمة التي نشرها الناشر لهذا الإصدار المحدد.
أين يمكن الحصول على بصمة مرجعية جديرة بالثقة
أصعب جزء من عملية التحقق هو معرفة القيمة الصحيحة للمقارنة بها. بعض الأساليب الموثوقة، بترتيب تقريبي للثقة:
- موقع الويب الخاص بالناشر أو صفحة الإصدار. تقوم العديد من المشاريع مفتوحة المصدر والبائعين المهتمين بالأمان بنشر بصمة SHA-256 لشهادة التوقيع الخاصة بهم إلى جانب التنزيلات الخاصة بهم. هذا هو المعيار الذهبي.
- تثبيت متجر Play موجود. إذا كان التطبيق مثبتًا بالفعل على جهاز يديره Play، فإن بصمة الشهادة الخاصة به هي بصمة الناشر حسب التعريف. قارن بصمة ملف APK الذي تم تحميله على الجانب مع ذلك. أدوات مثل Apk Analyzer (في Android Studio) أو apksigner verify --print-certs تقرأه من ملف APK مثبت مباشرةً.
- أول APK قمت بتثبيته لهذا التطبيق على الإطلاق. إذا كنت تستخدم التطبيق لفترة من الوقت ولم تظهر لك رسالة "عدم تطابق التوقيع"، فيمكنك استخدام أي من نسخك القديمة كمرجع. يجب أن تستخدم التحديثات اللاحقة من نفس الناشر نفس المفتاح (أو يتم التدوير عبر الإصدار 3، وفي هذه الحالة تستمر السلسلة في التحقق).
- لقطة عامة مؤرشفة. يحتفظ أرشيف الإنترنت والخدمات المشابهة أحيانًا بصفحات إصدار APK القديمة بالإضافة إلى تجزئاتها المعلنة. مفيد للإصدارات القديمة جدًا حيث اختفت صفحة الناشر الأصلية.
أخطاء التحقق الشائعة
- مقارنة المجال الخطأ. "MD5 لملف APK" ليس هو نفسه "MD5 للشهادة". استخدم نفس الحقل لملف المرشح والمرجع.
- الثقة في البيانات الوصفية الخاصة بالملف. يمكن أن يتضمن ملف APK أي سلسلة إصدار، أو أي تسمية حزمة، أو أي علامة مؤلف في ملف البيان الخاص به. لا شيء من هؤلاء تشفير. كتلة التوقيع هي الشيء الوحيد الذي يتحقق منه نظام التشغيل فعليًا.
- تخطي التحقق لأن الملف تم إرساله من قبل صديق. الصديق الذي يقول "هذا هو ملف APK الرسمي" لم يتحقق منه أكثر منك. أصر على مصدر ينشر بصمة يمكنك التحقق منها.
- معالجة حقل مطابق واحد على أنه كافٍ. تطابق كلاً من SHA-256 للملف وبصمة SHA-256 الخاصة بالشهادة؛ تعد مطابقة أحدهما دون الآخر علامة على تغيير البايتات أو أن المصدر ينتحل شخصية الناشر.
- تعطيل Play Protect من أجل "الراحة". Play Protect هو ماسح للرأي الثاني، وليس بديلاً للتحقق من التوقيع، ولكنه يلتقط البرامج الضارة الفعلية التي لا يستطيع التحقق من التوقيع، لأن Protect يعرف الحزم السيئة المعروفة من خلال المحتوى، وليس عن طريق مفتاح التوقيع. اتركه.
هل تطبيقك آمن؟
لا تخمن. تحقق من ملفات APK التي تم تحميلها على الجانب مقابل شهادات المطورين الرسمية في ثوانٍ.
ابدأ التحقق من APKالأسئلة المتداولة (الأسئلة الشائعة)
لماذا يمنعني Android من تثبيت ملف APK معدّل؟
لأن توقيع APK الجديد لا يتطابق مع التوقيع المثبت بالفعل. وهذا يمنع المتسللين من "استبدال" تطبيقك المصرفي الحقيقي بتطبيق مزيف.
هل يمكنني إعادة التوقيع على ملف APK بعد تعديله؟
نعم، ولكنك ستستخدم مفتاح مختلف. سيستمر تثبيت التطبيق على هاتف "نظيف"، لكنه لن يتلقى التحديثات من المطور الأصلي بعد الآن.
ما هو تثبيت الشهادة؟
إنها ميزة أمان متقدمة حيث يتحقق التطبيق بشكل صريح من شهادة معينة قبل الاتصال بخوادمه، مما يجعل التطبيقات التي تم العبث بها عديمة الفائدة حتى إذا تم تثبيتها بشكل صحيح.
اجعل التحقق من التوقيع جزءًا من كل عملية تحميل جانبية
تقوم التوقيعات بالكثير من المهام الثقيلة في مجال أمان Android الحديث. يعد قضاء الثواني القليلة الإضافية لتشغيل ملف من خلال أداة التحقق من APK طريقة رخيصة لإبعاد التطبيق الذي تم العبث به عن جهازك قبل تثبيته.