Google предлагает набор API и сервисов, которые помогают определить, запущено ли приложение в безопасной и надежной среде. Главный инструмент – Play Integrity API, который помогает выявлять потенциально опасные и мошеннические действия. Помимо целостности приложения и устройства, Play Integrity API теперь предоставляет информацию о рисках, связанных с доступом и специальными возможностями, Google Play Защите и недавних действиях на устройстве. Чтобы усилить стратегию борьбы с мошенничеством, платформа Android предлагает API для конкретных сценариев, которые могут быть актуальны для вашего приложения.
Play Integrity API
Play Integrity API позволяет узнать, насколько безопасно устройство, на котором запущено приложение. Это помогает вам быть уверенным, что нужный пользователь получает доступ к конфиденциальной информации.
Он позволяет удостовериться, что действия пользователей и запросы к серверу исходят из исполняемого файла приложения, которое не менялось и было запущено в надежной среде.
- Об исполняемом файле приложения. Используется ли неизмененная версия исполняемого файла, подтвержденная Google Play.
- Об установке из Google Play. Лицензирован ли текущий аккаунт пользователя, то есть установил или оплатил ли пользователь ваше приложение или игру через Google Play.
- Об устройстве Android. Запускается ли приложение на немодифицированном устройстве Android с сервисами Google Play.
- Об отсутствии известных видов вредоносного ПО. Включена ли Google Play Защита и обнаружены ли на устройстве подозрительные или небезопасные приложения.
- Низкий риск доступа со стороны других приложений. Определите, запущены ли другие приложения, которые могут делать запись экрана или управлять вашим приложением и вводимыми в него данными.
Как это помогает бороться с мошенничеством
Когда пользователь выполняет важное действие в приложении, вы можете вызвать Play Integrity API. Если нет, то внутренний сервер приложения может принимать решения о дальнейших действиях для защиты от атак и мошенничества. Например, вы можете потребовать дополнительную проверку пользователя или запретить доступ к конфиденциальным функциям.

Риск доступа к приложению
Сигнал Риск доступа к приложению помогает определить, могут ли другие приложения на устройстве просматривать и записывать экран, когда ваше приложение запущено, или получать доступ к вашему приложению, используя разрешения на доступ к специальным возможностям. Проверенные приложения для доступа к специальным возможностям автоматически исключаются из этих вердиктов. Оценка риска доступа к приложению помогает разработчикам защищать свои приложения, не нарушая конфиденциальность пользователей, поскольку запрашивающее приложение не получает информацию о том, какие установленные приложения есть на устройстве, а оценка не связана с идентификаторами пользователя или устройства.
Благодаря этому сотрудничеству мы получаем сигналы, которые помогают нам лучше понимать угрозы и эффективнее защищать клиентов.
Nubank, партнер по раннему доступу
Существуют разные уровни риска доступа к приложению:
- Ответ capturing означает, что запущены другие приложения, которые могут делать запись экрана.
- Если в ответе указано, что запущены приложения, которые могут управлять устройством, значит они могут как записывать экран, так и управлять вводом в вашем приложении.
Принудительное применение оценки риска доступа к приложению
Определите, какие действия в вашем приложении или игре являются ценными или конфиденциальными, и защитите их с помощью Play Integrity API, а не просто запрещайте доступ. По возможности проверяйте подозрительный трафик, прежде чем разрешать ценные действия. Например, если риск доступа к приложению указывает на то, что запущено приложение, которое может делать снимки экрана, попросите пользователя отключить или удалить его, прежде чем разрешить доступ к защищаемой функции.
В таблице ниже приведены примеры заключений.
| Пример ответа с оценкой риска доступа к приложению | Пояснения |
|---|---|
appsDetected:["KNOWN_INSTALLED"]
|
На устройстве установлены только приложения, распознаваемые Google Play или предварительно загруженные в системный раздел производителем устройства. Нет запущенных приложений, которые могли бы привести к оценкам capturing, controlling или overlays. |
appsDetected:["KNOWN_INSTALLED","UNKNOWN_INSTALLED","UNKNOWN_CAPTURING"]
|
Это приложения, установленные через Google Play или предварительно загруженные в системный раздел производителем устройства. Запущены другие приложения с разрешениями, которые позволяют просматривать экран или записывать другие входные и выходные данные. |
appsDetected:["KNOWN_INSTALLED","KNOWN_CAPTURING","UNKNOWN_INSTALLED","UNKNOWN_CONTROLLING"]
|
Запущены приложения из Google Play или системные приложения, у которых есть разрешения, позволяющие просматривать экран или перехватывать другие входные и выходные данные. Также запущены другие приложения с разрешениями, которые могут использоваться для управления устройством и ввода данных в ваше приложение. |
appAccessRiskVerdict: {}
|
Риск доступа к приложению не оценивался, так как не было выполнено обязательное требование. Например, устройство не считается достаточно надежным. |
Сигнал Play Защиты
Сигнал Play Защиты сообщает приложению, включена ли Play Защита и обнаружила ли она на устройстве известные вредоносные приложения.
environmentDetails:{
playProtectVerdict: "NO_ISSUES"
}
Если вредоносное ПО представляет особую угрозу для вашего приложения или данных пользователей, вы можете проверить эту оценку и попросить пользователей включить Play Защиту или удалить вредоносные приложения, прежде чем продолжить.

