Play Integrity API を使用すると、操作とサーバー リクエストが真正な Android デバイスで動作している真正なアプリバイナリからのものかどうかを確認できます。改ざんされたアプリや信頼できない環境からの潜在的に危険で不正な操作を検出することにより、アプリのバックエンド サーバーで、攻撃を防ぎ不正使用を抑制するための適切な措置を講じることができます。
Google Play ストアに対応しており、Google Play 開発者サービスを搭載した Android デバイスでアプリまたはゲームが使用されている場合、Play Integrity API は、次のものとやり取りしているかどうかを判定するためのレスポンスを提供します。
- 正規のアプリバイナリ: Google Play で認識されている、改変されていないバイナリとやり取りしているかどうかを判断します。
- 真正な Play インストール: 現在のユーザー アカウントにライセンスが付与されているかどうか(つまり、ユーザーが Google Play でアプリまたはゲームのインストールや支払いを行ったかどうか)を判定します。
- 真正な Android デバイス: Google Play 開発者サービスを搭載した真正な Android デバイス(または PC 版 Google Play Games の真正なインスタンス)でアプリが実行されているかどうかを判定します。
環境に関する情報を受け取るように選択することもできます。 。次のように Play Integrity API レスポンス内に挿入します。
- アプリアクセスのリスク: セキュリティ リスクのあるアプリが実行されているか 画面のキャプチャ、オーバーレイの表示、デバイスの制御に使用するために使用します。
- 既知のマルウェアによるリスク: Google Play プロテクトがオンになっているかどうかを判断する リスク / 危険なアプリがデバイスにインストールされているかどうかを把握できます。
概要
ユーザーがアプリ内で操作を行ったときに、Play Integrity API を呼び出すことができます Google Play によってインストールされた真正なアプリバイナリ 正規の Android デバイスで動作している必要があります。また、スペースに参加すると、 応答に含まれる情報(デバイスが行ったリクエストの数など) アプリアクセス リスクなどの環境に関するシグナル Play プロテクトの判定結果が表示されます。判定結果に問題があれば アプリのバックエンド サーバーが、問題に対する防御策を決定できます。 不正使用、不正行為、不正使用とカンニング、不正アクセス、攻撃などです。
セキュリティ上の考慮事項
Play Integrity API は、以下のおすすめの方法を実践すると、アプリで最大限の効果を発揮します。
不正使用対策戦略を準備する
Play Integrity API は単独の不正使用対策メカニズムとして使用するのではなく、不正使用対策戦略の一環として他のシグナルと併用すると、最大限の効果を発揮します。この API は、アプリに適した他のセキュリティに関するおすすめの方法と組み合わせて使用してください。デフォルトでは、アプリはすべてのインストールで 1 日あたり最大 10,000 件のリクエストを実行できます。1 日あたりの上限の引き上げをリクエストできます。
アクションを行う前にテレメトリーを収集し、対象ユーザーを把握する
Play Integrity API の判定結果に基づいてアプリの動作を変更する前に、以下を行うことができます。 既存のオーディエンスの現状を把握する 適用されていない API。現在のインストール ベースの判定結果が判明したら 計画している施行の影響を見積もり、 必要に応じて不正使用対策戦略を調整できます。
完全性判定の結果をリクエストする方法を決定する
Play Integrity API には、完全性判定の結果をリクエストして受け取る方法が 2 つあります。標準リクエスト、クラシック リクエスト、両者の組み合わせのいずれを実行した場合でも、完全性判定の結果レスポンスは同じ形式で返されます。
標準 API リクエストは、すべてのアプリとゲームに適しており、ユーザー アクションまたはサーバー リクエストが真正なものかどうかを確認するために、オンデマンドで実行できます。標準リクエストはレイテンシが最も低く(平均で数百ミリ秒)、使用可能な判定結果を取得できる信頼性が高くなります。標準リクエストは、特定のタイプの攻撃からの保護を Google Play に委任するとともに、オンデバイス スマート キャッシュを利用します。
クラシック API リクエスト(完全性判定の結果のリクエストに元々使用されていた方法)も引き続き使用できます。クラシック リクエストはレイテンシがより高く(平均で数秒)、デベロッパーには特定のタイプの攻撃のリスクを軽減する責任があります。クラシック リクエストは新たに評価を開始するため、標準リクエストより多くのユーザーデータとバッテリーを消費します。そのため、機密性の高いアクションまたは価値の高いアクションが真正なものかどうかを確認するために、少ない頻度で 1 回のみ実行するようにします。クラシック リクエストを作成し、後で使用するためにキャッシュに保存することを検討している場合は、攻撃のリスクを抑えるため、代わりに標準リクエストを実行してください。
2 種類のリクエストの主な違いを次の表に示します。
標準 API リクエスト | クラシック API リクエスト | |
---|---|---|
必要な最小 Android SDK バージョン | Android 5.0(API レベル 21)以降 | Android 4.4(API レベル 19)以降 |
API のウォームアップが必要 | ✔️(数秒) | ❌ |
リクエストの一般的なレイテンシ | 数百ミリ秒 | 数秒 |
可能なリクエスト頻度 | 高頻度(アクションまたはリクエストのオンデマンド チェック) | 低頻度(価値の高いアクションまたは機密性の高いリクエストの 1 回限りのチェック) |
リプレイおよびその種の攻撃の軽減 | Google Play による自動軽減 | サーバーサイド ロジックで nonce フィールドを使用する |
上記以外の違いについては、クラシック リクエストに関する考慮事項の表をご覧ください。
適切なタイミングで完全性判定の結果をリクエストする
アプリアクセス リスクの判定は、できる限り早くリクエストする必要があります。 アクセスできないようにするアクションまたはサーバー リクエストの 完全性チェックの回避を詐欺行為から防ぐことができます。 。
API リクエストの複製を困難にする
標準 API リクエストには requestHash
というフィールドがあり、改ざんやその種の攻撃を防ぐために使用できます。このフィールドには、アプリのリクエストに関連するすべての値のダイジェストを含める必要があります。アプリの標準リクエストを保護するには、コンテンツ バインディングの使用方法のガイダンスをご覧ください。
クラシック API リクエストには nonce
(number once の略語)というフィールドがあり、リプレイ攻撃や改ざん攻撃など、特定タイプの攻撃の防止に使用できます。アプリのクラシック リクエストを保護するには、nonce を生成する方法のガイダンスをご覧ください。
完全性判定の結果をキャッシュに保存しない
完全性判定の結果をキャッシュに保存すると、プロキシ攻撃のリスクが高くなります。これは、不正な行為者が不正な目的で別の環境から真正なデバイスの判定結果を再利用する攻撃です。レスポンスをキャッシュに保存する代わりに、標準 API リクエストを実行して、オンデマンドで判定結果を取得できます。
階層型適用戦略を準備する
Play Integrity API の完全性判定にはさまざまなレスポンスがあり、それによって、複数の階層で適用できる不正使用対策戦略を構築できます。そのためには、可能なレスポンスまたはレスポンス グループごとに異なる動作をするようにアプリのバックエンド サーバーを構成します。
また、Google Play Console からの API レスポンスで追加のデバイスラベルの受け取りをオプトインすることで、デバイスの信頼性に基づいて適用戦略を階層化することもできます。各デバイスは、それぞれの条件を満たしたすべてのラベルを返します。たとえば、すべてのデバイスラベルの受け取りをオプトインした場合は、MEETS_BASIC_INTEGRITY
のみを返すデバイスよりも、MEETS_STRONG_INTEGRITY
、MEETS_DEVICE_INTEGRITY
、MEETS_BASIC_INTEGRITY
を返すデバイスを信頼することを選択できます。各シナリオで、サーバーから異なるレスポンスを返すことができます。
サーバーからアプリに多様なレスポンスを送信する
多様な決定結果を用意すると、各レスポンスでサーバーからアプリにバイナリの許可または拒否のレスポンスを送信するよりも、複製が困難になります。たとえば、「許可」、「制限付きで許可」、「CAPTCHA の完了後に制限付きで許可」、「拒否」のような一連の関連するレスポンスを使用できます。
最近のデバイスのアクティビティを使用して大規模な不正行為を検出する
Play Integrity API の最近のデバイスのアクティビティ機能を使用して、 デバイスが完全性トークンを大量にリクエストしています。大量のアクティビティがある 不正な行為者は一般に、実際のデバイスから有効な構成証明結果を生成し、 ユーザーに root 権限のあるデバイスやエミュレータに対する攻撃を自動化するための bot を提供します。 最近のデバイスのアクティビティレベルで 過去 1 時間にそのデバイスでアプリによって生成された証明書の数。
実用的なエラー メッセージを表示する
可能であれば、有用なエラー メッセージをユーザーに提供して、ユーザーがエラーの解決方法を理解できるようにします。たとえば、再試行、インターネット接続の有効化、Google Play ストア アプリが最新かどうかの確認などの解決方法を提示します。
不測の問題や障害に対する計画を立てる
Play ステータス ダッシュボードには、Play Integrity API のサービスのステータスに関する情報に加えて、停止や障害に関する情報も表示されます。インフラストラクチャの変更を 万一大規模な障害が発生した場合でも、バックエンド サーバーが機能するようにしておきましょう。 Play Integrity API の停止。
エンドツーエンドの企業詐欺ソリューションを検討する
不正行為や bot 管理のための総合ソリューションを求める企業のお客様は、デベロッパーに不正行為のリスクスコアを提供する Android 向け SDK が含まれるモバイル向けの reCAPTCHA Enterprise を購入できます。reCAPTCHA Enterprise には最初から Play Integrity API シグナルが含まれており、それを reCAPTCHA ネットワークおよびアプリケーション シグナルと組み合わせて、スムーズで非表示の不正管理ソリューションをすぐに使用できるようにしています。Play Integrity API を利用できない Android アプリの保護もできます。
価値の高い機能や機密性の高い機能にアクセスする際に、リスクの高いトラフィックを確認する
アプリやゲームで、Play Integrity API で保護する価値の高いアクションや機密性の高いアクションを特定します。これにより、アクセスを完全に拒否する必要がなくなります。可能であれば、価値の高いアクションを許可する前に、リスクの高いトラフィックを検証します。たとえば、アプリアクセス リスクにより、画面をキャプチャする可能性のあるアプリが実行されていることが示されている場合は、保護したい機能の実行を許可する前に、画面をキャプチャできるアプリを無効にするかアンインストールするようユーザーに求めます。
利用規約とデータ セーフティ
Play Integrity API にアクセスするか Play Integrity API を使用すると、Play Integrity API 利用規約に同意したものと見なされます。適用されるすべての利用規約とポリシーを読み理解したうえで、API にアクセスしてください。
Google Play には、デベロッパーがアプリに関する情報を開示するためのデータ セーフティ セクションがあります ユーザーに情報を提供し続けるための、データの収集、共有、セキュリティ対策。データフォームの記入方法については、Play Integrity API によるデータ処理の仕組みに関する情報をご覧ください。