PC 版 Google Play Games の完全性の保護

PC 版 Google Play Games は、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_INTEGRITYMEETS_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 からのインストールを求める」チェックでは定期的にデータ接続が必要になります。