Авторизованные покупатели теперь поддерживают передачу рекламного идентификатора Android в запросах ставок на инвентарь в мобильных приложениях.
О рекламном идентификаторе
В сервисах Google Play версии 4.0 компания Android представила новый сбрасываемый пользователем идентификатор рекламы, называемый рекламным идентификатором .
Рекламный идентификатор может использоваться рекламодателями для запуска кампаний ремаркетинга и регистрации «конверсий» (покупка или загрузка). Рекламный идентификатор имеет две ключевые особенности:
- Пользователи могут сбросить рекламный идентификатор в любое время.
- Пользователи могут отказаться от рекламы на основе интересов в любое время прямо из приложения «Настройки Google». Этот параметр применяется ко всем рекламным компаниям, использующим рекламный идентификатор.
Техническое определение
Рекламный идентификатор передается через BidRequest.Mobile.encrypted_advertising_id
в прототипе ставок в реальном времени:
optional bytes encrypted_advertising_id = 20;
Поле имеет размер 36 байт и содержит 3 раздела:
-
initialization_vector
: 16 байт. -
ciphertext
: 16 байт, зашифрованный 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 байта — генерируются как первые 4 байта: hmac(integrity_key, advertising_id || initialization_vector) |
encryption_key | 32 байта — предоставляются при настройке учетной записи. |
integrity_key | 32 байта — предоставляются при настройке учетной записи. |
advertising_id | 16 байт — исходный незашифрованный рекламный идентификатор, который представляет собой UUID. |
final_message | 36 байт — массив байтов, передаваемый через поле encrypted_advertising_id . |
Операторы | Подробности |
---|---|
hmac(key, data) | SHA-1 HMAC, использование key для шифрования data . |
a || b | строка a объединена со строкой b . |
Схема шифрования
Схема шифрования рекламного идентификатора основана на той же схеме, которая используется для расшифровки подтверждений цен .
- Рекламный идентификатор хранится в массиве байтов, который зашифрован с использованием специальной схемы шифрования, предназначенной для минимизации накладных расходов по размеру и обеспечения адекватной безопасности.
- Схема шифрования использует алгоритм 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-библиотека
Вместо реализации криптоалгоритмов для кодирования и декодирования рекламного идентификатора вы можете использовать DoubleClickCrypto.java . Дополнительные сведения см. в разделе Криптография .