ถอดรหัสรหัสโฆษณา

ตอนนี้ Authorized Buyers รองรับการส่งรหัสโฆษณา Android ในคำขอราคาเสนอพื้นที่โฆษณาในแอปพลิเคชันบนอุปกรณ์เคลื่อนที่แล้ว

เกี่ยวกับรหัสโฆษณา

ด้วยบริการ Google Play เวอร์ชัน 4.0 Android ได้เปิดตัวตัวระบุใหม่ที่ผู้ใช้รีเซ็ตได้สำหรับโฆษณาที่เรียกว่ารหัสโฆษณา

ผู้ลงโฆษณาอาจใช้รหัสโฆษณาเพื่อใช้งานแคมเปญรีมาร์เก็ตติ้งและบันทึก "Conversion" (การซื้อหรือดาวน์โหลด) รหัสโฆษณามีฟีเจอร์หลัก 2 อย่าง ได้แก่

  • ผู้ใช้สามารถรีเซ็ตรหัสโฆษณาได้ทุกเมื่อ
  • ผู้ใช้สามารถเลือกไม่รับโฆษณาตามความสนใจได้ทุกเมื่อจากแอปการตั้งค่าของ Google การตั้งค่านี้มีผลกับบริษัทโฆษณาทั้งหมดที่ใช้รหัสโฆษณาดังกล่าว

คำจำกัดความทางเทคนิค

ระบบจะส่งรหัสโฆษณาผ่าน BidRequest.Mobile.encrypted_advertising_id ในโปรโตคอลการเสนอราคาแบบเรียลไทม์:

optional bytes encrypted_advertising_id = 20;

ช่องนี้มีขนาด 36 ไบต์และมี 3 ส่วน ได้แก่

  • initialization_vector: 16 ไบต์
  • ciphertext: 16 ไบต์, UUID 16 ไบต์ของรหัสโฆษณาที่เข้ารหัส
  • integrity_signature: 4 ไบต์
{initialization_vector (16 bytes)}{ciphertext (16 bytes)}{integrity_signature (4 bytes)}

คำจำกัดความ

ตัวแปร รายละเอียด
initialization_vector 16 ไบต์ - ไม่ซ้ำกันในการแสดงผล
ciphertext 16 ไบต์ - สร้างเมื่อ: <advertising_id <xor> hmac(encryption_key, initialization_vector)>
integrity_signature 4 ไบต์ - สร้างขึ้นเป็น 4 ไบต์แรกของ: hmac(integrity_key, advertising_id || initialization_vector)
encryption_key 32 ไบต์ - มีให้ในการตั้งค่าบัญชี
integrity_key 32 ไบต์ - มีให้ในการตั้งค่าบัญชี
advertising_id 16 ไบต์ - รหัสโฆษณาต้นฉบับที่ไม่ได้เข้ารหัส ซึ่งก็คือ UUID
final_message 36 ไบต์ - อาร์เรย์ไบต์ที่ส่งผ่านช่อง encrypted_advertising_id
โอเปอเรเตอร์ รายละเอียด
hmac(key, data) SHA-1 HMAC โดยใช้ key เพื่อเข้ารหัส data
a || b สตริง a เชื่อมต่อกับสตริง b

รูปแบบการเข้ารหัส

รูปแบบการเข้ารหัสสำหรับรหัสโฆษณาจะอิงตามรูปแบบเดียวกับที่ใช้สำหรับการถอดรหัสการยืนยันราคา

  1. รหัสโฆษณาจะเก็บอยู่ในไบต์อาร์เรย์ ซึ่งเข้ารหัสโดยใช้รูปแบบการเข้ารหัสที่กำหนดเองซึ่งออกแบบมาเพื่อลดปริมาณโอเวอร์เฮดให้เหลือน้อยที่สุดในขณะที่มั่นใจได้ว่าจะได้รับการรักษาความปลอดภัยอย่างเพียงพอ
  2. รูปแบบการเข้ารหัสใช้อัลกอริทึม HMAC ที่มีคีย์เพื่อสร้างคีย์ลับตาม initialization_vector ซึ่งไม่ซ้ำกันในเหตุการณ์การแสดงผล

การเข้ารหัสเทียม

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

รูปแบบการถอดรหัส

โค้ดถอดรหัสควร 1) ถอดรหัสช่อง encrypted_advertising_id โดยใช้คีย์การเข้ารหัส และอาจ 2) ยืนยันบิตความสมบูรณ์ด้วยคีย์ความสมบูรณ์ คุณจะได้รับกุญแจระหว่างการสร้างบัญชี วิธีจัดโครงสร้างการใช้งานโดยไม่มีข้อจำกัดใดๆ

  1. สร้างแพดเดิลของคุณ: hmac(encryption_key, initialization_vector)
  2. XOR: แสดงผลลัพธ์นี้และ <xor> พร้อมข้อความเข้ารหัสเพื่อย้อนกลับการเข้ารหัส
  3. ยืนยัน: ลายเซ็นความสมบูรณ์ผ่าน HMAC(integrity_key, advertising_id || initialization_vector) ขนาด 4 ไบต์

การถอดรหัส 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

คุณใช้ DoubleClickCrypto.java แทนการใช้อัลกอริทึมคริปโตเพื่อเข้ารหัสและถอดรหัสรหัสโฆษณาได้ ดูข้อมูลเพิ่มเติมได้ที่วิทยาการเข้ารหัสลับ