פענוח מזהה הפרסום

ב-Authorized Buyers יש עכשיו תמיכה בהעברת מזהה הפרסום של Android בבקשות להצעות מחיר של מלאי שטחי פרסום באפליקציות לנייד.

מידע על מזהה הפרסום

בגרסה 4.0 של Google Play Services, הושק ב-Android מזהה פרסום חדש, שניתן לעדכון על ידי המשתמש, שנקרא מזהה הפרסום.

מפרסמים יכולים להשתמש במזהה הפרסום כדי להפעיל קמפיינים של רימרקטינג ולתעד "המרות" (רכישה או הורדה). מזהה הפרסום כולל שתי תכונות עיקריות:

  • המשתמשים יכולים לאפס את מזהה הפרסום בכל שלב.
  • המשתמשים יכולים לבטל את הסכמתם למודעות המבוססות על תחומי עניין בכל שלב, ישירות מאפליקציית הגדרות Google. הגדרה זו חלה על כל חברות הפרסום שמשתמשות במזהה הפרסום.

הגדרה טכנית

מזהה הפרסום מועבר דרך BidRequest.Mobile.encrypted_advertising_id בתהליך הבידינג בזמן אמת:

optional bytes encrypted_advertising_id = 20;

השדה מורכב מ-36 בייטים ומכיל 3 קטעים:

{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. יוצרים את ה-pad: 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. למידע נוסף קראו את המאמר קריפטוגרפיה.