विज्ञापन आईडी ID को डिक्रिप्ट करें

Authorized Buyers, अब मोबाइल ऐप्लिकेशन इन्वेंट्री बोली अनुरोधों में Android विज्ञापन आईडी पास करने की सुविधा देता है.

विज्ञापन आईडी के बारे में जानकारी

Google Play services के वर्शन v4.0 की मदद से, Android ने विज्ञापन के लिए ऐसा नया आइडेंटिफ़ायर लॉन्च किया है जिसे उपयोगकर्ता रीसेट कर सकता है. इस आइडेंटिफ़ायर को विज्ञापन आईडी कहा जाता है.

विज्ञापन देने वाले, रीमार्केटिंग कैंपेन चलाने और "कन्वर्ज़न" (खरीदारी या डाउनलोड करना) रिकॉर्ड करने के लिए, विज्ञापन आईडी का इस्तेमाल कर सकते हैं. विज्ञापन आईडी की दो मुख्य सुविधाएं होती हैं:

  • उपयोगकर्ता किसी भी समय विज्ञापन आईडी को रीसेट कर सकते हैं.
  • उपयोगकर्ता किसी भी समय सीधे Google Settings ऐप्लिकेशन से, दिलचस्पी के हिसाब से विज्ञापन दिखाने की सुविधा से ऑप्ट आउट कर सकते हैं. यह सेटिंग, विज्ञापन आईडी का इस्तेमाल करने वाली सभी विज्ञापन कंपनियों पर लागू होती है.

तकनीकी परिभाषा

रीयल-टाइम बिडिंग प्रोटोकॉल में, विज्ञापन आईडी को BidRequest.Mobile.encrypted_advertising_id से पास किया जाता है:

optional bytes encrypted_advertising_id = 20;

फ़ील्ड 36 बाइट का है और इसमें तीन सेक्शन हैं:

  • initialization_vector: 16 बाइट.
  • ciphertext: 16 बाइट, विज्ञापन आईडी का एन्क्रिप्ट (सुरक्षित) किया गया 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 बाइट - इनमें से पहले चार बाइट के तौर पर जनरेट की गईं: 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, data को एन्क्रिप्ट करने के लिए key का इस्तेमाल कर रहा है.
a || b स्ट्रिंग a को स्ट्रिंग b के साथ जोड़ा गया.

एन्क्रिप्शन स्कीम

विज्ञापन आईडी को एन्क्रिप्ट (सुरक्षित) करने की स्कीम, उसी स्कीम पर आधारित होती है जिसका इस्तेमाल कीमत की पुष्टि करने के लिए किया जाता है.

  1. विज्ञापन आईडी, बाइट ऐरे में स्टोर किया जाता है. इसे कस्टम एन्क्रिप्शन स्कीम का इस्तेमाल करके एन्क्रिप्ट किया जाता है. इसे डेटा की सुरक्षा को ध्यान में रखते हुए, साइज़ के ऊपरी हिस्से को कम करने के लिए डिज़ाइन किया गया है.
  2. एन्क्रिप्शन स्कीम, initialization_vector के आधार पर एक सीक्रेट पैड जनरेट करने के लिए, की वाले एचएमएसी एल्गोरिदम का इस्तेमाल करती है. यह इंप्रेशन इवेंट के लिए खास होता है.

एन्क्रिप्ट (सुरक्षित) करने का pseudocode

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 का इस्तेमाल करें. ज़्यादा जानकारी के लिए, क्रिप्टोग्राफ़ी देखें.