Authorized Buyers obsługuje teraz przekazywanie identyfikatora wyświetlania reklam na urządzeniach z Androidem w pytaniach o stawkę zasobów reklamowych w aplikacjach mobilnych.
Identyfikator wyświetlania reklam
W ramach Usług Google Play w wersji 4.0 na urządzeniach z Androidem wprowadzono nowy, możliwy do zresetowania przez użytkownika identyfikator reklamowy – identyfikator wyświetlania reklam.
Reklamodawcy mogą używać identyfikatora wyświetlania reklam do prowadzenia kampanii remarketingowych i rejestrowania „konwersji” (dotyczących zakupów lub pobierania). Identyfikator wyświetlania reklam ma 2 główne cechy:
- Użytkownicy mogą w każdej chwili zresetować identyfikator wyświetlania reklam.
- Użytkownicy mogą w każdej chwili zrezygnować z reklam opartych na zainteresowaniach, korzystając z aplikacji Ustawienia Google. To ustawienie obowiązuje we wszystkich firmach reklamowych, które używają identyfikatora wyświetlania reklam.
Definicja techniczna
Identyfikator wyświetlania reklam jest przekazywany przez BidRequest.Mobile.encrypted_advertising_id
w protokole określania stawek w czasie rzeczywistym:
optional bytes encrypted_advertising_id = 20;
Pole ma 36 bajtów i zawiera 3 sekcje:
initialization_vector
: 16 bajtów.ciphertext
: 16 bajtów, zaszyfrowany 16-bajtowy identyfikator UUID identyfikatora wyświetlania reklam.integrity_signature
: 4 bajty.
{initialization_vector (16 bytes)}{ciphertext (16 bytes)}{integrity_signature (4 bytes)}
Definicje
Zmienna | Szczegóły |
---|---|
initialization_vector |
16 bajtów – unikalny dla wyświetlenia. |
ciphertext |
16 bajtów – wygenerowany jako: <advertising_id <xor> hmac(encryption_key, initialization_vector)> |
integrity_signature |
4 bajty – wygenerowane jako pierwsze 4 bajty: hmac(integrity_key, advertising_id || initialization_vector) |
encryption_key |
32 bajty – podawane podczas zakładania konta. |
integrity_key |
32 bajty – podawane podczas zakładania konta. |
advertising_id |
16 bajtów – oryginalny, niezaszyfrowany identyfikator wyświetlania reklam, który jest identyfikatorem UUID. |
final_message |
36 bajtów – tablica bajtowa wysłana przez pole encrypted_advertising_id . |
Operatory | Szczegóły |
---|---|
hmac(key, data) |
SHA-1 HMAC, używany do szyfrowania data , przy użyciu key . |
a || b |
ciąg znaków a połączony z ciągiem tekstowym b . |
Schemat szyfrowania
Schemat szyfrowania identyfikatora wyświetlania reklam jest oparty na tym samym schemacie co do odszyfrowywania potwierdzeń cen.
- Identyfikator wyświetlania reklam jest przechowywany w tablicy bajtów, która jest szyfrowana przy użyciu niestandardowego schematu szyfrowania, który umożliwia ograniczenie obciążenia sieci przy jednoczesnym zapewnieniu odpowiedniego bezpieczeństwa.
- Schemat szyfrowania wykorzystuje algorytm HMAC z kluczem do wygenerowania tajnego bloku na podstawie
initialization_vector
, który jest unikalny dla zdarzenia wyświetlenia.
Pseudokod szyfrowania
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
Schemat odszyfrowywania
Kod odszyfrowywania powinien 1) odszyfrować pole encrypted_advertising_id
za pomocą klucza szyfrowania i opcjonalnie 2) zweryfikować bity integralności za pomocą klucza integralności. Klucze zostaną Ci przekazane podczas zakładania konta. Nie ma żadnych ograniczeń dotyczących struktury implementacji.
- Wygeneruj pad:
hmac(encryption_key, initialization_vector)
- XOR: użyj tego wyniku i
<xor>
razem z tekstem szyfrowanym, aby odwrócić szyfrowanie. - Weryfikacja: podpis integralności przekazuje 4 bajty z
HMAC(integrity_key, advertising_id || initialization_vector)
Pseudokod odszyfrowywania
(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)
Biblioteka Java
Zamiast implementować algorytmy kryptograficzne do kodowania i dekodowania identyfikatora wyświetlania reklam, możesz użyć DoubleClickCrypto.java. Więcej informacji znajdziesz w artykule na temat kryptografii.