Authorized Buyers ahora admite pasar el ID de publicidad de Android en las solicitudes de oferta de inventario de aplicaciones para dispositivos móviles.
Acerca del ID de publicidad
Con la versión 4.0 de los Servicios de Google Play, Android lanzó un nuevo identificador para publicidad que el usuario puede restablecer, denominado ID de publicidad.
Los anunciantes pueden usar el ID de publicidad para publicar campañas de remarketing y registrar "conversiones" (de compra o descarga). El ID de publicidad tiene dos características clave:
- Los usuarios pueden restablecer el ID de publicidad en cualquier momento.
- Los usuarios pueden inhabilitar los anuncios basados en intereses en cualquier momento directamente desde la aplicación Configuración de Google. Esta configuración se aplica a todas las empresas publicitarias que utilizan el ID de publicidad.
Definición técnica
El ID de publicidad se pasa a través de BidRequest.Mobile.encrypted_advertising_id
en el protocolo de ofertas en tiempo real:
optional bytes encrypted_advertising_id = 20;
El campo tiene 36 bytes y contiene 3 secciones:
initialization_vector
: 16 bytes.ciphertext
: Es el UUID de 16 bytes encriptado del ID de publicidad de 16 bytes.integrity_signature
: 4 bytes.
{initialization_vector (16 bytes)}{ciphertext (16 bytes)}{integrity_signature (4 bytes)}
Definiciones
Variable | Detalles |
---|---|
initialization_vector |
16 bytes: único para la impresión. |
ciphertext |
16 bytes, generado como: <advertising_id <xor> hmac(encryption_key, initialization_vector)> |
integrity_signature |
4 bytes, generado como los primeros 4 bytes de: hmac(integrity_key, advertising_id || initialization_vector) |
encryption_key |
32 bytes, que se proporcionan durante la configuración de la cuenta. |
integrity_key |
32 bytes, que se proporcionan durante la configuración de la cuenta. |
advertising_id |
16 bytes: el ID de publicidad original sin encriptar, que es un UUID |
final_message |
36 bytes: el array de bytes enviado a través del campo encrypted_advertising_id . |
Operadores | Detalles |
---|---|
hmac(key, data) |
SHA-1 HMAC que usa key para encriptar data . |
a || b |
Se concatenó la cadena a con la cadena b . |
Esquema de encriptación
El esquema de encriptación del ID de publicidad se basa en el mismo esquema que se usa para desencriptar las confirmaciones de precios.
- El ID de publicidad se almacena en un array de bytes, que se encripta mediante un esquema de encriptación personalizado diseñado para minimizar la sobrecarga de tamaño y, al mismo tiempo, garantizar una seguridad adecuada.
- El esquema de encriptación usa un algoritmo HMAC con clave para generar un bloque secreto basado en el
initialization_vector
, que es único para el evento de impresión.
Pseudocódigo de encriptación
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 desencriptación
Tu código de desencriptación debe 1) desencriptar el campo encrypted_advertising_id
con la clave de encriptación y, opcionalmente, 2) verificar los bits de integridad con la clave de integridad. Se te proporcionarán las claves durante la configuración de la cuenta. No hay restricciones sobre cómo estructurar tu implementación.
- Genera tu pad:
hmac(encryption_key, initialization_vector)
- XOR: Toma este resultado y
<xor>
con el texto cifrado para revertir la encriptación. - Verificar: La firma de integridad pasa 4 bytes de
HMAC(integrity_key, advertising_id || initialization_vector)
.
Pseudocódigo de desencriptación
(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
En lugar de implementar los algoritmos criptográficos para codificar y decodificar el ID de publicidad, puedes usar DoubleClickCrypto.java. Para obtener más información, consulta Criptografía.