Agora o Authorized Buyers é compatível com a transmissão do ID de publicidade do Android em solicitações de lance para inventários de apps para dispositivos móveis.
Sobre o ID de publicidade
Com o Google Play Services v4.0, o Android lançou um novo identificador para publicidade que pode ser redefinido pelo usuário, chamado ID de publicidade.
O ID de publicidade pode ser usado pelos anunciantes para executar campanhas de remarketing e registrar "conversões" (compra ou download). O ID de publicidade tem dois recursos principais:
- Os usuários podem redefinir o ID de publicidade a qualquer momento.
- Os usuários podem desativar os anúncios com base em interesses a qualquer momento no app Configurações do Google. Essa configuração se aplica a todas as empresas de publicidade que usam o ID de publicidade.
Definição técnica
O ID de publicidade é transmitido pelo BidRequest.Mobile.encrypted_advertising_id
no protótipo de lances em tempo real:
optional bytes encrypted_advertising_id = 20;
O campo tem 36 bytes e contém 3 seções:
initialization_vector
: 16 bytes.ciphertext
: 16 bytes, o UUID de 16 bytes criptografado do ID de publicidade.integrity_signature
: 4 bytes.
{initialization_vector (16 bytes)}{ciphertext (16 bytes)}{integrity_signature (4 bytes)}
Definições
Variável | Detalhes |
---|---|
initialization_vector |
16 bytes: exclusivo da impressão. |
ciphertext |
16 bytes - gerados como: <advertising_id <xor> hmac(encryption_key, initialization_vector)> |
integrity_signature |
4 bytes - gerados como os primeiros 4 bytes de: hmac(integrity_key, advertising_id || initialization_vector) |
encryption_key |
32 bytes: fornecidos na configuração da conta. |
integrity_key |
32 bytes: fornecidos na configuração da conta. |
advertising_id |
16 bytes: o ID de publicidade original não criptografado, que é um UUID |
final_message |
36 bytes: a matriz de bytes enviada pelo campo encrypted_advertising_id . |
Operadores | Detalhes |
---|---|
hmac(key, data) |
SHA-1 HMAC que usa key para criptografar data . |
a || b |
string a concatenada com a string b . |
Esquema de criptografia
O esquema de criptografia do ID de publicidade é baseado no mesmo esquema usado para descriptografar confirmações de preço.
- O ID de publicidade é armazenado em uma matriz de bytes, que é criptografada com um esquema de criptografia personalizado projetado para minimizar a sobrecarga de tamanho e garantir a segurança adequada.
- O esquema de criptografia usa um algoritmo HMAC com chave para gerar um preenchimento secreto com base no
initialization_vector
, que é exclusivo do evento de impressão.
Pseudocódigo de criptografia
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
Esquema de descriptografia
Seu código de descriptografia precisa 1) descriptografar o campo encrypted_advertising_id
usando a chave de criptografia e, opcionalmente, 2) verificar os bits de integridade com a
chave de integridade. As chaves serão fornecidas a você durante a configuração da conta. Não há
restrições em como você estrutura sua implementação.
- Gere seu pad:
hmac(encryption_key, initialization_vector)
- XOR: use esse resultado e
<xor>
com o texto criptografado para reverter a criptografia. - Verificar: a assinatura de integridade transmite 4 bytes de
HMAC(integrity_key, advertising_id || initialization_vector)
.
Pseudocódigo de descriptografia
(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)
Biblioteca Java
Em vez de implementar os algoritmos de criptografia para codificar e decodificar o ID de publicidade, use o DoubleClickCrypto.java. Para mais informações, consulte Criptografia.