Защита In-App Purchase для Android совершенна, почему работает Freedom?

Здравствуйте,

Хочу добавить внутриигровые покупки в Android приложение. Почитал документацию. Я вижу что схема, которую использует Google криптографически стойкая. Ответ подписывается закрытым ключом приложения на сервере гугла, что гарантирует что ни кто не может по середине изменить или подделать ответ сервера. Также в запросе мы можем передавать случайную строку и проверять ее в ответе, это гарантирует что нам не подсовывают какой либо прошлый(другой) валидный ответ сервера.

Т.е. чтобы следовать схеме нам достаточно генерировать случайную строку и проверять ее в ответе и проверять подпись ответа своим открытым ключом и все это делать достаточно в самой apk.

Но я вижу что весь интернет забит проблемами взлома внутриигровых покупок. Люди легко ломают их с помощью Freedom или чего то подобного, хотя эта схема на сколько я понял была всегда такой. Многие пытаются защититься и создают специально сервер, чтобы делать проверку покупок на нем. Хотя если разработчики боятся что apk взломают и обойдут в ней проверку подписи или изменят открытый ключ, то с таким же успехом в ней могут и поменять все общение с игровым сервером. В том или ином случаи, тут нужна какая либо обфускация, чтобы сделать это просто трудным.

Вопросы:
1) Собственно вопрос, почему работает Freedom, большинство разработчики просто забивают на элементарную проверку подписи?
2) Почему люди городят дополнительно сервер, который только и проверяет валидность покупок?
3) Может я что то упускаю и проверка подписи в apk не достаточно?

Update: При более внимательном просмотре, я увидел, что Google все таки не использует стандартную схему маркер + подпись для всех запросов. Freedom конечно работать не будет если проверять подпись, но из-за того что Google привязал developerPayload и подпись к конкретной покупке, а не к запросу, открывается куча вариантов для атаки человек по середине для запросов: получения списка всех покупок, который совершается на старте приложения и потребления покупок. Почему Google сделал такую "не правильную" схему для меня остается загадкой :(
  • Вопрос задан
  • 5357 просмотров
Пригласить эксперта
Ответы на вопрос 2
GavriKos
@GavriKos
1) Старые версии платежки пока еще работают и они легче подвержены взлому
2) По мануалу гугла подпись проверять не обязательно - вот и не проверяют все.
3) Про дополнительный сервер написано в мануале гугла.

Номера в ответе не привязаны к номерам в вопросе.
Ответ написан
grcool
@grcool
Мы используем и серверную валидацию и свои проверки, но от взлома это все равно не спасает.
Не подумайте что бережем копейки, просто игра сетевая и очень важно не уничтожить всю экономику читерами.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы