Подписывает ли приложение защиту от несанкционированного доступа к файлу?
Я не знаком с идеей подписания файлов, и пока не могу найти удовлетворительного ответа, поэтому я думаю, что лучше спросить:
То, что я хочу знать, заключается в подписании двоичного файла (для Android), делает ли инструмент подписи какой-то контрольной суммы для файла, так что, когда хакер что-то изменил в файле apk, программа откажется запускать, контрольная сумма не соответствует. Этот механизм существует в инструменте подписи Android?
Ну, я понимаю, когда у хакера есть двоичный файл, он может отключить все, что захочет, включая проверку контрольной суммы. Но вопрос в том, поддерживает ли Android-подставку этот уровень или защиту в первую очередь?
Спасибо за чтение и ответ!
Ответы
Ответ 1
Ответы, в которых говорится: "Нет, они не могут изменить ваш apk", имеют только половину права: да, никто не может изменить ваш код и уйти в отставку с помощью вашего ключа, что означает, что вредоносный взломщик не может сделать измененное приложение похоже, что это действительно пришло от вас. Но это не означает, что они не могут изменять и запускать APK после отставки его другим ключом.
Они могут взять ваш подписанный APK, изменить его код и отменить его самим своим собственным ключом; они не могли выпустить это приложение как обновление или что-то в этом роде, но модифицированный самозаверяющий APK обычно устанавливался любым пользователем, root или нет.
РЕДАКТИРОВАТЬ: Стоит обойти xda-разработчиков, чтобы посмотреть, что делают люди в этом отношении (некоторые полузаданные, такие как модификация и переиздание APK, и многое другое). Особенно интересны такие инструменты, как android-apktool.
Также см. эти вопросы:
Ответ 2
Бинарное подписание Android выполняется с помощью инструмента Jarsigner, который является частью стандартного Java SDK. Подписание банку с помощью этого инструмента просто добавляет два файла; один, который содержит хешированные значения для каждого файла в jar/application (подпись или файл .sf) и тот, который проверяет файл подписи и идентифицирует сертификат подписи (файл DSA).
Таким образом, проверка подписи будет, да, обязательно включать проверку того, соответствуют ли хэши двоичного файла предоставленному значению, которые будут обнаруживать любые изменения в двоичном формате. И да, Android-документация говорит, что система не будет устанавливать или запускать приложение без действительной подписи.
Итак, вы можете предположить, что подписание вашего файла должным образом предотвратит его запуск после изменения.
Ответ 3
Да, ОС должна проверить, соответствует ли содержимое бинарного файла сигнатуре. Это было бы бесполезно иначе - кто-то мог просто взять подпись из законного приложения и привязать ее к любому другому двоичному файлу.