認定バイヤーで、モバイルアプリ広告枠の入札リクエストで Android 広告 ID を渡せるようになりました。
広告 ID について
Google Play 開発者サービス v4.0 で、Android は広告 ID と呼ばれる、ユーザーがリセット可能な広告用の新しい識別子をリリースしました。
広告 ID は、広告主がリマーケティング キャンペーンを実施し、「コンバージョン」(購入やダウンロード)を記録する際に使用されます。広告 ID には主に次の 2 つの機能があります。
- ユーザーはいつでも広告 ID をリセットできます。
- インタレスト ベース広告は、Google 設定アプリからいつでもオプトアウトできます。この設定は、広告 ID を使用するすべての広告会社に適用されます。
技術的な定義
広告 ID は、リアルタイム ビッダー プロトコルで BidRequest.Mobile.encrypted_advertising_id
を介して渡されます。
optional bytes encrypted_advertising_id = 20;
このフィールドは 36 バイトで、次の 3 つのセクションが含まれます。
initialization_vector
: 16 バイト。ciphertext
: 16 バイト。広告 ID の暗号化された 16 バイトの UUID。integrity_signature
: 4 バイト。
{initialization_vector (16 bytes)}{ciphertext (16 bytes)}{integrity_signature (4 bytes)}
定義
変数 | 詳細 |
---|---|
initialization_vector |
16 バイト - インプレッションに固有の値。 |
ciphertext |
16 バイト - <advertising_id <xor> hmac(encryption_key, initialization_vector)> として生成 |
integrity_signature |
4 バイト - hmac(integrity_key, advertising_id || initialization_vector) の最初の 4 バイトとして生成 |
encryption_key |
32 バイト - アカウント設定時に提供されます。 |
integrity_key |
32 バイト - アカウント設定時に提供されます。 |
advertising_id |
16 バイト - 暗号化されていない元の広告 ID(UUID) |
final_message |
36 バイト - encrypted_advertising_id フィールドを介して送信されるバイト配列。 |
演算子 | 詳細 |
---|---|
hmac(key, data) |
SHA-1 HMAC。key を使用して data を暗号化します。 |
a || b |
文字列 a が文字列 b と連結されます。 |
暗号化スキーム
広告 ID の暗号化スキームは、価格確認の復号に使用されるものと同じスキームに基づいています。
- 広告 ID はバイト配列に格納されます。この配列は、適切なセキュリティを確保しながらサイズのオーバーヘッドを最小限に抑えるよう設計されたカスタム暗号化スキームを使用して暗号化されます。
- この暗号化スキームでは、鍵付き HMAC アルゴリズムを使用して、インプレッション イベントに固有の
initialization_vector
に基づいてシークレット パッドを生成します。
暗号化疑似コード
advertising_id = advertising ID from mobile device pad = hmac(encryption_key, initialization_vector) // first 16 bytes ciphertext = pad <xor> advertising_id integrity_signature = hmac(integrity_key, advertising_id || initialization_vector) // first 4 bytes final_message = initialization_vector || ciphertext || integrity_signature
復号スキーム
復号コードは、1)暗号鍵を使用して encrypted_advertising_id
フィールドを復号し、必要に応じて 2)整合性ビットで整合性ビットを検証します。キーは、アカウントの設定時に提供されます。実装の構成方法に制限はありません。
- パッドを生成:
hmac(encryption_key, initialization_vector)
- XOR: この結果と
<xor>
を暗号テキストとともに使用して、暗号化を逆戻します。 - 検証: 完全性署名は 4 バイトの
HMAC(integrity_key, advertising_id || initialization_vector)
を渡します。
復号疑似コード
(initialization_vector, ciphertext, integrity_signature) = final_message // split up according to length pad = hmac(encryption_key, initialization_vector) // first 16 bytes advertising_id = ciphertext <xor> pad confirmation_signature = hmac(integrity_key, advertising_id || initialization_vector) // first 4 bytes success = (confirmation_signature == integrity_signature)
Java ライブラリ
広告 ID のエンコードとデコードを行う暗号アルゴリズムを実装する代わりに、 DoubleClickCrypto.java を使用できます。詳細については、暗号化をご覧ください。