Reklam Kimliğinin Şifresini Çöz

Authorized Buyers artık mobil uygulama envanteri teklif isteklerinde Android reklam kimliğinin iletilmesini destekliyor.

Reklam kimliği hakkında

Android, Google Play Hizmetleri 4.0 sürümüyle birlikte reklam için reklam kimliği adı verilen, kullanıcı tarafından sıfırlanabilen yeni bir tanımlayıcıyı kullanıma sundu.

Reklam kimliği, reklamverenler tarafından yeniden pazarlama kampanyaları yayınlamak ve "dönüşümleri" (satın alma veya indirme) kaydetmek için kullanılabilir. Reklam kimliğinin iki temel özelliği vardır:

  • Kullanıcılar reklam kimliğini istedikleri zaman sıfırlayabilir.
  • Kullanıcılar istedikleri zaman doğrudan Google Ayarları uygulamasından ilgi alanına dayalı reklamları devre dışı bırakabilir. Bu ayar, reklam kimliğini kullanan tüm reklam şirketleri için geçerlidir.

Teknik tanım

Reklam kimliği, gerçek zamanlı teklif verme protokolünde BidRequest.Mobile.encrypted_advertising_id üzerinden geçirilir:

optional bytes encrypted_advertising_id = 20;

Alan 36 bayttır ve 3 bölüm içerir:

  • initialization_vector: 16 bayt.
  • ciphertext: 16 bayt (reklam kimliğinin şifrelenmiş 16 bayt UUID'si).
  • integrity_signature: 4 bayt.
{initialization_vector (16 bytes)}{ciphertext (16 bytes)}{integrity_signature (4 bytes)}

Tanımlar

Değişken Ayrıntılar
initialization_vector 16 bayt - gösterime özgüdür.
ciphertext 16 bayt. Oluşturulma biçimi: <advertising_id <xor> hmac(encryption_key, initialization_vector)>
integrity_signature 4 bayt - Şunun ilk 4 baytı olarak oluşturulur: hmac(integrity_key, advertising_id || initialization_vector)
encryption_key 32 bayt (hesap kurulumunda sağlanır).
integrity_key 32 bayt (hesap kurulumunda sağlanır).
advertising_id 16 bayt: Orijinal, şifrelenmemiş reklam kimliği (UUID)
final_message 36 bayt - encrypted_advertising_id alanı üzerinden gönderilen bayt dizisi.
Operatörler Ayrıntılar
hmac(key, data) SHA-1 HMAC, data şifrelemesi için key kullanılıyor.
a || b a dizesi b dizesiyle birleştirildi.

Şifreleme şeması

Reklam kimliği için şifreleme şeması, fiyat onaylarının şifresini çözmek için kullanılan şemaya dayanır.

  1. Reklam kimliği, bir bayt dizisinde depolanır. Bu dizi, boyut ek yükünü en aza indirirken yeterli güvenlik sağlamak üzere tasarlanmış özel bir şifreleme şeması kullanılarak şifrelenir.
  2. Şifreleme şeması, gösterim etkinliğine özel olan initialization_vector öğesine dayalı bir gizli tuş takımı oluşturmak üzere anahtarlı bir HMAC algoritması kullanır.

Şifreleme sözde kodu

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

Şifre çözme şeması

Şifre çözme kodunuz 1) şifreleme anahtarını kullanarak encrypted_advertising_id alanının şifresini çözmeli ve isteğe bağlı olarak 2) bütünlük anahtarıyla bütünlük bitlerini doğrulamalıdır. Anahtarlar hesap kurulumu sırasında verilecektir. Uygulamanızı nasıl yapılandıracağınızla ilgili herhangi bir kısıtlama yoktur.

  1. Panonuzu oluşturun: hmac(encryption_key, initialization_vector)
  2. XOR: Şifrelemeyi geri almak için bu sonucu ve şifrelenmiş metinle birlikte <xor> alın.
  3. Doğrula: Bütünlük imzası HMAC(integrity_key, advertising_id || initialization_vector) depolama alanının 4 baytını aktarır

Şifre çözme sözde kodu

(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 kitaplığı

Reklam kimliğini kodlamak ve kodunu çözmek için şifreleme algoritmalarını uygulamak yerine DoubleClickCrypto.java'yı kullanabilirsiniz. Daha fazla bilgi için Kriptografi konusuna bakın.