In Authorized Buyers wird jetzt die Übergabe der Android-Werbe-ID in Gebotsanfragen für Inventar in mobilen Apps unterstützt.
Werbe-ID
Mit Version 4.0 der Google Play-Dienste wurde eine neue, vom Nutzer zurücksetzbare Werbe-ID eingeführt: die Werbe-ID.
Die Werbe-ID kann von Werbetreibenden für Remarketing-Kampagnen und zur Erfassung von "Conversions" (Kauf oder Download) verwendet werden. Die Werbe-ID hat zwei Hauptfunktionen:
- Nutzer können die Werbe-ID jederzeit zurücksetzen.
- Nutzer können interessenbezogene Werbung jederzeit direkt in der App „Google Einstellungen“ deaktivieren. Diese Einstellung gilt für alle Anzeigenunternehmen, die die Werbe-ID verwenden.
Technische Definition
Die Werbe-ID wird über BidRequest.Mobile.encrypted_advertising_id
im Protokoll für Echtzeitgebote übergeben:
optional bytes encrypted_advertising_id = 20;
Das Feld ist 36 Byte groß und enthält drei Abschnitte:
initialization_vector
: 16 Byte.ciphertext
: 16 Byte, die verschlüsselte 16-Byte-UUID der Werbe-ID.integrity_signature
: 4 Byte.
{initialization_vector (16 bytes)}{ciphertext (16 bytes)}{integrity_signature (4 bytes)}
Definitionen
Variable | Details |
---|---|
initialization_vector |
16 Byte: für die Impression eindeutig. |
ciphertext |
16 Byte – generiert als: <advertising_id <xor> hmac(encryption_key, initialization_vector)> |
integrity_signature |
4 Byte – generiert mit den ersten 4 Byte von: hmac(integrity_key, advertising_id || initialization_vector) |
encryption_key |
32 Byte werden bei der Kontoeinrichtung angegeben. |
integrity_key |
32 Byte werden bei der Kontoeinrichtung angegeben. |
advertising_id |
16 Byte: die ursprüngliche, unverschlüsselte Werbe-ID, bei der es sich um eine UUID handelt |
final_message |
36 Byte: das Byte-Array, das über das Feld encrypted_advertising_id gesendet wurde. |
Operatoren | Details |
---|---|
hmac(key, data) |
SHA-1-HMAC, mit key zum Verschlüsseln von data |
a || b |
Der String a ist mit dem String b verkettet. |
Verschlüsselungsschema
Das Verschlüsselungsschema für die Werbe-ID basiert auf demselben Schema, das auch für die Entschlüsselung von Preisbestätigungen verwendet wird.
- Die Werbe-ID wird in einem Byte-Array gespeichert, das mithilfe eines benutzerdefinierten Verschlüsselungsschemas verschlüsselt wird. So wird der Größen-Overhead minimiert und gleichzeitig eine angemessene Sicherheit gewährleistet.
- Beim Verschlüsselungsschema wird ein verschlüsselter HMAC-Algorithmus verwendet, um ein geheimes Pad basierend auf der
initialization_vector
zu generieren, die für das Impressionsereignis eindeutig ist.
Pseudocode für Verschlüsselung
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
Entschlüsselungsmethode
Der Entschlüsselungscode sollte 1) das Feld encrypted_advertising_id
mit dem Verschlüsselungsschlüssel entschlüsseln und optional 2) die Integritätsbits mit dem Integritätsschlüssel verifizieren. Die Schlüssel erhalten Sie bei der Kontoeinrichtung. Für die Strukturierung Ihrer Implementierung gibt es keine Einschränkungen.
- Eingabefeld generieren:
hmac(encryption_key, initialization_vector)
- XOR Verwenden Sie dieses Ergebnis und
<xor>
mit dem Geheimtext, um die Verschlüsselung umzukehren. - Überprüfen: Die Integritätssignatur übergibt 4 Byte von
HMAC(integrity_key, advertising_id || initialization_vector)
Entschlüsselungs-Pseudocode
(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-Bibliothek
Anstatt die Kryptoalgorithmen zum Codieren und Decodieren der Werbe-ID zu implementieren, können Sie DoubleClickCrypto.java verwenden. Weitere Informationen finden Sie unter Kryptografie.