Перевірка підписів APK: як переконатися, що ваша програма безпечна
Бокове завантаження програм на Android пропонує свободу та гнучкість, але пов’язане з великим ризиком: підроблені програми. Зловмисники часто модифікують популярні програми, щоб включити шпигунське або рекламне програмне забезпечення, перш ніж розповсюджувати їх на неофіційних сайтах. Як ви можете бути впевнені, що щойно завантажений файл .apk є таким самим, який розробник завантажив у Google Play?
Відповідь зводиться до Цифрові підписи APK. Нижче ми розповімо, як насправді працює підпис додатків, і за допомогою Онлайн верифікатор APK перевіримо хеш і сертифікат APK, перш ніж ви вирішите довіряти йому.
60-секундна версія:
Android підписує кожен APK ключем видавця. Телефон відмовляється від «оновлення», підпис якого не відповідає існуючій інсталяції; це основний захист ОС від уособлення. Щоб перевірити завантажений APK, обчисліть його хеш SHA-256 і цифровий відбиток сертифіката підпису, а потім порівняйте обидва зі значеннями, яким ви довіряєте (існуюча інсталяція Play Store, опублікований цифровий відбиток розробника або завідомо справна попередня копія). Збіг означає, що файл ідентичний у байтах і підписаний тим самим видавцем; невідповідність означає не встановлювати.
Що таке підпис APK?
Цифровий підпис є криптографічним підтвердженням особи. Коли розробник завершує створення програми, він «підписує» її за допомогою закритого ключа (сховища ключів). Потім Android використовує відповідний відкритий ключ, вбудований у файл .apk, щоб забезпечити:
- Цілісність: Файл не було змінено з моменту його підписання.
- Автентичність: Розробник – це те, за кого себе видають.
- Оновлення: Лише файли APK, підписані тим самим ключем, можуть оновити наявну програму на вашому телефоні.
Еволюція підпису: V1, V2, V3 і V4
Протягом багатьох років Google постійно вдосконалював безпеку APK:
- V1 (підпис банку): Підписує окремі записи в ZIP. Повільний і вразливий до певних атак.
- V2 (схема підпису APK): Підписує весь блок файлів. Набагато швидше для перевірки та безпечніше. (Android 7.0+)
- V3 (обертання клавіш): Дозволяє розробникам змінювати ключ підпису, зберігаючи оновлення програми. (Android 9.0+)
- V4 (потокове передавання): Оптимізовано для інкрементних установок через 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 років (історична рекомендація становить 10 000 днів). Сертифікат, термін дії якого закінчується наступного місяця, або сертифікат, термін дії якого вже збігається з минулим, є червоним прапором.
- Алгоритм підпису. Сучасні програми використовують SHA256withRSA або SHA256withECDSA. MD5 зламано; SHA1withRSA застарів. APK, підписаний лише v1 / SHA-1, є підозрілим у 2026 році.
Хеш проти підпису: різниця, яку більшість навчальних посібників пропускають
Люди часто плутають "хеш" і "підпис". Вони служать різним цілям, і безпечна перевірка потребує обох:
- хеш (SHA-256 усього .apk) повідомляє вам, чи збігаються байти файлу з еталонною копією. Якщо ваш хеш збігається з опублікованим хешем видавця, файл не було змінено з моменту обчислення цього хешу. Сама перевірка хешу нічого не говорить про те, хто створив байти.
- підпис доводить, хто створив байти, зокрема, що власник закритого ключа в парі з сертифікатом підпису створив цей файл. Перевірка підпису сама по собі нічого не говорить про те, чи був файл підроблений після підписання (ОС виявить це та відхилить, але сам сертифікат не «знає» про вміст файлу).
Для APK, завантаженого збоку, найсильніша гарантія поєднує обидва: цифровий відбиток сертифіката збігається з відомим цифровим відбитком видавця і, SHA-256 файлу відповідає значенню, яке видавець опублікував для цієї точної збірки.
Де отримати надійний довідковий відбиток пальця
Найважча частина перевірки – це знати правильне значення для порівняння. Кілька надійних підходів у приблизному порядку достовірності:
- Власний веб-сайт видавця або сторінка випуску. Багато проектів з відкритим кодом і постачальників, які піклуються про безпеку, публікують відбиток SHA-256 свого сертифіката підпису разом із завантаженнями. Це золотий стандарт.
- Існуюча інсталяція Play Store. Якщо програму вже встановлено на пристрої, яким керує Play, її відбиток сертифіката є відбитком пальця видавця за визначенням. Порівняйте відбиток вашого завантаженого APK із цим. Такі інструменти, як Apk Analyzer (в Android Studio) або apksigner verify --print-certs, зчитують його безпосередньо з установленого APK.
- Перший файл .apk цієї програми, який ви коли-небудь встановили. Якщо ви користуєтеся програмою деякий час і ніколи не мали запиту «невідповідність підпису», ви можете використати будь-яку зі своїх старіших копій як еталон. Подальші оновлення від того самого видавця повинні використовувати той самий ключ (або чергуватися через v3, у цьому випадку ланцюжок все ще перевіряється).
- Архівований публічний знімок. Інтернет-архів та подібні служби час від часу зберігають старі сторінки випусків APK разом із заявленими хешами. Корисно для дуже старих збірок, де оригінальна сторінка видавця зникла.
Поширені помилки перевірки
- Порівняння неправильного поля. «MD5 файлу APK» не те саме, що «MD5 сертифіката». Використовуйте те саме поле для файлу кандидата та посилання.
- Довіра власним метаданим файлу. Файл .apk може містити будь-який рядок версії, будь-яку мітку пакета, будь-який тег автора у своєму маніфесті. Жоден із них не є криптографічним. Блок підпису — це єдине, що насправді перевіряє ОС.
- Пропуск перевірки, оскільки файл надіслав друг. Друг, який каже, що "це офіційний APK", не підтвердив його більше, ніж ви. Наполягайте на джерелі, яке публікує відбиток пальця, який ви можете перевірити.
- Вважати одне відповідне поле достатнім. Збігається як з відбитком SHA-256 файлу, так і з відбитком SHA-256 сертифіката; відповідність одному, але не іншому, є ознакою того, що байти змінено або джерело видає себе за видавця.
- Вимкнення Play Protect для «зручності». Play Protect — це сканер другого погляду, який не замінює перевірку підпису, але він виявляє фактичне зловмисне програмне забезпечення, яке не може перевірити підпис, оскільки Protect дізнається про завідомо шкідливі пакети за вмістом, а не за ключем підпису. Залиште це.
Чи безпечний ваш додаток?
Не гадай. Перевірте свої завантажені файли .apk на відповідність офіційним сертифікатам розробника за лічені секунди.
Почніть перевірку APKЧасті запитання (FAQ)
Чому Android блокує мені встановлення модифікованого APK?
Оскільки підпис нового APK не збігається з уже встановленим. Це запобігає хакерам від «перезапису» вашого справжнього банківського додатка фальшивим.
Чи можу я повторно підписати APK після його зміни?
Так, але ви будете використовувати інший ключ. Програма все одно встановлюватиметься на «чистий» телефон, але вона більше не отримуватиме оновлення від початкового розробника.
Що таке закріплення сертифіката?
Це розширена функція безпеки, завдяки якій програма явно перевіряє наявність певного сертифіката перед зв’язком зі своїми серверами, що робить програми, підроблені, марними, навіть якщо вони встановлені правильно.
Зробіть перевірку підпису частиною кожного додаткового завантаження
Підписи виконують велику роботу в сучасній безпеці Android. Витрачати зайві кілька секунд на запуск файлу через Перевірка APK — це дешевий спосіб утримати підроблену програму з вашого пристрою до її встановлення.