#android #security #code-signing
#Android #Безопасность #подписание кода
Вопрос:
Я новичок в безопасности программного обеспечения, но пока читаю о подписании программного обеспечения на Android, я понимаю, что подписание программного обеспечения полезно для предотвращения того, чтобы кто-то вводил код в ваш код. Пользователь программного обеспечения может сравнить хэш программного обеспечения с вашей подписью, используя открытый ключ вашей подписи, и если они не совпадают, программное обеспечение изменяется.
Чего я не понимаю, так это того, как это действительно обеспечивает защиту с помощью самоподписывающего программного обеспечения. Что мешает кому-то изменить мое программное обеспечение, внедрить в него свой код, удалить мою самоподписанную подпись и создать новую поверх нее? таким образом, эта новая подпись скажет, что с программным обеспечением все в порядке, и я узнаю об этом, только если у меня есть доступ к измененному программному обеспечению, верно? Или есть что-то, что я не преуменьшаю в этом процессе?
Ответ №1:
Что мешает кому-то изменить мое программное обеспечение, внедрить в него свой код, удалить мою самоподписанную подпись и создать новую поверх нее?
Ничего.
Я понимаю, что подписание программного обеспечения полезно для предотвращения того, чтобы кто-то вводил код в ваш код
Нет. Подписание приложения действительно только для двух сценариев:
- Подтверждение того, что приложение A и приложение B были подписаны одним и тем же ключом (и, следовательно, предположительно от одного разработчика)
- Подтверждение того, что приложение A и прошивка были подписаны одним и тем же ключом
Комментарии:
1. В чем преимущество случая 2? Какой сценарий он будет использоваться?
2. @mFeinstein: В основном, оба являются разрешениями на
signature
уровне. Приложения могут содержатьsignature
разрешения уровня только в том случае, если они подписаны тем же ключом подписи, который подписал приложение / прошивку, определившую разрешение. Многие разрешения Android (напримерDEVICE_POWER
, для низкоуровневого управления питанием) могут быть доступны только приложениям, подписанным тем же ключом подписи, который подписал прошивку.3. так что, по сути, только разработчик, который создал ПЗУ, я думаю?
4. @mFeinstein: Да, либо производителем устройства, либо независимым дистрибьютором модулей ROM (например, CyanogenMod).
5. Большое спасибо, вы были очень полезны 🙂