SDKシグネチャー
AdjustのSDKシグネチャーは、SDKスプーフィングによる不正インストールを防止します。このSDKスプーフィングとは、一般的に不正業者がアプリ計測ツール、もしくはアプリパブリッシャーのサーバーに対して、偽のインストール通信を送りインストール数を水増しする手口です。
Adjust SDKは、HTTPSなどの暗号化された通信チャネルを使用してAdjustのサーバーと通信します。しかし、偽装したインストール通信を送るために、不正業者はアプリとアプリパブリッシャー間、もしくはアプリと第三者計測サーバーのデータ通信を傍受・解読してしまう可能性があります。
この脆弱性に対処するため、Adjust SDKはデジタルシグネチャーを送信します。これによって、Adjustサーバーは新規インストールデータを1つ1つ検証し、デジタルシグネチャーがない不正インストールをアトリビューション対象から外すことができます。このシグネチャーは、Adjust管理画面で生成されるアプリシークレットから作成されます。アプリシークレットの値は、アプリパブリッシャーとAdjustしか知ることができません。
Adjust SDKシグネチャーを有効化することで、お客様のアトリビューションデータの正確性と安全性を確保できます。
事前準備
はじめに、以下の設定手順をお読みください。
ご利用の条件
- この機能はAdjustの全てのお客様がご利用いただけますが、管理画面には自動的に表示されません。
- アプリにSDKシグネチャーを実装するには、担当のテクニカル アカウント マネージャーまたはsupport@adjust.comまでお問い合わせください。
要件
参考
- デフォルトでは、SDKシグネチャーは新しいアプリに対して有効化されません。つまり、SDKスプーフィング被害に対してプロテクションがない状態です。受信する全てのインストールにシグネチャーが入っていることを確認した後に、シグネチャーを有効化することを推奨します。詳細は、管理画面でシグネチャーを有効化する方法を確認してください。
SDKシグネチャ―の設定方法
SDKシグネチャーをSDK側で実装すると、すべての新規インストール通信に「署名」が追加されます。これによりAdjustのサーバーは、署名がない不正インストールを検出し、拒否することができます。
SDKシグネチャーの設定は3つの手順で行います。
1. アプリシークレットを作成
アプリシークレットを作成するには、以下の手順に従ってください。
Adjust管理画面にて
該当アプリの下部に表示されている(▲)ボタンを選択します。
その他の設定(All Settings) > SDKシグネチャー (SDK Signature) を選択します。
新規アプリシークレットを作成(CREATE NEW APP SECRET) を選択します。
(任意)アプリシークレット名を入力します。
- 推奨 :アプリシークレットとアプリストア名を含むアプリバージョンを入力することをお勧めします
(任意)アプリシークレットを直接送付できるよう、開発担当者のメールアドレスを入力します。このメールには、アプリトークン、アプリシークレット、アプリシークレットのバージョン、SDK実装ドキュメントへのリンクが含まれます。
保存(SAVE CHANGES) を選択します。
これで、アプリシークレットがリストに追加されます。
注: 以下に対して新規のアプリシークレットを作成することをお勧めします。
- リリースするアプリバージョン毎
- アプリストア毎(例:Google Playストア、Amazon Appstore)
- プリインストールキャンペーン
2. SDKにアプリシークレットを実装
アプリシークレットを作成したら、そのシークレットをAdjust SDKに実装します。実装後、アプリをアプリストアに提出することができます。
アプリシークレットをSDKに追加するには、GitHubの開発者向けガイドの手順に従ってください。
3. SDKシグネチャーを有効化
有効化するタイミング
アプリシークレットがAdjust SDKに追加されると、受信するインストールにSDKシグネチャーが入るようになります。ただし、約2期間分のアトリビューション期間の間待ってから、シグネチャーを有効化することをお勧めします。
- たとえば、Adjustのデフォルトのアトリビューション期間である7日間の場合は、14日間待ってからSDKシグネチャーを有効化してください。
これにより、以前にアプリをダウンロード済みで、アプリを開いたばかりのユーザーにシグネチャーが入っていなくても、Adjustでインストールとして計上されます。
注:場合によっては、全てのインストールにSDKシグネチャーが確認できるようになるまでに、推奨する2期間分のアトリビューション期間よりも時間がかかることがあります。例えば、新しいアプリバージョンにアプリシークレットを追加し、1か月にわたってアップデートを段階的にリリースする場合は、最終リリースの日から、全てのユーザーがこのアプリバージョンにアップデートするまでの時間を考慮してください。
有効化の動作
SDKシグネチャーを有効化するまでは、全てのインストールが受理されます。お客様がシグネチャーを有効化すると、Adjustのサーバーは直ちに一意のシグネチャーが含まれない全てのSDK通信を却下するようになります。
有効化のトグルOFF | 有効化のトグルON | |
---|---|---|
Adjustのサーバーの動作 | 「全て」のインストールを受理 | 有効なシークレットを含むインストールのみを受理 |
シークレットがないインストールもしくは無効なアプリシークレットが含まれているインストールは全て却下
シグネチャーを有効化するには、管理画面で以下の手順に従ってください。
- 該当アプリの下部に表示されている(▲)ボタンを選択します。
- その他の設定(All Settings) > SDKシグネチャー (SDK Signature) を選択します。
- SDKシグネチャーの有効化(Enforce SDK signature) トグルを ON に切り替えます。
これで、SDKシグネチャーが有効になります。
アプリシークレットの管理
管理画面からアプリシークレットのコピー、編集、無効化、再有効化が行えます。アプリシークレットの名前を変更するには、鉛筆アイコンを選択します。アプリシークレットを無効化または再有効化するには、電源アイコンを選択します。
注: アプリ開発の担当者ではなく、データ分析の担当者などトラフィックの状況を把握している担当者がアプリシークレット無効化のタイミングを決定することを推奨します。
アプリシークレットを無効化
Adjustでは、以下の場合にアプリシークレットを無効化することをお勧めします。
- インストールレポートに役立たなくなった
- アプリの新バージョンを(全てのアプリのプラットフォームとストアで)リリースした
- 内部データの侵害やアプリシークレットの外部漏洩が疑われる
アプリシークレットの無効化は、即時反映されます。無効化したアプリシークレットはいつでも再有効化できます。
SDKシグネチャーが有効化されると、無効化されたアプリシークレットとともに発生したアプリのインストールは全て却下され、Untrusted Devicesの下に分類されます。Adjustは、これらの却下された端末によるセッションおよびイベントの計測を継続しますが、この情報は、Adjust不正防止ツールを使用している場合のみ、管理画面のレポートに表示されます。
アプリシークレットを再有効化
Adjustでは通常、アプリシークレットの再有効化を推奨していません。以下の場合にのみ行うようにしてください。
- アプリシークレットが誤って無効化された
- アプリシークレットの無効化後、トラフィックに不可解な変化(たとえば、インストール数が大幅かつ不可解に減少)が認められる
無効化されているアプリシークレットを表示するには、無効化されたシークレットを表示(Show deactivated secrets)ボックスにチェックを入れます。次に、電源アイコンをクリックして、次の画面でアプリシークレットを再有効化します。そのアプリシークレットは有効なアプリシークレットとしてリストに再表示されます。アプリシークレットIDは元のままです。
アプリシークレットの再有効化は、即時反映されます。無効化されている間に拒否されたインストールが、遡って管理画面の履歴データに追加されることはありません。無効化されている間に拒否されたインストールは全て、拒否されたままになります。
レポートを表示する
管理画面でアプリシークレットのレポートを表示するには、以下の手順に従ってください。
- 該当アプリの下部に表示されている(▲)ボタンを選択します。
- その他の設定(All Settings) > SDKシグネチャー (SDK signature) を選択します。
- シークレットのレポートを表示(VIEW SECRET STATS) を選択します。
グラフの左側にあるのがアプリシークレットとNo Secrets
(発生した場合)です。
- アプリシークレットを選択してドリルダウンし、国またはトラッカー別のインストールを表示します。
- アプリシークレットのデータをグラフに追加するには、追加したいアプリシークレットの追加アイコン(+)を選択します。
- アプリシークレットのデータをグラフから削除するには、該当のアプリシークレットの削除アイコン(-)を選択します。
グラフの実線は有効なシグネチャーが含まれているインストールを表し、点線は無効なシグネチャーが含まれているインストールを表します。この表を使用して、SDKシグネチャーが有効化されているときと有効化されていないときに、シークレットのレポートにインストールがどのようにレポートされているかを確認してください。
SDKシグネチャーの有効化OFF | SDKシグネチャーの有効化ON | |
---|---|---|
有効なシグネチャーが含まれるインストール | 受理 関連するシークレットの下に有効(valid)と表示される | 受理 関連するシークレットの下に有効(valid)と表示される |
無効なシグネチャーが含まれるインストール | 受理 関連するシークレットの下に無効(invalid)と表示される | 却下 関連するシークレットの下に無効(invalid)と表示される |
シークレットが含まれていないインストール | 受理 シークレットがありません(No Secret)の下に無効(invalid)と表示される | 却下 シークレットがありません(No Secret)の下に無効(invalid)と表示される |
グラフの上にカーソルを移動すると、特定の時点での値が表示されます。Adjust SDKの環境がサンドボックスモードの場合、このグラフに表示されません。
社内でのデータ漏洩が疑われる場合は、アプリシークレットを無効化する必要があります。アプリシークレットの無効化のタイミングは、データ分析の担当者が決定するよう推奨します。また、無効化されたアプリシークレットの再有効化はいつでも行うことができます。
グループ化(時間、日、週、または月)
グラフに表示されるデータポイントの数を変更するには、グループフィルターを使用します。使用できるオプションは、選択した期間によって異なります。
時間(Hour) を選択すると、選択した期間の毎時のデータポイントが表示されます。これは、1日の時間帯によって変化するユーザーアクティビティを確認するのに役立ちます。
一方、 月(Month) を選択すると、選択した期間の毎月のデータポイントが1つだけ表示されます。これによって、インストールアクティビティの経時変化をより長期的に確認できます。
線形または対数
線形(linear) ビューは、データ範囲の重みが均等で、グラフのY軸のスケールは均一に表示されます。このビューの決定は、上方の範囲より下方の範囲にアクティビティが多く見られる場合、グラフの下部が圧縮されて解読しにくくなる場合があります。
対数(logarithmic) ビューでは、データ範囲が1つ上がる毎に空間が半分になります。Y軸の上に行くほど、各範囲の空間が徐々に狭くなります。これによって、下方の範囲の空間が広くなりますが、誤った解釈につながるおそれがあります。
よくあるご質問
デジタルシグネチャーとは?
デジタルシグネチャーは、デジタルのメッセージやドキュメントの認証に使用される数学的手法です。デジタルシグネチャーは、メッセージが安全に送信され、送信中にデータ漏洩が発生していないことを示す設計となっています。
アプリシークレットとは
アプリシークレットは、5つの整数を組み合わせたものです。Adjustは、AdjustのサーバーにSDKトラフィックを送信する際に、この値を使用して重要なデータポイントをハッシュ化します。サーバーでは、Adjustがこのハッシュ値に基づいてインストールの正当性を確認することができます。Adjust管理画面から生成されアプリシークレットを使って、SDKシグネチャーが算出されます。プレーンテキスト形式を使用しているため開発者への連絡も非常に簡単です。
シグネチャーが無効な場合とシグネチャーが無い場合の違いは?
Adjust管理画面で生成したアプリシークレットに基づいて算出したシグネチャーと一致しない場合、そのシグネチャーは無効とみなされます。無効なシグネチャーには、不正なシグネチャーと、無効化されたアプリシークレットから算出されたシグネチャーが含まれます。
アプリのインストール通信にシグネチャーが一切含まれていない場合は、シグネチャーがないと見なされます。SDKシグネチャーが有効化されている場合にのみ、シグネチャーのないインストールが拒否されます。
拒否されたインストールアクティビティをAdjustから受け取る方法は?
リアルタイムコールバックまたはCSVアップロードを介して、SDKシグネチャーが無効または含まれていないために拒否されたインストールの通知を受け取ります。
注 :Adjustの不正防止ツールを使用している場合は、拒否されたインストールおよびリアトリビューションのコールバックのみ受け取ることが可能です。
リアルタイムコールバックの設定
該当アプリの下部に表示されている(▲)ボタンを選択します。
その他の設定(All Settings) > ローデータエクスポート(Raw Data Export)> [リアルタイムコールバック(Real-Time Callbacks)の順に選択します。
拒否されたインストールまたは拒否されたリアトリビューションの横にある 編集(Edit) (鉛筆アイコン)を選択します。
コールバックURLを入力し、拒否理由のパラメータ値を追加します。
- 指定するパラメータを入力します。これはサーバーの設定に合わせてカスタマイズできます。
- 値は、
{rejection_reason}
とします。 - 例:
rejected_install_reason={rejection_reason}
UPDATE を選択します。
SDKシグネチャーが無効、あるいは含まれていないためにインストールまたはリアトリビューションが拒否されている場合、次の内容がコールバックに含まれます。
例: rejected_install_reason=Invalid+signature
CSVアップロードの設定
- 該当アプリの下部に表示されている(▲)ボタンを選択します。
- その他の設定(All Settings)>ローデータエクスポート(Raw Data Export)>CSVアップロード(CSV Upload) の順に選択します。
- エクスポートするイベント(Select Events for Export) を選択します。
- 拒否されたインストール(rejected install)と拒否されたリアトリビューション(rejected reattribution)のどちらかまたは両方を選択します。
- CSVの定義(CSV DEFINITION) に、
{rejection_reason}
プレースホルダーを追加します。
拒否されたインストールまたは拒否されたリアトリビューションのイベントが発生した場合、CSVファイルのアップロードの{rejection_reason}
列にInvalid+signature
と表示されます。