Улучшенные оценки на устройствах с Android 13 и более поздними версиями

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

Обзор изменений

Подробное описание изменений и ответы на часто задаваемые вопросы приведены ниже. В мае 2025 года были изменены следующие вердикты:

Что Что изменилось Ожидаемый эффект* Какие устройства
Изменения, которые затронут всех разработчиков, отправляющих запросы к Play Integrity API
Ответ оценки устройства: meets-device-integrity Требуется положительный результат проверки при запуске с аппаратной поддержкой. Минимальное влияние, так как Play Integrity API уже использует аппаратные защищенные сигналы на устройствах с Android 13 или более поздней версией ОС (около 0,4%) Android 13 и более поздние версии
Ответ о целостности приложения: оценка целостности приложения Без изменений Минимальное влияние, которое отразит изменение в оценке устройства (около 0,4%). Android 13 и более поздние версии
Ответ со сведениями об аккаунте: оценка лицензии Google Play Приложение, запрашивающее токен, должно быть установлено или обновлено через Google Play. Незначительное уменьшение количества ответов с лицензированным контентом (примерно на 2,5%) Android 6 и более поздние версии
Изменения, которые затрагивают только разработчиков, использующих Play Console и Play SDK Console с дополнительными функциями
Ответ о проверке устройства: meets-basic-integrity Требуется подтверждение ключа платформы Android, но состояние при запуске может быть проверенным или непроверенным. Незначительное уменьшение количества простых ответов (примерно на 0,4%) Android 13 и более поздних версий
Ответ с оценкой устройства: meets-strong-integrity Обновление системы безопасности за последний год Снижение количества сильных ответов (~14,5%) Android 13 и более поздних версий
Все необязательные сигналы (кроме атрибутов устройств)** Приложение, запрашивающее токен, должно быть установлено или обновлено через Google Play. Снижение доли ответов, включающих необязательные сигналы (примерно на 7 %) Android 13 и более поздних версий

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

**Дополнительные сигналы (кроме атрибутов устройства): meets-basic-integrity, meets-strong-integrity, недавние действия на устройстве, запоминание устройства (бета), статус Google Play Защиты и риск доступа к приложению.

Часто задаваемые вопросы

Обзор

Что такое Play Integrity API?

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

Какие сигналы предоставляет Play Integrity API?

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

Что такое аттестация ключей платформы Android?

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

Изменения в оценке

Что изменилось в оценках Play Integrity API на устройствах с Android 13 или более поздней версией?

Теперь для всех оценок целостности в Play Integrity API требуются аппаратные защищенные сигналы.

  • Оценка распознавания устройства meets-device-integrity указывает на то, что приложение запущено на немодифицированном сертифицированном устройстве Android. Для этого загрузчик операционной системы должен быть заблокирован, а на устройстве должен быть установлен сертифицированный образ ОС Android от производителя.
  • Оценка распознавания устройства meets-strong-integrity указывает на то, что устройство Android является подлинным и сертифицированным и на нем установлено недавнее обновление системы безопасности. Для этого заключения требуется meets-device-integrity и обновления системы безопасности, выпущенные за последний год для всех разделов устройства, включая раздел ОС Android и раздел поставщика. В будущем это условие может измениться.
  • Оценка распознавания устройства meets-basic-integrity указывает на то, что проверка выполнялась на физическом устройстве Android. Загрузчик операционной системы может быть заблокирован или разблокирован, а состояние при запуске – проверенным или непроверенным. Устройство может быть не сертифицировано. В этом случае Google не может гарантировать безопасность, конфиденциальность и совместимость приложений, а также то, что устройство не используется в качестве прокси-сервера, например для виртуального экземпляра Android. Это также означает, что устройства с настроенным root-доступом могут возвращать ответ meets-basic-integrity, если у них есть подтверждение ключа.

Эти изменения не влияют на Play Integrity API в Play Играх на ПК, где по-прежнему будет возвращаться значение meets-virtual-integrity.

