فك تشفير المعرّف الإعلاني

يتيح "الشراة المعتمَدون" الآن تمرير المعرِّف الإعلاني لنظام التشغيل Android في طلبات عروض أسعار مستودع التطبيقات المتوافقة مع الأجهزة الجوّالة.

لمحة عن المعرِّف الإعلاني

باستخدام الإصدار 4.0 من "خدمات Google Play"، أطلق نظام Android معرّفًا جديدًا يمكن للمستخدم إعادة ضبطه يُستخدم في الإعلانات يُسمّى المعرّف الإعلاني.

يمكن للمعلنين استخدام المعرّف الإعلاني لعرض حملات تجديد النشاط التسويقي وتسجيل "الإحالات الناجحة" (الشراء أو التنزيل). يتضمّن المعرِّف الإعلاني ميزتَين رئيسيتَين:

  • يمكن للمستخدمين إعادة ضبط المعرِّف الإعلاني في أي وقت.
  • يمكن للمستخدمين إيقاف الإعلانات التي تستهدف الاهتمامات في أي وقت من تطبيق "إعدادات 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. التحقّق: يمرّر توقيع السلامة 4 بايت من HMAC(integrity_key, advertising_id || initialization_vector).

الرمز الزائف لفك التشفير

(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. لمزيد من المعلومات، راجع التشفير.