Odszyfruj identyfikator wyświetlania reklam

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.

  1. 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.
  2. 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.

  1. Wygeneruj pad: hmac(encryption_key, initialization_vector)
  2. XOR: użyj tego wyniku i <xor> razem z tekstem szyfrowanym, aby odwrócić szyfrowanie.
  3. 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.