Почему проверка подписи на удаленном сервере более безопасна, чем на устройстве? - PullRequest
5 голосов
/ 10 января 2012

В разделе Security Controls в обзоре биллинга в приложении указывается выполнять «проверку подписи» на удаленном сервере, а не в приложении (запущенном локально на устройстве Android):

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

Но если я выполню проверку подписи на удаленном сервере, ожидая только ответа yes/no или true/false, разве это не легче перехватить и изменить злоумышленнику?

А если ответ от удаленного сервера - еще одна подпись, то как проверитьвторая подпись локально на устройстве безопаснее, чем для первой (рыночной) подписи?

Что мне не хватает?

Обновление: @alf правильно заметил, что еслиСервер также отвечает за доставку приобретенного контента, и проверка подписи выполняется на сервере, тогда даже если злоумышленник скомпрометирует приложение, сервер не будет доставлять контент, приобретенный с помощью биллинга в приложении.Это тривиально и понятно.

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

Ответы [ 3 ]

3 голосов
/ 10 января 2012

разве это не легче перехватить и изменить злоумышленнику?

Если вы используете SSL для связи с сервером, они не могут перехватить и изменить ответ. SSL также проверяет подлинность сервера, поэтому вы уверены, что говорите со своим собственным сервером, а не с атакующим.

Что касается того, зачем выполнять проверку подписи на сервере, идея оригинального комментария к документу заключается в том, что если вы делаете это на клиенте, вам необходимо хранить открытый ключ внутри приложения. Злоумышленник может заменить ключ своим собственным ключом, и сгенерированные злоумышленником подписи подтвердят правильность. Вы можете избежать этого, выполнив проверку на сервере. Однако реальные инструменты взлома, такие как AntiLVL , просто ищут байт-код, который возвращает true/false, и изменяют его так, чтобы он всегда возвращал true.

2 голосов
/ 10 января 2012

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

2 голосов
/ 10 января 2012

Поскольку у вас есть контроль над кодом подтверждения на сервере. Код на конце устройства мог быть взломан.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...