Обзор API целостности Play

API Play Integrity помогает проверить, что действия пользователей и запросы к серверу поступают от вашего подлинного приложения, установленного через Google Play и работающего на подлинном и сертифицированном устройстве Android. Выявляя рискованные взаимодействия — например, от поддельных версий приложений, ненадежных устройств или эмулированных сред — ваш сервер может реагировать соответствующими действиями для предотвращения злоупотреблений и несанкционированного доступа, борьбы с мошенничеством, противодействия обману и защиты пользователей от атак.

Обзор API обеспечения целостности игрового процесса поток

API возвращает результаты, которые помогают выявлять потенциальные угрозы, в том числе:

  • Несанкционированный доступ : вывод accountDetails поможет вам определить, установил ли пользователь ваше приложение или игру в Google Play или оплатил ли его.
  • Изменение кода : Вердикт appIntegrity помогает определить, взаимодействуете ли вы с неизмененным исполняемым файлом, который распознает Google Play.
  • Опасные устройства и эмулируемые среды : вердикт deviceIntegrity поможет вам определить, работает ли ваше приложение на подлинном сертифицированном устройстве Android или на подлинной копии Google Play Games для ПК.

Разработчики Google Play также могут подписаться на получение дополнительных заключений для выявления более широкого спектра потенциальных угроз, включая:

  • Устройства без обновлений : ответ MEETS_STRONG_INTEGRITY в вердикте deviceIntegrity помогает определить, были ли на устройстве установлены последние обновления безопасности (для устройств под управлением Android 13 и выше).
  • Рискованный доступ со стороны других приложений: параметр appAccessRiskVerdict помогает определить, запущены ли приложения, которые могут быть использованы для захвата экрана, отображения наложений или управления устройством (например, путем неправомерного использования разрешения на доступ к специальным возможностям).
  • Известные вредоносные программы: playProtectVerdict помогает определить, включена ли функция Google Play Protect и обнаружила ли она рискованные или опасные приложения, установленные на устройстве.
  • Гиперактивность: Уровень recentDeviceActivity помогает определить, совершало ли устройство в последнее время аномально большое количество запросов, что может указывать на автоматизированный трафик и быть признаком атаки.
  • Повторное использование и повторное использование устройств: deviceRecall (бета-версия) помогает определить, взаимодействуете ли вы с устройством, которое вы ранее пометили как проблемное, даже если ваше приложение было переустановлено или устройство было сброшено до заводских настроек.

API можно использовать на устройствах Android различных форм-факторов, включая телефоны, планшеты, складные устройства, Android Auto, Android TV, Android XR, ChromeOS, Wear OS, а также в играх Google Play для ПК.

Вопросы безопасности

API Play Integrity принесет наибольшую пользу вашему приложению, если вы будете следовать этим рекомендациям:

Разработайте стратегию противодействия злоупотреблениям.

API Play Integrity лучше всего работает в сочетании с другими сигналами в рамках вашей общей стратегии противодействия злоупотреблениям, а не как единственный механизм противодействия. Используйте этот API в сочетании с другими соответствующими передовыми методами обеспечения безопасности вашего приложения. По умолчанию ваше приложение может отправлять до 10 000 запросов в день для всех установок. Вы можете запросить увеличение дневного лимита .

Собирайте телеметрические данные и изучайте свою аудиторию, прежде чем предпринимать какие-либо действия.

Прежде чем менять поведение вашего приложения на основе решений API Play Integrity, вы можете оценить текущую ситуацию с вашей существующей аудиторией, внедрив API без применения мер принуждения. Как только вы узнаете, какие решения выдает ваша текущая база пользователей, вы сможете оценить влияние любых планируемых мер принуждения и соответствующим образом скорректировать свою стратегию борьбы со злоупотреблениями.

Определите, как вы будете запрашивать заключения о соблюдении принципов добросовестности.

API Play Integrity предлагает два варианта запроса и получения заключений о целостности данных. Независимо от того, отправляете ли вы стандартные запросы, классические запросы или комбинацию обоих типов запросов, ответ с заключением о целостности данных будет возвращен в одном и том же формате.

Стандартные API-запросы подходят для любого приложения или игры и могут выполняться по запросу для проверки подлинности любого действия пользователя или запроса к серверу. Стандартные запросы имеют самую низкую задержку (в среднем несколько сотен миллисекунд) и высокую надежность получения полезного результата. Стандартные запросы используют интеллектуальное кэширование на устройстве, делегируя защиту от определенных типов атак Google Play.

