Перевірка підписів APK: як переконатися, що ваша програма безпечна

A magnifying glass over a phone showing a certificate and fingerprint, illustrating verifying APK signatures

Бокове завантаження програм на Android пропонує свободу та гнучкість, але пов’язане з великим ризиком: підроблені програми. Зловмисники часто модифікують популярні програми, щоб включити шпигунське або рекламне програмне забезпечення, перш ніж розповсюджувати їх на неофіційних сайтах. Як ви можете бути впевнені, що щойно завантажений файл .apk є таким самим, який розробник завантажив у Google Play?

Відповідь зводиться до Цифрові підписи APK. Нижче ми розповімо, як насправді працює підпис додатків, і за допомогою Онлайн верифікатор APK перевіримо хеш і сертифікат APK, перш ніж ви вирішите довіряти йому.

60-секундна версія:

Android підписує кожен APK ключем видавця. Телефон відмовляється від «оновлення», підпис якого не відповідає існуючій інсталяції; це основний захист ОС від уособлення. Щоб перевірити завантажений APK, обчисліть його хеш SHA-256 і цифровий відбиток сертифіката підпису, а потім порівняйте обидва зі значеннями, яким ви довіряєте (існуюча інсталяція Play Store, опублікований цифровий відбиток розробника або завідомо справна попередня копія). Збіг означає, що файл ідентичний у байтах і підписаний тим самим видавцем; невідповідність означає не встановлювати.

Що таке підпис APK?

Цифровий підпис є криптографічним підтвердженням особи. Коли розробник завершує створення програми, він «підписує» її за допомогою закритого ключа (сховища ключів). Потім Android використовує відповідний відкритий ключ, вбудований у файл .apk, щоб забезпечити:

  1. Цілісність: Файл не було змінено з моменту його підписання.
  2. Автентичність: Розробник – це те, за кого себе видають.
  3. Оновлення: Лише файли APK, підписані тим самим ключем, можуть оновити наявну програму на вашому телефоні.

Еволюція підпису: V1, V2, V3 і V4

Протягом багатьох років Google постійно вдосконалював безпеку APK:

Як перевірити підписи APK онлайн

Наш Інструмент перевірки APK не просто обчислює хеші; він виконує повний криптографічний аудит ланцюжка сертифікатів. Ось як ним користуватися:

Кроки для підтвердження:

  1. Перейдіть на сторінку Перевірка APK.
  2. Виберіть файл APK або XAPK.
  3. Наш інструмент аналізує каталог META-INF/ і витягує дані сертифіката (.RSA, .DSA або .EC).
  4. Дочекайтеся завершення аналізу (це займе всього кілька секунд).
  5. Перегляньте Інформація про сертифікат: ім’я розробника, організація та країна походження.
  6. Перевірте Хеші: порівняйте SHA-256, що відображається на нашому сайті, зі значенням, опублікованим видавець на власному офіційному сайті, сторінці випуску проекту чи маніфесті підписання.

Попередження безпеки

Якщо верифікатор показує «Сертифікат налагодження» або невідомий «самопідписаний» об’єкт для великої програми, як-от Facebook або WhatsApp, НЕ ВСТАНОВЛЮЙТЕ ЙОГО. Це майже напевно скомпрометовано.

Розуміння контрольних сум (MD5, SHA-1, SHA-256)

Контрольні суми — це рядки фіксованої довжини, що представляють увесь файл. Якщо змінити один піксель у піктограмі програми, геш SHA-256 повністю зміниться.

Тип хешу Рівень безпеки Примітки
MD5 Спадщина Вразливий до зіткнень. Не для безпеки.
SHA-1 Помірний Все ще широко використовується для швидкого пошуку.
SHA-256 Чудово Сучасний стандарт верифікації програм.

Про що насправді говорить вам сертифікат підпису

Коли верифікатор повертає сертифікат, для безпеки стороннього завантаження важливі не кольорові фрагменти метаданих X.509, а невелика купка полів. У практичному плані:

Хеш проти підпису: різниця, яку більшість навчальних посібників пропускають

Люди часто плутають "хеш" і "підпис". Вони служать різним цілям, і безпечна перевірка потребує обох:

Для APK, завантаженого збоку, найсильніша гарантія поєднує обидва: цифровий відбиток сертифіката збігається з відомим цифровим відбитком видавця і, SHA-256 файлу відповідає значенню, яке видавець опублікував для цієї точної збірки.

Де отримати надійний довідковий відбиток пальця

Найважча частина перевірки – це знати правильне значення для порівняння. Кілька надійних підходів у приблизному порядку достовірності:

  1. Власний веб-сайт видавця або сторінка випуску. Багато проектів з відкритим кодом і постачальників, які піклуються про безпеку, публікують відбиток SHA-256 свого сертифіката підпису разом із завантаженнями. Це золотий стандарт.
  2. Існуюча інсталяція Play Store. Якщо програму вже встановлено на пристрої, яким керує Play, її відбиток сертифіката є відбитком пальця видавця за визначенням. Порівняйте відбиток вашого завантаженого APK із цим. Такі інструменти, як Apk Analyzer (в Android Studio) або apksigner verify --print-certs, зчитують його безпосередньо з установленого APK.
  3. Перший файл .apk цієї програми, який ви коли-небудь встановили. Якщо ви користуєтеся програмою деякий час і ніколи не мали запиту «невідповідність підпису», ви можете використати будь-яку зі своїх старіших копій як еталон. Подальші оновлення від того самого видавця повинні використовувати той самий ключ (або чергуватися через v3, у цьому випадку ланцюжок все ще перевіряється).
  4. Архівований публічний знімок. Інтернет-архів та подібні служби час від часу зберігають старі сторінки випусків APK разом із заявленими хешами. Корисно для дуже старих збірок, де оригінальна сторінка видавця зникла.

Поширені помилки перевірки

Чи безпечний ваш додаток?

Не гадай. Перевірте свої завантажені файли .apk на відповідність офіційним сертифікатам розробника за лічені секунди.

Почніть перевірку APK

Часті запитання (FAQ)

Чому Android блокує мені встановлення модифікованого APK?

Оскільки підпис нового APK не збігається з уже встановленим. Це запобігає хакерам від «перезапису» вашого справжнього банківського додатка фальшивим.

Чи можу я повторно підписати APK після його зміни?

Так, але ви будете використовувати інший ключ. Програма все одно встановлюватиметься на «чистий» телефон, але вона більше не отримуватиме оновлення від початкового розробника.

Що таке закріплення сертифіката?

Це розширена функція безпеки, завдяки якій програма явно перевіряє наявність певного сертифіката перед зв’язком зі своїми серверами, що робить програми, підроблені, марними, навіть якщо вони встановлені правильно.

Зробіть перевірку підпису частиною кожного додаткового завантаження

Підписи виконують велику роботу в сучасній безпеці Android. Витрачати зайві кілька секунд на запуск файлу через Перевірка APK — це дешевий спосіб утримати підроблену програму з вашого пристрою до її встановлення.

Розроблено та задокументовано Mst Shaefale Провідний розробник і архітектор пакетів Android • Перевірено на Android 12–15

Mst Shaefale підтримує злиття XAPK/APKS на стороні клієнта, аналізатор бінарних маніфестів та інструменти підписання APK v1+v2 у xapktoapk.com. Помітили застарілу команду чи зміну ОС? Надіслати редакційну примітку.