Decripta l'ID pubblicità

Authorized Buyers ora supporta il trasferimento dell'ID pubblicità di Android nelle richieste di offerta per l'inventario per applicazioni mobile.

Informazioni sull'ID pubblicità

Con Google Play Services 4.0, Android ha lanciato un nuovo identificatore per la pubblicità reimpostabile dall'utente, chiamato ID pubblicità.

L'ID pubblicità può essere utilizzato dagli inserzionisti per pubblicare campagne di remarketing e registrare "conversioni" (acquisto o download). L'ID pubblicità ha due funzionalità principali:

  • Gli utenti possono reimpostare l'ID pubblicità in qualsiasi momento.
  • Gli utenti possono disattivare gli annunci basati sugli interessi in qualsiasi momento, direttamente dall'app Impostazioni Google. Questa impostazione viene applicata a tutte le aziende pubblicitarie che utilizzano l'ID pubblicità.

Definizione tecnica

L'ID pubblicità viene trasmesso tramite BidRequest.Mobile.encrypted_advertising_id nel protocollo di offerta in tempo reale:

optional bytes encrypted_advertising_id = 20;

Il campo è di 36 byte e contiene 3 sezioni:

  • initialization_vector: 16 byte.
  • ciphertext: 16 byte, l'UUID a 16 byte criptato dell'ID pubblicità.
  • integrity_signature: 4 byte.
{initialization_vector (16 bytes)}{ciphertext (16 bytes)}{integrity_signature (4 bytes)}

Definizioni

Variabile Dettagli
initialization_vector 16 byte, univoci per l'impressione.
ciphertext 16 byte - generati come: <advertising_id <xor> hmac(encryption_key, initialization_vector)>
integrity_signature 4 byte generati come primi 4 byte di hmac(integrity_key, advertising_id || initialization_vector)
encryption_key 32 byte, forniti al momento della creazione dell'account.
integrity_key 32 byte, forniti al momento della creazione dell'account.
advertising_id 16 byte: l'ID pubblicità originale non criptato, che è un UUID
final_message 36 byte: l'array di byte inviati tramite il campo encrypted_advertising_id.
Operatori Dettagli
hmac(key, data) HMAC SHA-1, utilizzando key per criptare data.
a || b stringa a concatenata con la stringa b.

Schema di crittografia

Lo schema di crittografia per l'ID pubblicità si basa sullo stesso schema utilizzato per decriptare le conferme di prezzo.

  1. L'ID pubblicità è archiviato in un array di byte, criptato tramite uno schema di crittografia personalizzato progettato per ridurre al minimo l'overhead delle dimensioni garantendo al contempo una sicurezza adeguata.
  2. Lo schema di crittografia utilizza un algoritmo HMAC con chiave per generare un secret pad basato sul initialization_vector, che è univoco per l'evento di impressione.

Pseudocodice di crittografia

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

Schema di decrittografia

Il codice di decriptazione dovrebbe 1) decriptare il campo encrypted_advertising_id utilizzando la chiave di crittografia e, facoltativamente, 2) verificare i bit di integrità con la chiave di integrità. Le chiavi ti verranno fornite durante la creazione dell'account. Non sono previste limitazioni alla struttura dell'implementazione.

  1. Genera il pad: hmac(encryption_key, initialization_vector)
  2. XOR: prendi questo risultato e <xor> con il testo crittografato per invertire la crittografia.
  3. Verifica: la firma di integrità passa 4 byte di HMAC(integrity_key, advertising_id || initialization_vector)

Pseudocodice di decrittografia

(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)

libreria Java

Anziché implementare gli algoritmi di crittografia per codificare e decodificare l'ID pubblicità, puoi utilizzare DoubleClickCrypto.java. Per ulteriori informazioni, consulta la pagina relativa alla crittografia.