Подписание и проверка подписи приложений Android


Подписание приложения

Подпись приложений — это процесс, при котором APK (Android Package) подписывается с использованием приватного ключа, который уникально идентифицирует разработчика приложения. Этот процесс гарантирует, что приложение действительно от заявленного разработчика и не было изменено после его подписания. Подробный обзор:

Создание Кеystore

  • Разработчики создают кеystore, двоичный файл, содержащий криптографические ключи. Этот кeystore содержит приватный ключ, который используется для подписи APK.
  • Keystore защищён паролем, который должен быть надёжно сохранён для предотвращения несанкционированного доступа.

Подпись APK

  • Во время или после процесса сборки APK подписывается с использованием приватного ключа, хранящегося в кeystore.
  • Этот процесс генерирует цифровую подпись с помощью хеш-функции, создающей уникальную сводку содержимого APK.
  • Сводка затем шифруется приватным ключом разработчика, и результат сохраняется внутри APK.

Включение сертификата

  • APK включает сертификат, содержащий публичный ключ, соответствующий используемому для подписи приватному ключу.
  • Этот сертификат используется для проверки цифровой подписи в процессе установки.

Почему Подпись приложений важна?

  • Обеспечивает подлинность: Подтверждает личность разработчика приложения.
  • Защищает целостность: Гарантирует, что приложение не было изменено с момента его подписания.
  • Обеспечивает безопасные обновления: Гарантирует, что обновления поступают от оригинального разработчика, так как обновления должны быть подписаны тем же ключом.

Проверка подписи

Проверка подписи — это процесс, в рамках которого операционная система Android проверяет цифровую подпись APK, чтобы удостовериться в его целостности и подлинности перед установкой. Ознакомьтесь с этим постом на Reddit о том, как легко проверить подпись / подлинность APK, а затем перейдите сюда, чтобы узнать, как работает проверка:

Извлечение сертификата

Когда происходит скачивание APK и начинается процесс установки, устройство извлекает сертификат, содержащий открытый ключ из APK.

Расшифровка подписи

  • Устройство использует извлечённый из сертификата открытый ключ для расшифровки цифровой подписи, встроенной в APK.
  • Расшифровка даёт оригинальный хеш (сводку), который был сгенерирован в процессе подписания.

Генерация хеша

Независимо устройство генерирует собственный хеш содержимого APK. Это делается с использованием той же хеш-функции, что и в процессе подписания.

Сравнение хешей

  • Устройство сравнивает независимо сгенерированный хеш с расшифрованным хешом из цифровой подписи.
  • Совпадение: Если хеши совпадают, APK подтверждается как подлинный и нетронутый, что позволяет начать установку.
  • Несоответствие: Если хеши не совпадают, это указывает на то, что APK мог быть изменён с момента его подписания, и установка блокируется.

Почему Проверка подписи важна?

  • Подтверждает подлинность: Гарантирует, что APK был подписан заявленным разработчиком.
  • Поддерживает целостность Подтверждает, что APK не был модифицирован с момента подписания.
  • Защищает пользователей Блокирует потенциально вредоносные APK от установки.

Какую подпись следует выбрать, если у приложения несколько подписей?

Большинство приложений имеют одну действующую подпись, но некоторые могут иметь больше. Вам необходимо совпадать подпись APK с подписью, уже установленной на вашем устройстве, чтобы избежать ошибок обновления.

Причины множественных подписей

  • Ротация ключей: Android 9 позволяет разработчикам сменить ключи подписания. Это связано с схемой подписания APK v3.
  • Каналы распространения: Приложения из разных источников (например, Play Store, Github) могут иметь разные подписи.
  • Системные приложения: Ключи подписания для системных приложений могут различаться в зависимости от устройства или версии ОС.
  • Необъяснимые случаи: Некоторые приложения, такие как Files и Play services от Google, имеют несколько подписей.

Как определить правильную подпись:

  1. AndroidFreeware имеет сложный Проверщик APK, который выполняет проверку разрешений Android, обнаруживает опасные флаги и фильтры, вычисляет контрольные суммы md5, sha1, sha256 и проводит антивирусные проверки VirusTotal.
  2. Используйте такие инструменты, как My APK, чтобы просмотреть подписи приложений.
  3. Используйте метод проб и ошибок. Устанавливайте разные APK, пока обновление не начнётся, затем запомните правильную подпись для будущих обновлений.
  4. Загрузите приложение на APKMirror с помощью ML Manager, чтобы найти существующую подпись.
  5. Некоторые настольные инструменты могут определить подпись APK файла. Среди них apksigner от Google, keytool от IBM и print-apk-signature от Warren Bank.

Содержание