Классические API-запросы , первоначальный способ запроса результатов проверки целостности данных, по-прежнему доступны. Классические запросы имеют более высокую задержку (в среднем несколько секунд), и вы несете ответственность за снижение риска определенных типов атак. Классические запросы используют больше данных и заряда батареи пользователя, чем стандартные запросы, поскольку они инициируют новую оценку, поэтому их следует выполнять нечасто, как разовые проверки подлинности особо конфиденциального или ценного действия. Если вы рассматриваете возможность выполнения классического запроса и его кэширования для последующего использования, то вам следует вместо этого использовать стандартный запрос, чтобы снизить риск атак.

В таблице ниже приведены некоторые ключевые различия между двумя типами запросов:

Стандартный API-запрос Классический API-запрос
Минимальный необходимый Android SDK * Android 6.0 (уровень API 23) или выше Android 6.0 (уровень API 23) или выше
Требуется предварительный прогрев API. ✔️ (несколько секунд)
Типичная задержка запроса Несколько сотен миллисекунд Несколько секунд
Потенциальная частота запросов Частые (проверка по запросу на наличие каких-либо действий или запросов) Нечастая проверка (разовая проверка для наиболее важных действий или наиболее конфиденциальных запросов)
Предотвратите повторные атаки и подобные им. Автоматическое устранение неполадок через Google Play Используйте поле nonce с логикой на стороне сервера.

* Для библиотеки Play Integrity API версии 1.4.0 и более поздних версий минимальный поддерживаемый Android SDK одинаков для обоих типов запросов и определяется параметром minSdkVersion библиотеки. Для версий 1.3.0 и более ранних версий минимальный требуемый Android SDK — Android 5.0 (уровень API 21) для стандартных запросов API и Android 4.4 (уровень API 19) для классических запросов API.

Вы можете увидеть таблицу с дополнительными различиями в классических подходах к рассмотрению запросов .

Запросите заключение о добросовестности в подходящий момент.

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

Сделайте ваши API-запросы трудновоспроизводимыми.

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

В классических API-запросах есть поле nonce (сокращение от number once), которое используется для защиты от определенных типов атак, таких как повторное воспроизведение и подделка данных. Следуйте инструкциям по генерации nonce для защиты классических запросов вашего приложения.

Избегайте вынесения решений о целостности кэша.

Кэширование результатов проверки целостности повышает риск проксирования — атаки, при которой злоумышленник повторно использует результаты проверки, полученные на исправном устройстве, в других целях. Вместо кэширования ответов можно использовать стандартный API-запрос для получения результатов проверки по запросу.

Внедрите многоуровневую стратегию обеспечения соблюдения правил.

Вердикт API проверки целостности Play Integrity имеет ряд возможных ответов, что позволяет построить стратегию защиты от злоупотреблений с многоуровневым контролем. Это можно сделать, настроив серверную часть вашего приложения таким образом, чтобы она вела себя по-разному в зависимости от каждого возможного ответа или группы ответов.

Прежде чем оценивать надежность устройства, необходимо проверить другие ключевые сигналы в ответе API:

  • Детали запроса: Убедитесь, что requestDetails соответствует ожидаемым значениям, в частности, проверьте requestHash или nonce чтобы предотвратить атаки повторного воспроизведения.
  • Целостность приложения: Убедитесь, что appRecognitionVerdict имеет значение PLAY_RECOGNIZED , что подтверждает, что сертификат подписи приложения распознается Play и не был изменен.
  • Данные учетной записи: Убедитесь, что appLicensingVerdict имеет LICENSED , подтверждая, что пользователь установил или обновил приложение из Google Play.

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

После успешного прохождения базовых проверок можно выстроить стратегию контроля на основе уровня доверия к устройству, выбрав получение дополнительных меток устройства в ответе API от Play Console. Для каждого устройства будут возвращены все метки, критериям которых оно соответствует. Чтобы получить версию Android SDK, следует использовать поле deviceAttributes включенное в ответ API. Диапазон уровней доверия к устройству простирается от более до менее доверенных устройств:

  • MEETS_STRONG_INTEGRITY (Android 13+): наивысший уровень доверия к устройству, требующий аппаратной поддержки сигналов безопасности и последнего обновления безопасности.
  • MEETS_DEVICE_INTEGRITY (Android 13+) и MEETS_STRONG_INTEGRITY (версии до Android 13): следующий уровень доверия. Оба основаны на аппаратных сигналах безопасности.
  • MEETS_DEVICE_INTEGRITY (до Android 13): Следующий уровень, использующий аппаратную аттестацию, если она доступна, и программную аттестацию в качестве резервного варианта.
  • MEETS_BASIC_INTEGRITY : Самый слабый уровень доверия, непосредственно перед тем, как устройство перестанет получать какие-либо метки.

