SDKシグネチャー
AdjustのSDKシグネチャーは、外部からの攻撃ベクトルに対してスプーフィングを防止するソリューションです。このライブラリは、独自のマングリングアルゴリズムを使用してAdjust SDKからAdjustのサーバーへの接続を強化し、暗号化とセキュリティチェックにより完全性を保証します。
SDKシグネチャーシグネチャーライブラリは、追加のコードを必要とせずに簡単に実装でき、Adjust SDKとシームレスに動作するように設計されています。
ソリューションの仕組み
SDKシグネチャーライブラリは、不正防止エンジンではありません。 アプリ内のバグによる悪用、元のアプリ外のリソースに対する変更、アプリのロジックエラーなど、ユーザーレベルの不正には対応できません。
Adjust SDKがAdjustのサーバーに情報を送信する際、その情報はWebトラフィックの業界標準暗号化プロトコルであるTLS(トランスポートレイヤーセキュリティ)を使用して暗号化されます。TLSは、不正業者が情報を読み取ることを防ぎますが、不正なインストールやイベントデータがアプリのエンドポイントに送信されるのを防ぐことはできません。
SDKシグネチャーライブラリは、独自のマングリング(名前修飾)アルゴリズムに難読化、エミュレーション対策、およびセキュリティチェックを組み合わせることで、AdjustのサーバーへのSDK接続を保護し、Adjustのサーバーが第三者から送信された情報を拒否するようにします。サーバーは全てのリクエストをチェックし、有効なシグネチャーがあることを確認します。 署名されていない情報 または 無効な署名 は全て拒否され、有効な情報のみを受け取ることができます。
この動画は概要を説明するもので、以下の完全なドキュメントに代わるものではありません。重要な詳細情報を見逃すことがないよう、ドキュメントにある手順をすべて確認するようにしてください。
「Understanding Data & Reporting」トレーニングの全編録画は、こちらからご覧いただけます。
開始方法
SDKシグネチャーライブラリは、ほとんどの場合、デフォルトでSDK v5にバンドルされています。SDKからの指示がある場合、または特定のSDKシグネチャーライブラリのバージョンが必要な場合にのみ、別の連携を進めてください。
SDKシグネチャーライブラリは、Android、iOS、Unityで利用が可能です。ライブラリを連携するには、プラットフォームの連携ガイドに従ってください。
SDK v5にバンドルされているもの以外のマルチプラットフォームフレームワークは、公式にサポートされていません。マルチプラットフォームフレーム用のSDKシグネチャーライブラリをアップデートするには、iOSとAndroidのガイドの指示に従ってください。テストは、開発フレームワークに依存しません。
設定をテストし、連携が機能していることを確認することも忘れずに行ってください。
証明書のフィンガープリントを管理
証明書フィンガープリントは、 Android をターゲットとするアプリにのみ必要となります。
アプリにSDKシグネチャーライブラリを実装すると、Adjust SDKからAdjustに送信される全てのリクエストが署名されます。また、Adjust SDKは、署名証明書のフィンガープリントなどの関連情報をAdjustのサーバーに送信します。
証明書のフィンガープリントを取得するには、プラットフォームごとのドキュメントに従ってください。
署名証明書のフィンガープリントを許可リストに追加する必要があります。フィンガープリントが許可リストに追加されていない場合、アプリからのトラフィックがスプーフィングされる可能性があります。
Adjustでシグネチャーを追加
証明書のフィンガープリントを取得したら、以下を実行して許可リスト(ホワイトリスト)に追加してください。
- AppViewでアプリを選択し、アプリの詳細画面を開きます。
- プロテクション(Protection) タブを選択します。
- SDKシグネチャー(SDK Signature) ウィジェットの 編集(Edit) ボタン
を選択します。 - Androidフィンガープリント(Android finterprinting) セクションで、 新規フィンガープリント(New fingerprint) を選択します。
- 表示されたテキストボックスにフィンガープリントをペーストします。
- Add を選択します。
- 許可リストに追加したい全てのフィンガープリントに対してこの手順を繰り返します。
これで、フィンガープリントがアプリで許可リストに登録されました。
署名証明書を更新した場合は、Adjust側で証明書のフィンガープリントを更新する必要があります。
不要になったフィンガープリントは、無効化することができます。
- AppViewでアプリを選択し、アプリの詳細画面を開きます。
- プロテクション(Protection) タブを選択します。
- SDKシグネチャー(SDK Signature) ウィジェットの 編集(Edit) ボタン
を選択します。 - Androidフィンガープリント セクションで、無効化するフィンガープリントを見つけます。
- 無効化(DEACTIVATE) を選択します。
無効化されたフィンガープリントを含むトラフィックは、疑わしいデータとして拒否されます。
Automate APIを使用してシグネチャーを追加
Automate APIを使用してアプリを管理する場合、 /appエンドポイントを使用してAndroidシグネチャーを設定できます。 Automate APIによるAndroid署名の設定手順に従い、Automate APIを使用してアプリケーションに署名を追加します。このメソッドを使用して追加されたシグネチャーは、許可リストに自動的に追加されます。
シグネチャーの有効化
シグネチャーの検証が有効な場合、以下のように動作します。
- 無効なシークレット(Invalid Secret) として分類されたトラフィックは拒否されます。
- シークレットIDが なし(無効)(None(Disabled)) に設定されている署名付きのトラフィックは、インストールおよびインストール後のアクティビティにおいて拒否されます。
- シークレットIDが インストール後のみ(Post-install only) に設定されているインストールは拒否されます。
インストール
アプリにSDKシグネチャーライブラリを実装したら、Adjustでシグネチャーを使用するように設定してください。シグネチャーが有効化されていない場合、全てのSDKリクエストは検証なしで受理されます。
Adjustは、シグネチャーの検証を自動的に有効化しません。これにより、ユーザーがアプリのアップデートされたバージョンをダウンロードして開くまでの時間を確保し、インストールを記録することができます。
Adjustは、新しいバージョンのSDKシグネチャーを持つアプリをリリースした後、アトリビューション期間を約2回分待機してからシグネチャーの検証を行うことを推奨します。
例:Adjustのデフォルトのアトリビューション期間は7日間です。この場合、新しいバージョンのアプリをリリースして14日が経過した後にシグネチャーの検証を行ってください。これにより、以前にアプリをダウンロード済みで、アプリを開いたばかりのユーザーのデバイスにシグネチャーが追加されていなくても、インストールとして計上されます。
インストールの検証の動作は、各シークレットIDに設定された 有効(Active for) の範囲によって異なります。詳細については、シークレットIDの管理を参照してください。
シグネチャーを有効化するには、以下の手順に従ってください。
- AppViewでアプリを選択し、アプリの詳細画面を開きます。
- プロテクション(Protection) タブを選択します。
- SDKシグネチャー(SDK Signature) ウィジェットの 編集(Edit) ボタン
を選択します。 - 疑わしいインストールを拒否する ことで、シグネチャーの検証を強化します。
Strictモードで署名を検証
SDKシグネチャーライブラリを実装し、インストールのシグネチャー検証を有効にすると、 Strictモードで署名を検証(Strict signing) を適用して疑わしいセッションやイベント、広告収益を拒否することで、不正なトラフィックからキャンペーンを保護できます。各シークレットIDの 有効(Active for) 範囲を調整することで、検証対象となるトラフィックを管理できます。詳細については、シークレットIDの管理を参照してください。
「Strictモードで署名を検証」を有効化する前に、サポートされているアプリバージョンにユーザーを移行する強制アップデートメカニズム が導入されていることを確認してください。未署名、または無効なシグネチャーで署名されている古いアプリバージョンによるインストール後の アクティビティ は、恒久的に拒否されます。
Strictモードでの署名検証を有効にするには、以下の手順に従ってください。
- AppViewでアプリを選択し、アプリの詳細画面を開きます。
- プロテクション(Protection) タブを選択します。
- SDKシグネチャー(SDK Signature) ウィジェットの 編集(Edit) ボタン
を選択します。 - 疑わしいインストール後のアクティビティを拒否 のトグルを切り替えると、 Strictモードで署名を検証 が有効化します。
シークレットIDの管理
シークレットID(Secret ID) は、特定のプラットフォームにあるSDKシグネチャーライブラリをの特定のバージョン使用して、アプリを一意に識別するための識別子です。署名されたリクエストをAdjust SDKが送信すると、AdjustがシークレットIDを生成します。
有効(Active for) 範囲を使用して、各シークレットIDの適用方法を管理できます。シークレットIDは、デフォルトで 全てのトラフィック(All traffic) に設定されています。シグネチャー検証が有効な状態でシークレットIDを なし(無効化)(None(Disabled)) に設定すると、対応するシグネチャーライブラリのバージョンとプラットフォームアプリから送信された全てのリクエストが拒否されます。
Adjustでは、以下の場合にシークレットIDを なし(無効化)(None(Disabled)) に設定することをお勧めします。
- インストールレポートに役立たなくなった。
- アプリの新バージョンを全てのアプリのプラットフォームとストアでリリースした。
対応するシークレットIDの範囲を インストール後のみ(Post-install only) に変更すると、SDKシグネチャーバージョンが古い場合でも既存ユーザーがアプリを使用できるようにしながら、古いバージョンからの新規インストールを防止できます。
シークレットIDの範囲を変更すると、即時に反映されます。
- 疑わしいインストールを拒否するためにシグネチャー検証を有効にしている場合、シークレットIDが なし(無効)(None(Disabled)) または インストール後のみ(Post-install only) に設定されているアプリインストールはすべて拒否され、 疑わしいデバイス(Untrusted devices) に分類されます。Adjustは、これらの拒否された端末によるセッションおよびイベントの計測を継続しますが、この情報はAdjustの不正防止機能を使用している場合のみ、ダッシュボードのレポートに表示されます。
- インストール後のアクティビティを拒否するためにシグネチャー検証を有効にしている場合、シークレットIDが なし(無効)(None(Disabled)) に設定されているインストール後のアクティビティは拒否されます。ただし、インストールがすでに拒否され、 疑わしいデバイス(Untrusted devices) にアトリビュートされている場合、インストール後のアクティビティは 疑わしいデバイス のロジックで処理されることから、再度拒否はされません。
シークレットIDを管理する方法
- AppViewでアプリを選択し、アプリの詳細画面を開きます。
- プロテクション(Protection) タブを選択します。
- SDKシグネチャー(SDK Signature) ウィジェットの 編集(Edit) ボタン
を選択します。 - シークレット(Secrets) セクションで、 編集(Edit) のアクションを実行します。
- 選択したシークレットIDの名前を変更できます。
- 選択したシークレットIDが 有効(Active for) となる範囲を変更できます。
- すべてのトラフィック(All traffic) – ステータス:有効
- インストール後のみ(Post-install only) – ステータス:有効
- なし(無効化)(None (Disabled)) – ステータス:無効
無効化されたIDを表示するには、無効化された シークレットIDを表示(Show deactivated secret IDs) を切り替える必要があります。
ライブラリのアップデート
SDKシグネチャーライブラリは、ほとんどの場合、デフォルトでSDK v5にバンドルされています。SDK v5をアップデートすると、SDKシグネチャーライブラリも同様にアップデートされます。依存関係マネージャーを利用していない場合、または、特定のSDKシグネチャーライブラリバージョンが必要な場合にのみ実行してください。
何らかの理由で、これまで使用していないバージョンのSDKシグネチャーライブラリにダウングレードする場合は、事前にAdjustの担当者にご連絡いただくか、support@adjust.comまでお問い合わせください。
ライブラリを差し替える以外、アプリに変更を加える必要はありません。SDKシグネチャーライブラリをアップデートするには、以下の手順に従ってください。
お使いのプラットフォームのアップデートガイドを参照してください。
設定後にテストし、更新内容に問題がないか確認します。お使いのプラットフォームのテストガイドを参照してください。
SDK v5にバンドルされているもの以外のマルチプラットフォームフレームワークは、公式にサポートされていません。マルチプラットフォームフレーム用のSDKシグネチャーライブラリをアップデートするには、iOSとAndroidのガイドの指示に従ってください。テストは、開発フレームワークに依存しません。
を選択します。