Подписание программного обеспечения

#android #security #code-signing

#Android #Безопасность #подписание кода

Вопрос:

Я новичок в безопасности программного обеспечения, но пока читаю о подписании программного обеспечения на Android, я понимаю, что подписание программного обеспечения полезно для предотвращения того, чтобы кто-то вводил код в ваш код. Пользователь программного обеспечения может сравнить хэш программного обеспечения с вашей подписью, используя открытый ключ вашей подписи, и если они не совпадают, программное обеспечение изменяется.

Чего я не понимаю, так это того, как это действительно обеспечивает защиту с помощью самоподписывающего программного обеспечения. Что мешает кому-то изменить мое программное обеспечение, внедрить в него свой код, удалить мою самоподписанную подпись и создать новую поверх нее? таким образом, эта новая подпись скажет, что с программным обеспечением все в порядке, и я узнаю об этом, только если у меня есть доступ к измененному программному обеспечению, верно? Или есть что-то, что я не преуменьшаю в этом процессе?

Ответ №1:

Что мешает кому-то изменить мое программное обеспечение, внедрить в него свой код, удалить мою самоподписанную подпись и создать новую поверх нее?

Ничего.

Я понимаю, что подписание программного обеспечения полезно для предотвращения того, чтобы кто-то вводил код в ваш код

Нет. Подписание приложения действительно только для двух сценариев:

  1. Подтверждение того, что приложение A и приложение B были подписаны одним и тем же ключом (и, следовательно, предположительно от одного разработчика)
  2. Подтверждение того, что приложение A и прошивка были подписаны одним и тем же ключом

Комментарии:

1. В чем преимущество случая 2? Какой сценарий он будет использоваться?

2. @mFeinstein: В основном, оба являются разрешениями на signature уровне. Приложения могут содержать signature разрешения уровня только в том случае, если они подписаны тем же ключом подписи, который подписал приложение / прошивку, определившую разрешение. Многие разрешения Android (например DEVICE_POWER , для низкоуровневого управления питанием) могут быть доступны только приложениям, подписанным тем же ключом подписи, который подписал прошивку.

3. так что, по сути, только разработчик, который создал ПЗУ, я думаю?

4. @mFeinstein: Да, либо производителем устройства, либо независимым дистрибьютором модулей ROM (например, CyanogenMod).

5. Большое спасибо, вы были очень полезны 🙂