Например, после согласия на получение всех меток устройств, вы можете предпочесть доверять устройству, возвращающему MEETS_STRONG_INTEGRITY , MEETS_DEVICE_INTEGRITY и MEETS_BASIC_INTEGRITY , больше, чем устройству, возвращающему только MEETS_BASIC_INTEGRITY . В каждом сценарии вы можете отвечать серверу по-разному.

Затем вы можете добавить в свою многоуровневую стратегию обеспечения безопасности другие сигналы, например, считать менее надежными устройства, которые возвращают более высокие значения в recentDeviceActivity .

Отправьте диапазон ответов с вашего сервера в ваше приложение.

Воспроизвести наличие множества вариантов исхода сложнее, чем отправлять бинарный ответ «Разрешить/Запретить» с сервера в приложение для каждого ответа. Например, можно использовать серию связанных ответов, таких как «Разрешить», «Разрешить с ограничениями», «Разрешить с ограничениями после завершения CAPTCHA» и «Запретить».

Выявление повторных нарушений с помощью отзыва устройства при сохранении конфиденциальности пользователя.

Функция «Запись данных с устройства» позволяет приложениям сохранять и восстанавливать некоторые пользовательские данные, связанные с конкретным устройством, с сохранением конфиденциальности пользователя. Данные хранятся на серверах Google, что позволяет вашему приложению надежно восстанавливать данные для каждого устройства даже после переустановки приложения или сброса настроек устройства. Это дает вам надежный способ повторно идентифицировать устройство, которое вы ранее использовали не по назначению, чтобы вы могли принять меры и предотвратить его повторное использование в злоупотребительных целях. Вы можете задать собственное значение для трех параметров, составляющих данные записи данных с устройства:

  • Вы можете использовать их в качестве до трех отдельных флагов или логических значений. Например, значения могут указывать на то, создало ли устройство учетную запись или нет, использовало ли оно бесплатную пробную версию или известно ли о случаях злоупотребления высокой степени серьезности.
  • В качестве альтернативы вы можете объединить все состояния значений в до восьми пользовательских меток, например, одну метку для состояния по умолчанию, когда все три значения не изменены, и семь меток с пользовательскими значениями. Это позволяет сегментировать все устройства на до восьми групп на основе поведения или действий, которые вы определяете. В этом сценарии наиболее недавно обновленная из трех writeDates указывает, когда вы в последний раз обновляли метку.

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

Выявление масштабных злоупотреблений на основе анализа недавней активности устройства.

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

Отображать сообщения об ошибках, требующие принятия мер

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

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

На панели мониторинга состояния Play отображается информация о состоянии сервиса Play Integrity API, а также информация о любых сбоях и отключениях. Вам следует заранее спланировать, как будет функционировать ваш сервер в маловероятном случае масштабного сбоя Play Integrity API. Обратите внимание, что ваш сервер также должен быть готов к работе в случае отзыва ключей аттестации платформы Android, специфичных для устройств.

Рассмотрите комплексные корпоративные решения по борьбе с мошенничеством.

Корпоративные клиенты, нуждающиеся в комплексном решении для управления мошенничеством и ботами, могут приобрести reCAPTCHA Enterprise для мобильных устройств, которое включает SDK для Android , предоставляющие разработчикам оценки риска мошенничества. reCAPTCHA Enterprise автоматически включает сигналы Play Integrity API и объединяет их с сетевыми и прикладными сигналами reCAPTCHA для клиентов, обеспечивая простое и незаметное решение для управления мошенничеством «из коробки». Оно также может обеспечить защиту для приложений Android, где Play Integrity API недоступен.

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

Вместо полного отказа в доступе, выявляйте в своем приложении или игре важные или конфиденциальные действия, которые необходимо защитить с помощью API Play Integrity. По возможности, проверяйте доступность рискованного трафика, прежде чем разрешать выполнение важных действий. Например, если риск доступа к приложению указывает на то, что запущено приложение, способное захватывать экран, попросите пользователя отключить или удалить приложения, которые могут захватывать экран, прежде чем разрешить ему перейти к функциям, которые вы хотите защитить.

Условия предоставления услуг и безопасность данных

Получая доступ к API Play Integrity или используя его, вы соглашаетесь с Условиями использования API Play Integrity . Пожалуйста, ознакомьтесь и поймите все применимые условия и правила, прежде чем получать доступ к API.

В Google Play есть раздел, посвященный безопасности данных, где разработчики могут раскрывать информацию о методах сбора, обмена и защиты данных в своих приложениях, чтобы информировать пользователей. Чтобы помочь вам заполнить форму с данными, ознакомьтесь с информацией о том , как API Play Integrity обрабатывает данные .