Google は先日、他のセキュリティの改善とともに、Play Integrity API の判定結果を強化し、より迅速で、攻撃に対する耐障害性を高め、ユーザーのプライバシーを保護することを発表しました。
変更の概要
変更と想定される影響の詳細な概要については、このドキュメントの後半をご覧ください。新しい判定結果は次のとおりです。
新しい統合: 新しい統合では、新しい判定結果が自動的に受け取られます。
2025 年 5 月までの既存の統合: 既存の統合を使用しているデベロッパーは、Google Play Console の Play Integrity API 設定ページでオプトインすると、従来の判定結果とともに新しい判定結果を受け取ることができます。これにより、アプリの動作を審査して変更を検討する時間を確保できます。オプトインする前に、各判定結果を返すデバイスの割合の予想される変化と、新しい判定結果の JSON サンプルを確認できます。オプトインすると、レスポンスに Android SDK バージョンと以前の判定結果を含む 2 つのフィールドが追加されます。
2025 年 5 月以降の既存の統合: 改善はすべての統合で公開され、デベロッパーの作業は必要ありません。2025 年 5 月より前にオプトインしたアプリには、以前の判定結果を含む一時的なフィールドは適用されません。
内容 | 変更点 | 推定される影響* | 対応デバイス |
---|---|---|---|
Play Integrity API リクエストを送信するすべてのデベロッパーに影響する変更 | |||
デバイスの判定結果のレスポンス: meets-device-integrity | ハードウェアで裏付けられた、確認付きブートの肯定的な判定結果が必要です | Android 13 以降のデバイスでは、Play Integrity API ですでにハードウェア格納型のセキュリティ シグナルが使用されているため、影響は最小限です(~0.4%) | Android 13 以降 |
アプリの完全性に関するレスポンス: アプリの認識の判定結果 | 変更なし | 影響は最小限で、デバイスの判定結果の変更(約 0.4%)を反映します。 | Android 13 以降 |
アカウントの詳細に関するレスポンス: Play ライセンスの判定結果 | リクエスト元のアプリが Google Play によってインストールまたは更新されていること | ライセンス取得済みの回答の減少(約 2.5%) | Android 11 以降(この変更は段階的に展開されます) |
オプション機能を使用している Google Play Console デベロッパーと Google Play SDK Console デベロッパーにのみ影響する変更 | |||
デバイスの判定結果のレスポンス: meets-basic-integrity | Android プラットフォーム鍵構成証明が必要ですが、起動状態は確認済みまたは未確認のいずれでもかまいません | 基本的な回答の減少(約 0.4%) | Android 13 以降 |
デバイスの判定結果のレスポンス: meets-strong-integrity | 過去 1 年間にセキュリティ アップデートが適用されていること | 強い反応の減少(約 14.5%) | Android 13 以降 |
すべてのオプション シグナル | リクエスト元のアプリが Google Play によってインストールまたは更新されていること | オプションのシグナルを含むレスポンスの割合の減少(約 7%) | Android 13 以降 |
*上記の推定影響率はすべて平均に基づいており、インストール ベースに応じてアプリによって変化率が小さくなったり大きくなったりすることがあります。
よくある質問
概要
Play Integrity API とは
Play Integrity API は、デバイス、アプリ、ユーザーに関する情報を取得することで、ユーザーのアプリ環境の信頼性を評価し、潜在的な不正行為や攻撃を検出して対応できるようにします。
Play Integrity API はどのようなシグナルを提供しますか?
Play Integrity API には、リクエスト元のアプリの ID、リクエスト元のアプリが Google Play によってインストールされたかどうか、デバイスが正規の Play プロテクト認定 Android デバイスかどうかが含まれます。これらのシグナルはデフォルトで提供されます。これらのシグナルはアプリのバックエンド サーバーで読み取ることができ、アプリが応答するかどうか、どのように応答するかを決定できます。Google Play デベロッパーは、Google Play インストールで追加のシグナルを受信して、さらに多くの情報を確認できます。
Android プラットフォーム鍵構成証明とは何ですか?
Android プラットフォーム キー構成証明を使用すると、アプリはデバイスの状態を検証し、ハードウェア格納型のブート完全性の強力なシグナルを取得できます。これは、デバイスのハードウェア格納型キーストアに Google によってプロビジョニングされた鍵に依存します。Play Integrity API はすでに一部のデバイスで鍵構成証明を使用してハードウェア格納型のセキュリティ シグナルを取得していますが、Android 13 以降を搭載するすべてのデバイスで、この機能がさらに深く統合されるようになります。
判定結果の変更
Android 13 以降のデバイスの Play Integrity API の判定結果にどのような変更が加えられますか?
Play Integrity API では、すべての完全性判定の結果にハードウェア格納型のセキュリティ シグナルが必要になります。
meets-device-integrity
デバイス認識判定結果は、アプリが実行されているデバイスが正規の Play プロテクト認定済み Android デバイスであることを示します。この判定結果を得るには、デバイスのブートローダーがロックされ、読み込まれた Android OS が認定デバイス メーカー イメージである必要があります。meets-strong-integrity
デバイス認識判定結果は、最新のセキュリティ アップデートが適用された、正規の Play プロテクト認定 Android デバイスであることを示します。この判定結果を得るには、meets-device-integrity
が必要であり、デバイスに過去 1 年間にセキュリティ アップデートが適用されている必要があります。この条件は今後変更される可能性があります。meets-basic-integrity
デバイス認識判定結果は、チェックが物理的な Android デバイスで行われたことを示します。デバイスのブートローダーはロックまたはロック解除できます。起動状態は確認済みまたは未確認にできます。Play プロテクト認定を受けていない可能性があります。その場合、Google はセキュリティ、プライバシー、アプリの互換性について保証できず、デバイスがプロキシとして機能していないことを保証することもできません(Android の仮想インスタンスなど)。また、ルート権限のあるデバイスは、キー構成証明が存在する限りmeets-basic-integrity
を返すことができます。
これらの変更は、引き続き meets-virtual-integrity
を返す PC 版 Google Play Games の Play Integrity API には影響しません。
Android 13 以降のデバイスで Play Integrity API の判定結果が変更されるのはなぜですか?
Play Integrity API は、Android SDK のバージョン全体でハードウェアに依存するセキュリティ シグナルを部分的に使用してきました。統合を強化することで、Play Integrity API の判定結果は攻撃に対する耐障害性が向上し、アプリのパフォーマンスが向上し、ユーザーのプライバシーが保護されます。移行が完了すると、Android 13 以降を搭載したデバイスで次の改善が期待されます。
- Google のサーバーでデフォルトの判定結果を生成するために収集して評価する必要があるデバイス シグナルが約 90% 削減されます。オプションのシグナルでは、引き続き追加のシグナルを収集する必要があります。
- 最悪の標準リクエストでは判定結果のレイテンシが最大 80% 短縮され、デフォルトの判定結果を取得するすべてのクラシック リクエストでは最大 80% 短縮されます。オプションのシグナルを使用すると、レイテンシが増加する可能性があります。
- モバイル、タブレット、折りたたみ式デバイス、テレビ、Auto、Wear OS、ChromeOS など、鍵構成証明を備えたすべての Android フォーム ファクタで、一貫したレベルの信頼性とサポート。
- デバイス認識判定結果の各デバイスラベル(
meets-strong-integrity
、meets-device-integrity
、meets-basic-integrity
)の差異を明確化。
オプトイン期間中、Play Integrity API が古い完全性判定結果と新しい完全性判定結果を生成する間、パフォーマンスは変化しないことが想定されます。ただし、2025 年 5 月にすべてのデベロッパーを対象に新しい判定結果がリリースされた後、デフォルトとオプションのすべてのシグナルの従来のデペンデンシーを削除または移行するとともに、パフォーマンスが徐々に向上することが見込まれます。
PC 版 Google Play Games の Play Integrity API の判定結果は変更されず、Android 13 以降と Android 12 以前で同じになります。
完全性判定の結果で 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. }
すべての Android SDK バージョンで古い meets-strong-integrity
ラベル定義を使用するにはどうすればよいですか?
これは、判定結果の新しいデバイス属性フィールド(Android SDK バージョンを含む)を使用して、Android 13 以前のデバイスの場合は meets-strong-integrity
、Android 13 以降のデバイスの場合は meets-device-integrity
を使用するように、アプリのバックエンド ロジックを更新することで実現できます。以下にその例を示します。
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 Integrity API の既存のシグナルの信頼性を高めるために継続的に投資しており、デベロッパーが新しい脅威や新しいユースケースに対処できるよう、定期的に新機能をリリースしています。判定結果の改善点は次のとおりです。
- Play ライセンス レスポンス: Play ライセンス レスポンスを返すには、リクエスト元のアプリが Google Play によってインストールまたは更新されていることが常に必要になりました。これにより、一部のエグジット ケースが修正され、デベロッパーがレスポンスを解釈しやすくなります。これは Android 13 以降で利用できます。
- オプション シグナルの提供: Google Play Console または Play SDK Console を使用するデベロッパーが利用できるオプション シグナルはすべて、リクエスト元のアプリが Android 13 以降の Google Play によってインストールまたは更新されている必要があります。これには、
meets-strong-integrity
、meets-basic-integrity
、最近のデバイスのアクティビティ、アプリアクセス リスクの判定結果、Google Play プロテクトの判定結果が含まれます。他のすべての Play Integrity API リクエストは、デバイス チェック(meets-device-integrity
ラベルのみ)、インストーラ チェック、アプリ完全性チェックを受け取るように標準化されます。 - 特定のデバイスの判定結果の変更: また、過剰なアクティビティや鍵の不正使用の証拠がある場合など、すべての Android SDK バージョンでアプリをより早期に保護するために、Play Integrity API はより多くのシナリオでデバイスの判定結果を自動的に変更するようになります。これには、ハードウェアに裏打ちされたシグナルが利用できない場合に、Play が他のシグナルにフォールバックして、ユーザーの一時的なデバイス判定結果を生成できる機能が含まれます。デベロッパーは、アプリ内 Play 修復ダイアログを使用するか、Google Play ストア アプリをユーザーに案内して、完全性判定の問題を解決することをおすすめします。今後、これらのダイアログはより多くのシナリオに対応し、ユーザーのデバイスやアカウントに応じて修正すべき内容を具体的に示すガイダンスが含まれるようになります。
オプトインとオプトアウト
Android 13 以降のデバイスで精度が向上した判定結果を有効にするにはどうすればよいですか?
Google Play Console を使用しているデベロッパーは、Play Integrity API の設定ページでオプトインできます。
オプトインすると、Play Integrity API のレスポンスはどうなりますか?
有効にすると、次の 3 つのことが行われます。
deviceRecognitionVerdict
フィールドのレスポンスは、Android 13 以降のデバイスの新しい判定結果評価要件に基づいて、直ちに生成および返信を開始します。Android 12 以前を搭載するデバイスでは、過去の判定結果の評価を使用してdeviceRecognitionVerdict
が生成されます。- デバイスの Android SDK バージョンを含む新しいフィールド
deviceAttributes
が追加されます。 - 新しいフィールド
legacyDeviceRecognitionVerdict
が追加されます。このフィールドには、Android SDK バージョンに関係なく、過去の判定結果の評価要件に基づくデバイスの完全性レスポンスが含まれます。
2025 年 5 月にすべての統合に対して判定結果の変更がロールアウトされると、オプトインしたアプリは legacyDeviceRecognitionVerdict
フィールドを受け取らなくなります。
完全性判定の結果に関する問題を報告するにはどうすればよいですか?
過去の判定結果または新しい判定結果に関する問題が Play Integrity API のレスポンスにある場合は、サポートページの手順に沿って問題を報告してください。
オプトインした後にオプトアウトできますか?
はい。Play Integrity API の設定ページでオプトアウトできます。
対象
Play Integrity API を機能させるには何が必要ですか?
Play Integrity API を使用するには、デバイスに Google Play ストアと Google Play 開発者サービスがインストールされている必要があります。これには、Android デバイスや PC 版 Google Play Games が含まれます。従来のリクエストには Android 4.4(API レベル 19)以降、標準リクエストには Android 5.0(API レベル 21)以降が必要です。Android 13(API レベル 33)以降を搭載したデバイスでは、Play Integrity API が、モバイル、タブレット、折りたたみ式デバイス、TV、Auto、Wear OS、ChromeOS など、鍵構成証明を備えたすべての Android フォーム ファクタで同じレベルの信頼性とサポートを備えるようになります。
Play Integrity API の判定結果がデバイスによって異なるのはなぜですか?
Play Integrity API は、さまざまなユースケースとリスク許容度を持つデベロッパーに対応し、階層化された適用戦略を可能にするために、複数のデバイス判定を提供します。たとえば、アプリとデバイスの信頼性が高ければ、デベロッパーはユーザー確認の手順を簡素化できます。一方、デバイスが不明な場合は、保護対象または機密性の高いアクションを実行する前に、デベロッパーが追加のユーザー確認を求める場合があります。これは、不正使用や攻撃を減らす効果的な方法です。
Play プロテクト認定済みの Android デバイスとは
Google Play プロテクト認定 Android デバイス(GMS Android デバイス)は、Google の何百もの互換性テストに合格し、Android のセキュリティと権限モデルに準拠し、Google Play プロテクトのマルウェア対策機能スイートが搭載された、予測可能なソフトウェアを搭載したデバイスです。Play Integrity API がデバイスが Play Protect 認定 Android デバイスであることを確認できる場合、デバイス認識判定で meets-device-integrity
レスポンスを返します。
meets-basic-integrity
デバイスとは何ですか?
Play Integrity API は、デバイスの判定結果 meets-basic-integrity
でオプションのレスポンスを返します。デバイスが meets-device-integrity
または meets-strong-integrity
なしで meets-basic-integrity
判定結果のみを返す場合、Android OS は検証できませんが、鍵の構成証明は存在します。これは、チェックが物理的な Android デバイスで行われたことを示します。ただし、Google はデバイスのセキュリティ、プライバシー、アプリの互換性について保証することはできず、デバイスが Android の仮想インスタンスなどのプロキシとして機能していないことを保証することもできません。デベロッパーは、ユースケースとリスク許容度に応じて、これらのデバイスでアプリをどのように実行するかを決定できます。
どのデベロッパーでも Play Integrity API を使用できますか?
はい。すべての Android デベロッパーは、Play Integrity API リクエストを送信してデフォルトの完全性判定の結果を受け取ることができます。使用量は、配信チャネルに関係なく 1 日あたり 1 万件のリクエストに制限されます。他の配信チャネルに加えて Google Play でアプリを公開しているデベロッパーは、1 日あたりの割り当ての増加をリクエストすることもできます。
どのデベロッパーも 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 プロテクト認定に問題がある場合は、問題を解決するためのボタンが表示されます。これにより、デバイスの認定ステータスが更新され、修正が必要な点に関する具体的なガイダンスが提供されます。