Automatic Integrity Protection で不正な改変や再配布を防ぐ

注: このページで説明する機能は、現時点で一部の Play パートナーのみご利用いただけます。

Google Play の Automatic Integrity Protection は、不正な改変や再配布という形で行われる完全性の侵害からアプリやゲームを保護できるサービスです。Automatic Integrity Protection は、データ接続がなくてもアプリで機能します。Google Play Console でワンクリックで有効にすることができ、テスト前のデベロッパーの作業やバックエンド サーバーとの統合は不要です。

仕組み

Automatic Integrity Protection では、アプリのコードにランタイム チェックを追加して、改変や再配布を制限します。さらに、高度な難読化とリバース エンジニアリング対策の手法を使用して、これらのチェックを削除しにくくします。インストーラ チェックに失敗した場合、Google Play でアプリを入手するよう求めるメッセージがユーザーに表示されます。改変チェックに失敗した場合、アプリは実行されません。これにより、改変されたバージョンのアプリに表示される恐れのある有害なコンテンツから、ユーザーを守ることができます。

Automatic Integrity Protection は、次のような保護を目的として設計されています。

  • 不正な改変を防止する: Automatic Integrity Protection は、アプリを改変から保護することで、動作の改変(請求の削除、広告の追加、広告所有者 ID の変更、マルウェアの追加など)が行われた非公式なコピーを配布しにくくします。
  • 有料アプリの著作権侵害を防止する: Automatic Integrity Protection は、改変されていない Google Play バージョンのアプリを非公式の提供元から入手したユーザーに対して、アプリを Google Play で購入するよう求めるメッセージを表示することで、著作権侵害を防ぎます。このメッセージの表示は任意であり、無効にするには、Automatic Integrity Protection の設定ページで [Google Play からのインストールを必要とする] チェックボックスをオフにします。
  • 正式なアップデートを受け取るようにユーザーに促す: Automatic Integrity Protection は、改変されていない Google Play バージョンのアプリをサイドローディングしたユーザーに対して、進行中のアプリのアップデートを受け取れるように、アプリを Google Play ライブラリに追加するよう促すメッセージを表示できます。このメッセージの表示は任意であり、無効にするには、Automatic Integrity Protection の設定ページで [Google Play からのインストールを必要とする] チェックボックスをオフにします。
重要: Automatic Integrity Protection は、すべてのクラッキング、著作権侵害、再パッケージ化、再配布の防止を保証するものではありません。Automatic Integrity Protection により、これらの行為はより複雑でコストがかかるようになるため、成功する可能性が低くなります。Google Play では Automatic Integrity Protection を継続的に強化していくため、アプリの新しいリリースには自動的に最新かつ最強の保護機能が適用されます。

Automatic Integrity Protection を設定する

Automatic Integrity Protection の使用を開始するために必要な作業は以下のとおりです。セクションをクリックして展開してください。

前提条件

特定のアプリで Automatic Integrity Protection を有効にした場合、デバイスに配布する準備が整った各リリースを作成すると、Google Play によって自動的に保護機能が追加されます。この保護機能により、変更された APK を Google Play が作成し、デベロッパーに代わって署名することが求められます。そのため、デベロッパーは次の作業を行う必要があります。

以下の制限事項にご注意ください。

  • Automatic Integrity Protection は Android 6.0 Marshmallow(API レベル 23)以降でのみサポートされています。Android M は 2015 年にリリースされており、2023 年の時点では、23 以上の midSDKVersion を対象にすることで、有効な Android デバイスの 97% 以上にリーチできます。
  • Automatic Integrity Protection は、ABI x86、x86_64、armeabi-v7a、arm64-v8a に対応しています。アプリのターゲット ABI を更新するには、Gradle の設定を更新します。アクティブな Android デバイスで使用されていないその他の ABI は、アプリの可用性に影響を与えることなくターゲットから削除できます。
  • Automatic Integrity Protection はオフラインで動作します。ただし、Google Play ストア アプリが長期間オフラインだったデバイスでは、[Google Play からのインストールを必要とする] 機能によって、定期的にデータ接続が必要となります。
  • すでにアプリで Google Play ライセンス サービスを使用している場合は、[Google Play からのインストールを必要とする] を無効にする必要があります。
  • アプリを内部アプリ共有にアップロードする場合、保護機能は適用されません。内部アプリの共有リンクは信頼できるチームメンバーとのみ共有するよう十分に注意してください。保護されていないバージョンを外部と共有しないでください。
  • Automatic Integrity Protection はコードの変更を伴うため、App Bundle のコード透明性に対応していません。Automatic Integrity Protection が有効な場合、コード透明性が付与されてアップロードされた App Bundle は拒否されます。
  • Instant エクスペリエンスは保護の対象外です。保護の対象にするには、リリース トラックの App Bundle を Instant 対応にしないでください。保護対象の App Bundle をリリース トラックにアップロードし、保護の対象外にする Instant 対応 App Bundle を Instant App 専用トラックに同時にアップロードすることもできます
