APK Signature Scheme v3 поставляється з підтримкою ротації ключів

Схема підпису APK версії 3 була помічена в Android Open Source Project, і, здається, вона забезпечує підтримку ротації ключів.

Якщо ви розробник або будь-яким чином знайомі з декомпіляцією, зміною та/або встановленням змінених файлів APK, ви, мабуть, знайомі з підписами програм. Простіше кажучи, Android зобов’язує програму повинен бути підписані тим самим ключем, щоб система дозволяла оновлювати відповідну програму. Android перевіряє це, перевіряючи підпис APK.

Підписи APK є основним заходом безпеки в Android, про який ми говорили раніше. Загалом усі підписи є унікальними для певного розробника чи групи розробників, тому якщо підпис/сертифікат у файлі APK недійсний або не збігається з оригінальною програмою, встановлення не вдасться, таким чином запобігаючи встановленню підроблених або підроблених файлів APK на вашому Android пристрій. Розробник також повинен надійно зберігати ключі підпису, оскільки вони життєво важливі для перевірки та, зрештою, випуску оновлення програми. На щастя, схема підпису для підпису файлів APK отримує іншу версію — v3, яка, здається, додає зручну функцію, зберігаючи високі стандарти безпеки.


Схема підпису APK v1 і v2

Не так багато часу минуло з моменту появи поточної версії APK Signature Scheme, v2, було випущено для розробників. Зрештою, він ледве був представлений нам із запуском Android 7.0 Nougat наприкінці 2016 року. Використання схеми підпису v2 у програмах Android 7.0+ дуже заохочувалося, оскільки вона принесла ряд важливих виправлень і покращення безпеки: у той час як версія 1 лише підписала JAR, версія 2 робить додаткові кроки для захисту цілісності всього файл. Однак схеми підписів не сумісні з попередніми версіями, а для Android Marshmallow і старіших версій потрібні підписи v1 для програм.

Процес перевірки APK. Джерело: Google.

Якщо ви не обслуговуєте користувачів на Nougat або вищій версії, ідеальним сценарієм буде використання обох схем підпису пліч-о-пліч, спочатку підписуючи з v1, а потім відмовляючись від v2. Таким чином, Nougat і новіші версії розпізнають підпис v2, тоді як Marshmallow і нижчі версії розпізнають підпис v1.

Однак використання лише версії 1 настійно не рекомендується через низку вразливостей та інших проблем безпеки, найпомітнішою з яких є вразливість Януса, що дозволяє зловмисникам безпосередньо атакувати та змінювати APK, не впливаючи на підписи. Популярні програми з нечастими оновленнями, такі як Instagram або Snapchat, підписані лише підписами v1, тобто вони вразливі до цих проблем.

Перевірка версій підпису APK популярних соціальних мереж/платіжних програм.

Схема підпису APK v3

Найбільшою головною особливістю версії 3, яка має стати переглядом версії 2, буде підтримка ротації ключів. The v3 схема підпису представляє APK Signer Lineage, який, згідно з один із комітів, "містить історію підписання сертифікатів кожним предком, що засвідчує дійсність його нащадка. Кожен додатковий нащадок представляє новий ідентифікатор, який можна використовувати для підпису APK. Таким чином, родовід містить доказ ротації, за допомогою якого APK, що його містить, може продемонструвати іншим сторонами, його здатність довіряти поточному сертифікату підпису, як якщо б він був підписаний одним із його старіших ті».

Ротація ключів є чудовою функцією для розробників у кількох аспектах. Для початку це може бути корисним для розробників у командах, які працюють над єдиною програмою, тому розробникам не потрібно ділитися своїми ключами підпису з командою. Оскільки програма потребує однакового точного підпису для оновлення, усі програми наразі мають бути скомпільовані одним розробником або групою розробники, які працюють з тим самим ключем, знижують безпеку (більше ймовірності викрадення ключа) і сповільнюють розробку.

Крім того, це також може бути корисним у разі викрадення/загуби ключа підпису розробника, що зазвичай означало б, що програму потрібно буде повторно завантажити в Play Store під іншим пакетом назва. Це зовсім не рідкість, оскільки давно навіть Google, очевидно, втратив ключ підпису для програми Google Authenticator, що призвело до того, що вони повторно опублікували його під іншою назвою пакета. Відтоді Google надає засоби для безпечного зберігання ваших ключів підпису в хмарі Google Play App Signing, але ротація ключів дозволить вам продовжити оновлення програми в разі гіпотетичної проблеми.

Коли це вийде?

Хоча ви, можливо, захочете спробувати це для додаткової зручності, схема підпису v3 була помічена в AOSP Сайт Gerrit Code Review, і самі коміти не були об’єднані в основну гілку наразі, тому він ще не готовий ще. Ми повинні очікувати, що схема підпису v3 потрапить до рук розробника з майбутнім випуском Android P, якщо попередній випуск v2 з Android Nougat нам щось підкаже.

Слід також зазначити, що ротація ключів, цілком імовірно, не єдина відмінність від v2. Розробка схеми підпису APK версії 3 ще триває, тому ми побачимо фактичні покращення схеми підпису версії 3, коли в майбутньому з’явиться повна документація для неї.