Почему изменились оценки Play Integrity API на устройствах с Android 13 или более поздней версией?

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

  • Количество сигналов устройства, которые нужно собрать и оценить, чтобы сгенерировать стандартную оценку на серверах Google, сократилось примерно на 90%. Для необязательных сигналов по-прежнему потребуется собирать дополнительные сигналы.
  • Задержка при получении стандартных оценок в худшем случае снизилась на 80 %, а при получении классических оценок по умолчанию – на 80 %. Необязательные сигналы могут увеличить задержку.
  • Стабильный уровень надежности и поддержки для всех типов устройств Android с аттестацией ключей, включая мобильные телефоны, планшеты, складные устройства, телевизоры, автомобили, Wear OS и ChromeOS.
  • Более четкое различие между ярлыками устройств в заключении о распознавании устройства: meets-strong-integrity, meets-device-integrity и meets-basic-integrity.

Оценка Play Integrity API в Google Play Играх на компьютере не изменится и будет одинаковой для Android 12 и более ранних версий, а также для Android 13 и более поздних версий.

Как обновить серверную логику приложения, чтобы при оценке целостности учитывалась версия Android SDK?

Если вы хотите использовать разную логику на бэкенд-сервере приложения в зависимости от версии Android SDK, используйте новое поле атрибутов устройств в оценке. Вот пример:

Kotlin

val deviceIntegrity =
  JSONObject(payload).getJSONObject("deviceIntegrity")
val sdkVersion =
  if (deviceIntegrity.has("deviceAttributes")) {
    deviceIntegrity.getJSONObject("deviceAttributes").getInt("sdkVersion")
  } else {
    0
  }

if (sdkVersion >= 30) {
  // Provide Android R+ specific experience to the user.
}

Java

JSONObject deviceIntegrity =
  new JSONObject(payload).getJSONObject("deviceIntegrity");
int sdkVersion =
  deviceIntegrity.has("deviceAttributes")
    ? deviceIntegrity.getJSONArray("deviceAttributes").getInt("sdkVersion")
    : 0;

if (sdkVersion >= 30) {
  // Provide Android R+ specific experience to the user.
}

Как использовать старое определение ярлыка meets-strong-integrity во всех версиях Android SDK?

Для этого обновите логику серверной части приложения, чтобы на устройствах с Android 12 и более ранними версиями использовался параметр meets-strong-integrity, а на устройствах с Android 13 и более поздними версиями – meets-device-integrity. При этом используйте новое поле атрибутов устройств в оценке, содержащей версию Android SDK. Вот пример:

Kotlin

val deviceRecognitionVerdict =
  if (deviceIntegrity.has("deviceRecognitionVerdict")) {
    deviceIntegrity.getJSONArray("deviceRecognitionVerdict").toString()
  } else {
    ""
  }

val deviceIntegrityToCheckFor =
  sdkVersion < 33 ? "MEETS_STRONG_INTEGRITY" : "MEETS_DEVICE_INTEGRITY";

if (deviceRecognitionVerdict.contains(deviceIntegrityToCheckFor)) {
  // Looks good!
}

Java

JSONObject deviceIntegrity =
  new JSONObject(payload).getJSONObject("deviceIntegrity");
String deviceRecognitionVerdict =
  deviceIntegrity.has("deviceRecognitionVerdict")
    ? deviceIntegrity.getJSONArray("deviceRecognitionVerdict").toString()
    : "";

String deviceIntegrityToCheckFor =
  sdkVersion < 33 ? "MEETS_STRONG_INTEGRITY" : "MEETS_DEVICE_INTEGRITY";

if (deviceRecognitionVerdict.contains(deviceIntegrityToCheckFor)) {
  // Looks good!
}

Поскольку это также аппаратный сигнал, поле атрибутов устройства наиболее надежно на устройствах с Android 13 и более поздних версий.

