PC 版 Google Play Games は、Google Play の完全性保護をサポートしています。 Integrity API などの Google Play の機能を使用して ゲームが改ざんされていないこと、または信頼できない提供元からインストールされていないこと。
Play Integrity API
Play Integrity API により、潜在的に危険で不正な操作からゲームを保護できます。この API を使用すると、攻撃や、不正行為、偽装、不正アクセスなどの不正使用を防止できます。Play Integrity API は、SafetyNet Attestation API(SNAA)と Play App Licencing API に代わるものです。SNAA は PC 版 Google Play Games では機能しません。
デバイスの完全性フィールド
deviceRecognitionVerdict
フィールドには deviceRecognitionVerdict
という値のみが含まれます。この値は、デバイスがアプリの完全性をどの程度強化できるかを表します。デフォルトでは、deviceRecognitionVerdict
は次のいずれかの値です。
MEETS_DEVICE_INTEGRITY
: アプリは Google Play 開発者サービスを備えた Android デバイスで実行されています。このデバイスはシステム完全性チェックに合格し、Android の互換性要件を満たしています。MEETS_VIRTUAL_INTEGRITY
: アプリは Google Play 開発者サービスを備えた仮想 Android 環境で実行されています(現在 PC 版 Google Play Games に限定されています)。この環境は Android の互換性に関する主要な要件を満たしており、Google Play の完全性チェックに合格しています。- なし(空の値): アプリは、API フックなどの攻撃やルート権限取得などのシステム侵害の兆候があるデバイス、または Google Play の完全性チェックに合格していない仮想デバイス(エミュレータなど)で実行されています。
Play Integrity API は、deviceRecognitionVerdict
値の MEETS_VIRTUAL_INTEGRITY
を使用して、ゲームが PC 版 Google Play Games で実行されていることを示します。Play Integrity API からのレスポンスを渡す例を次に示します。
deviceIntegrity: {
// "MEETS_VIRTUAL_INTEGRITY" indicates the game is running on Google Play Games on PC
deviceRecognitionVerdict: ["MEETS_VIRTUAL_INTEGRITY"]
}
モバイルとゲームの両方でクロス プラットフォーム ゲームを
PC 版 Google Play Games の場合、
検証ロジックでは、MEETS_VIRTUAL_INTEGRITY
と
MEETS_DEVICE_INTEGRITY
。
Automatic Integrity Protection
Automatic Integrity Protection は、ゲームを開くたびに Google Play によって実行されるランタイム チェックです。ゲームが改ざんされている場合や、Google Play 以外でインストールされている場合、Automatic Integrity Protection により、ゲームの実行を阻止できます。Automatic Integrity Protection はデバイスをチェックしません。デバイスの完全性のステータスを取得するには、Play Integrity API を使用する必要があります。
Automatic Integrity Protection は、以下の機能によって完全性を保護します。
- Google Play からのインストールを求める: アプリが Google Play からインストールされたかどうかを確認するチェックを追加します。このチェックが失敗した場合、Google Play からアプリを入手するよう求めるメッセージがユーザーに表示されます。この機能はデフォルトでオンになっていますが、オフにすることもできます。この機能をオフにすると、有料アプリの著作権侵害の保護が無効になります。
- 改変を制限する: アプリが改変されていないかどうかを確認するチェックを追加します。このチェックが不合格だった場合、アプリは実行されません。この機能は常にオンになっており、オフにすることはできません。
- リバース エンジニアリングを制限する: 難読化などの高度な手法を追加して、攻撃者がランタイム チェックを削除するのを困難にします。この機能は常にオンになっており、オフにすることはできません。
Automatic Integrity Protection については、デベロッパーがオプトインする必要があります。デベロッパーの作業(コードの変更など)は不要です。
保護機能は、データ接続やインターネット接続の有無にかかわらず実行されます。サーバー側のコンポーネントは必要ありません。デバイス上の Play ストア アプリが長時間オフラインであった場合、「Google Play からのインストールを求める」チェックでは定期的にデータ接続が必要になります。