ステップ 1: 保護を有効にする

「リリースを準備して公開する」のステップ 1 の説明に沿って、リリースを作成します。

リリースを作成するときに保護機能を有効にすることができます(リリースを準備して公開するステップ 2 を参照)。または、[アプリの完全性] ページ([リリース] > [アプリの完全性])で保護機能を有効にすることもできます。[アプリの完全性] ページには、アプリやゲームで意図したとおりのユーザー エクスペリエンスを実現するための完全性と署名のサービスが含まれています。

リリースを準備するときに、[整合性保護を有効にする] または [完全性の保護の管理] というボタンが表示されます。次に、[Automatic Integrity Protection] で [オンにする] をクリックすると、完全性の保護を有効にできます。Google Play でリリースへの署名と完全性保護が行われ、改ざんや不正な配布が制限されます。これは、Automatic Integrity Protection がオンになっていることを表します。

リリースの準備を完了し、変更を保存します。

ステップ 2: 保護されたアプリをテストする

テストトラックを使用して、保護されたアプリ バージョンをテストし、ユーザー エクスペリエンスやパフォーマンスに予期しない影響が生じないことを確認します。

確認には以下の手順を含めることをおすすめします。

  • ゲームの起動をテストして、起動時のクラッシュや起動時間の速度低下がないか確認します。
  • ネイティブ コード(C / C++)が(独自のコードまたはサードパーティ ライブラリの)Java にコールバックする時点をテストします。たとえば、広告、ロギング、ソーシャルとの統合、認証、Android 固有の機能(権限の処理など)が挙げられます。

テストプロセス中に問題が見つかった場合は、(以前のリリースですでに使用していた)以前のバージョンの Automatic Integrity Protection に戻すことができます。または、Automatic Integrity Protection を無効にすることもできます。保護されていないバージョンをオープン トラックや製品版に昇格させないことをおすすめします。

個々のリリースで完全性保護機能をオフにする方法は次のとおりです。

  1. リリースを準備するときに、[完全性の保護の管理] をクリックします。
  2. [Automatic Integrity Protection] で [以前の Protection 機能] または [このリリースの保護をオフにする] を選択します。
  3. 変更内容を保存します。変更はこのリリースに適用されます。次回リリースをアップロードするときに、最新かつ最強の保護機能がリリースに再び適用されます。
ステップ 3: アプリを製品版トラックに昇格する

準備が整ったら、Google Play Console でリリースを製品版トラックに公開できます。選択した国のすべての Google Play ユーザーに保護されたアプリが公開されます。

ユーザーが完全性保護のダイアログからアクセスしたときのストアの掲載情報をカスタマイズする

Automatic Integrity Protection では、アプリを非公式に入手したユーザーに対して、Google Play でアプリを入手するよう促すメッセージを表示できます。ユーザーがダイアログをタップすると、ストアの掲載情報にリダイレクトされます。そこに表示されているインストール(または購入や更新)ボタンをタップすると、Google Play からアプリを入手してユーザーの Play ライブラリに追加します。

完全性保護のダイアログをタップしたユーザー向けに、ストアの掲載情報のアセット(アプリの名前、アイコン、説明、画像、映像など)をカスタマイズできます。完全性保護のダイアログからユーザーがアクセスしたときのストアの掲載情報をカスタマイズするには:

  1. Google Play Console を開き、[アプリの完全性] ページ([リリース] > [アプリの完全性])に移動します。
  2. [Play Integrity API] セクションまでスクロールします。
  3. [設定] をクリックします。
  4. [ストアの掲載情報のカスタマイズ] セクションまでスクロールします。
  5. [掲載情報の作成] をクリックします。
  6. [ストアのカスタム掲載情報を作成] ページの指示に沿って操作し、[保存] をクリックします。

