Authorized Buyers 現在支援在行動應用程式廣告空間出價要求中傳遞 Android 廣告 ID。
關於廣告 ID
Android 推出 Google Play 服務 4.0 版後,Android 推出了一組可由使用者重設的廣告 ID,稱為廣告 ID。
廣告客戶可使用廣告 ID 放送再行銷廣告活動,並記錄「轉換」(購買或下載)。廣告 ID 有兩個主要功能:
- 使用者隨時可以重設廣告 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) 使用完整性金鑰驗證完整性位元。系統會在設定帳戶時提供金鑰。實作方式沒有任何限制。
- 產生 pad:
hmac(encryption_key, initialization_vector)
- XOR:透過這個結果和
<xor>
使用密文來反向加密。 - 驗證:完整性簽名通過
HMAC(integrity_key, advertising_id || initialization_vector)
的 4 個位元組
解密虛擬程式碼
(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 程式庫
您可以使用 DoubleClickCrypto.java,不必導入加密演算法來對廣告 ID 進行編碼及解碼。詳情請參閱加密編譯。