playProtectVerdict может иметь одно из следующих значений:
| Результат | Описание | Рекомендуемое действие |
|---|---|---|
|
Google Play Защита включена и не обнаружила проблем с приложениями на устройстве. |
Play Защита включена и не обнаружила проблем, поэтому никаких действий от пользователя не требуется. |
|
Google Play Защита включена, но проверка ещё не проводилась. Возможно, настройки устройства или приложения Google Play недавно были сброшены. |
Play Защита включена и не обнаружила проблем, поэтому никаких действий от пользователя не требуется. |
|
Play Защита отключена. |
Play Защита включена и не обнаружила проблем, поэтому никаких действий от пользователя не требуется. |
|
Google Play Защита включена, и с ее помощью на устройстве были обнаружены потенциально опасные приложения. |
В зависимости от допустимого уровня риска вы можете попросить пользователя запустить Play Защиту и выполнить действия, указанные в ее предупреждениях. Если пользователь не может выполнить эти требования, вы можете заблокировать для него действие на сервере. |
|
Google Play Защита включена, и с ее помощью на устройстве были обнаружены опасные приложения. |
В зависимости от допустимого уровня риска вы можете попросить пользователя запустить Play Защиту и выполнить действия, указанные в ее предупреждениях. Если пользователь не может выполнить эти требования, вы можете заблокировать для него действие на сервере. |
|
Наличие Google Play Защиты и вредоносного ПО не проверялось. Это может происходить в том числе по следующим причинам:
|
Недавние действия на устройстве
Вы также можете включить получение информации о недавних действиях на устройстве, например о том, сколько раз за последний час ваше приложение запросило токен целостности на определенном устройстве. Вы можете использовать недавние действия на устройстве, чтобы защитить свое приложение от неожиданных, гиперактивных устройств, которые могут быть признаком активной атаки. Вы можете решить, насколько доверять каждому уровню недавних действий на устройстве, исходя из того, сколько раз в час ваше приложение, установленное на обычном устройстве, должно запрашивать токен целостности.
Если вы согласитесь получать recentDeviceActivity, поле deviceIntegrity будет содержать два значения:
deviceIntegrity: {
deviceRecognitionVerdict: ["MEETS_DEVICE_INTEGRITY"]
recentDeviceActivity: {
// "LEVEL_2" is one of several possible values.
deviceActivityLevel: "LEVEL_2"
}
}
Сначала проверьте данные, чтобы узнать, каковы типичные уровни действий на устройстве для вашего приложения на всех ваших устройствах. Затем вы можете решить, как ваше приложение должно реагировать, когда устройство делает слишком много запросов. Если активность немного высока, вы можете попросить пользователя повторить попытку позже. Если активность очень высока, возможно, вам стоит принять более строгие принудительные меры.
Стандартные и классические запросы
При реализации Play Integrity важно учитывать два типа запросов. В большинстве случаев следует использовать стандартные запросы, чтобы обеспечить максимально быстрый ответ. Классические запросы следует использовать, когда требуется новый запрос к записи подтверждения устройства.
Классический запрос |
Стандартный запрос |
|---|---|
Запросы обрабатываются дольше, поэтому их следует отправлять реже. Например, это может быть разовая проверка, чтобы убедиться, что важное или конфиденциальное действие выполняется настоящим пользователем. Используйте редко. |
Запросы имеют низкую задержку ответа и могут использоваться по запросу. Стандартный запрос состоит из двух частей:
Используйте по запросу. |
Подробную информацию о стандартных и классических запросах вы найдете в документации Play Integrity API.
Реализация
Чтобы начать работу с Play Integrity API, выполните следующие действия:
- Включите ответы Play Integrity API в Google Play Console и установите связь с облачным проектом Google Cloud.
- Интегрируйте Play Integrity API в свое приложение.
- Решите, как вы будете обрабатывать оценки.
По умолчанию Play Integrity API позволяет отправлять до 10 000 запросов на приложение в день. Если вы хотите увеличить максимальное количество запросов в день, следуйте этим инструкциям. Чтобы получить право на увеличение максимального количества ежедневных запросов, ваше приложение должно правильно использовать Play Integrity API и быть доступно в Google Play, а также на других каналах распространения.
Что нужно учитывать при работе с Play Integrity API
- Очень важно правильно обрабатывать ошибки в ответах Play Integrity API. Следуйте руководству по стратегиям повторных запросов и принудительного применения на основе кодов ошибок.
- Play Integrity API предлагает инструменты для тестирования ответов.
- Чтобы посмотреть результат проверки целостности на устройстве, следуйте этим инструкциям.
- Ознакомьтесь с советами по безопасности, чтобы узнать, как правильно использовать Play Integrity API.
Автоматическая защита целостности (API >= 23)
Автоматическая защита целостности – это сервис, который защищает код от вмешательства и предотвращает изменение и распространение приложения без вашего согласия. Она работает без передачи данных, и ее не нужно интегрировать с внутренним сервером. Перед тестированием ее работы от вас не требуется никаких действий.
Как это помогает бороться с мошенничеством
Если вы включите автоматическую защиту целостности, Google Play добавит в код приложения проверки, которые будет сложно удалить благодаря передовым методам обфускации и техникам защиты от обратного проектирования. Во время выполнения защита проверяет, не было ли приложение изменено или распространено:
- Если установщик не пройдет проверку, пользователю будет предложено скачать приложение из Google Play.
- Без пройденной проверки на изменения приложение не запустится.
Это помогает защитить пользователей от измененных версий приложения.
Реализация
Автоматическая защита целостности сейчас доступна только некоторым партнерам Google Play. Если функция недоступна в Google Play Console, но вы хотите получить к ней доступ, обратитесь в службу поддержки разработчиков Google Play.
Включить защиту можно во время создания выпуска или на странице Защищено Google Play. Чтобы использовать автоматическую защиту целостности, необходимо включить функцию подписания приложений в Google Play.
Обязательно протестируйте защищенное приложение, прежде чем выпускать рабочую версию.
Важная информация
- Не выпускайте незащищенные версии приложений
- Используйте дополнительные методы защиты от вмешательства осторожно
- Тестируйте защищенное приложение перед выпуском рабочей версии
- Отслеживайте статистику, чтобы вовремя заметить увеличение количества сбоев.
- Вы можете сообщить в Google Play о взломанных версиях своего приложения.