[ストアのカスタム掲載情報] ページから、完全性保護ダイアログ用のストアのカスタム掲載情報を直接作成することもできます。

  1. Google Play Console を開き、[ストアのカスタム掲載情報] ページ([成長] > [ストアのカスタム掲載情報])に移動します。
  2. [掲載情報の作成] をクリックし、新しい掲載情報を作成するか既存のリスティングを複製するかを選択して、[次へ] をクリックします。
  3. [掲載情報] で [ターゲット ユーザー] までスクロールします。
  4. [URL] を選択し、テキスト ボックスに「playintegrity」と入力します。
  5. その他の情報をすべて入力して、[保存] をクリックします。

ヒント: URL パラメータ「playintegrity」は完全性のディープリンク用に予約されている特殊なキーワードであるため、ストアのカスタム掲載情報を設定する際に一字一句正確に入力する必要があります。

おすすめの実装

アプリの保護されていないバージョンを公開しない

保護されていないバージョンをオープン トラックに公開したり、Google Play 以外のチャネルで公開したりすると、アプリの保護機能は動作しなくなります。アプリの完全性保護機能を維持するには、アプリの保護されたバージョンをオープン トラックと製品版にのみ公開する必要があります。

改ざん対策を組み合わせる際は注意する

Automatic Integrity Protection は、ランタイムで実行される他の改ざん対策との互換性がない可能性があるため、併用するとユーザーに問題が発生する恐れがあります。すでにアプリに Google Play ライセンス サービスを実装している場合は、[Google Play からのインストールを必要とする] を無効にする必要があります。アプリで他のランタイム チェックが実行される場合は、オープン トラックに公開する前に、保護されたアプリを十分にテストしてください。

保護されたアプリをテストする

Google Play はすべてのトラック(内部テスト、クローズド、オープン、製品版)にわたって、保護されたビルドを自動的に配布します。これらのバージョンを通常どおりに十分にテストする必要があります。

アプリのビルドを内部アプリ共有に直接アップロードした場合、Google Play は保護機能を追加しません。これは、内部アプリ共有を使用して、デバッグビルドやその他の類似のビルドをアップロードできるようにするためです。

App Bundle エクスプローラで保護されたアプリ バージョンの内部アプリ共有リンクにアクセスすると、ビルドは Google Play で処理されたとおりの状態で共有されます。そのアプリ バージョンがテストトラックにアップロードされて保護されていた場合、App Bundle エクスプローラの内部アプリ共有リンクからは保護されたバージョンが配布されます。保護機能のステータスは App Bundle エクスプローラの [詳細] タブで確認できます。

クラッシュをモニタリングする

アプリが保護されている結果としてクラッシュ数が増えることがあります。これはおそらく、Automatic Integrity Protection が想定どおりに機能していることを示しています。攻撃者がアプリの改変に失敗した場合、ランタイム チェックは主にアプリをクラッシュさせることで、アプリの実行を停止します。

Google Play に起因しないクラッシュは、Android Vitals の安定性の指標には影響を与えません。他のツール(Crashlytics など)を使用してクラッシュを分析していて、インストール元でフィルタする際にパッケージ名が必要になる場合、Google Play ストアのパッケージ名は「com.android.vending」です。

クラッシュ数の異常な増加について懸念されている場合は、できるだけ詳しい情報を記載して Google までお知らせください。担当チームが調査いたします。クラッシュが保護機能に関連していることが判明した場合は、適切に対応いたします。

アプリのクラッキングされたバージョンを報告する

クラッキングされたバージョンとは、改変された場合または Google Play からのインストールが要求される状況で Google Play の外部からインストールされた場合においても、機能しているアプリのバージョンのことです。

アプリのクラッキングされたバージョンを特定した場合は、Google までお知らせください

関連コンテンツ

この情報は役に立ちましたか?

改善できる点がありましたらお聞かせください。

さらにサポートが必要な場合

次の手順をお試しください。

検索
検索をクリア
検索を終了
メインメニュー
13004211776784517494
true
ヘルプセンターを検索
true
true
true
true
true
92637
false
false