Какие ещё изменения были внесены в вердикты?

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

  • Ответ о лицензии Google Play. Чтобы получить ответ о лицензии Google Play, теперь всегда требуется, чтобы запрашивающее приложение было установлено или обновлено через Google Play. Это устраняет некоторые пограничные случаи и упрощает интерпретацию ответа для разработчиков.
  • Доступность необязательных сигналов. Чтобы разработчики могли использовать в Google Play Console или Play SDK Console любые необязательные сигналы (кроме атрибутов устройства), запрашивающее приложение должно быть установлено или обновлено через Google Play на устройстве с Android 13 или более поздней версией. К ним относятся meets-strong-integrity, meets-basic-integrity, недавние действия на устройстве, запоминание устройства (бета), оценка риска доступа к приложению и оценка Play Защиты. Мы стандартизировали все остальные запросы к Play Integrity API, чтобы получать результаты проверки устройства (только с ярлыком meets-device-integrity), проверки установщика, проверки целостности приложения и атрибуты устройства (если они включены).
  • Изменения в оценке определенных устройств. Play Integrity API автоматически меняет оценку устройств в большем количестве сценариев, чтобы защищать приложения на всех версиях Android SDK. Например, это происходит, если зафиксирована чрезмерная активность или скомпрометирован ключ. В частности, если аппаратные сигналы недоступны, Play может использовать другие сигналы, чтобы генерировать временные оценки устройств. Чтобы устранить проблемы с оценкой целостности, разработчикам рекомендуется использовать диалоговые окна Google Play в приложении или направлять пользователей в приложение Google Play. Со временем эти диалоговые окна будут охватывать больше сценариев и включать конкретные рекомендации для пользователей, рассказывающие им, что им нужно исправить, в зависимости от их конкретного устройства или учетной записи.

Как сообщить о проблемах с оценкой целостности?

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

Доступность

Что нужно для работы Play Integrity API?

Для работы Play Integrity API на устройстве должны быть установлены Google Play и сервисы Google Play. Это относится к устройствам Android и Google Play Games для ПК. Для классических запросов требуется Android 4.4 (уровень API 19) или более поздней версии, а для стандартных – Android 5.0 (уровень API 21) или более поздней версии. На устройствах с Android 13 (уровень API 33) и более поздних версий Play Integrity API теперь будет иметь одинаковый уровень надежности и поддержки для всех типов устройств Android с аттестацией ключей, включая мобильные телефоны, планшеты, складные устройства, телевизоры, автомобили, Wear OS и ChromeOS.

Почему Play Integrity API дает разные оценки для разных устройств?

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

Что такое сертифицированное устройство Android?

Сертифицированное устройство Android (также известное как устройство Android, сертифицированное Play Защитой) – это устройство, на котором установлено предсказуемое программное обеспечение, прошедшее сотни тестов Google на совместимость, соответствующее модели безопасности и разрешений Android и поставляемое с набором функций защиты от вредоносного ПО Google Play Защиты. Если Play Integrity API подтвердит, что устройство является подлинным и сертифицированным устройством Android, в оценке распознавания устройства будет возвращен ответ meets-device-integrity.

Что такое устройство meets-basic-integrity?

Play Integrity API также возвращает необязательный ответ в оценке устройства. meets-basic-integrity Если устройство возвращает только оценку meets-basic-integrity без meets-device-integrity или meets-strong-integrity, это означает, что ОС Android не может быть проверена, но аттестация ключей присутствует. Это означает, что проверка была выполнена на физическом устройстве Android, но Google не может гарантировать его безопасность, конфиденциальность или совместимость с приложениями, а также то, что устройство не действует как прокси-сервер, например для экземпляра виртуальной машины Android. В зависимости от сценариев использования и допустимых рисков разработчики могут решить, как их приложение должно работать на таких устройствах.

Может ли любой разработчик использовать Play Integrity API?

Да, любой разработчик Android может отправлять запросы к Play Integrity API, чтобы получать стандартные оценки целостности. Использование ограничено 10 000 запросов в день независимо от канала распространения. Разработчики, публикующие свои приложения в Google Play и других каналах распространения, также могут запросить увеличение суточной квоты.

Может ли любой разработчик использовать аттестацию ключей платформы Android?

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

Принудительное применение

Как разработчики используют оценки Play Integrity API?

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

Блокирует ли Play Integrity API пользователей или устройства?

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

Что делать пользователям, если их устройство не проходит проверку Play Integrity API?

Чтобы воспользоваться ей, пользователю нужно открыть приложение Google Play на своем устройстве, перейти в меню "Настройки", прокрутить экран вниз до раздела "О приложении" и найти пункт "Сертификация Play Защиты". Если с сертификацией Play Защиты на устройстве что-то не так, появится кнопка, с помощью которой можно попробовать устранить проблему. Это обновит статус сертификации устройства и предоставит конкретные рекомендации по устранению неполадок.