Google के ऐप्लिकेशन और प्रॉडक्ट पर लोगों का भरोसा बढ़ाने के लिए, हम Google के हर प्रॉडक्ट पैकेज को अपने पारदर्शिता लॉग में शामिल करने के लिए प्रतिबद्ध हैं. हमने सार्वजनिक तौर पर पारदर्शिता लॉग पब्लिश किया है, ताकि इन पैकेज (एपीके और एपीईएक्स) के बारे में हमारे दावों की पुष्टि की जा सके.
खतरे का मॉडल
सप्लाई चेन पर होने वाले हमलों का पता लगाने और उन्हें रोकने के लिए, पारदर्शिता सिस्टम का इस्तेमाल किया जा सकता है. हम कुछ उदाहरणों की मदद से इसे समझाते हैं.
मान लें कि कोई हमलावर, Google के किसी ऐप्लिकेशन या प्रॉडक्ट में गलत तरीके से बदलाव करता है. साथ ही, वह Google Play के ज़रिए डिस्ट्रिब्यूट करने के लिए इस्तेमाल की जाने वाली साइनिंग कुंजी से उस ऐप्लिकेशन या प्रॉडक्ट पर हस्ताक्षर भी कर लेता है. बाइनरी पारदर्शिता लॉग की मदद से, किसी भी व्यक्ति को अगर कोई ऐसा पैकेज (एपीके या एपीईएक्स) मिलता है जिस पर उसे शक है, तो वह उस पैकेज की असलियत की पुष्टि करने के लिए, इस लॉग को पुष्टि किए जा सकने वाले एक अतिरिक्त सोर्स के तौर पर इस्तेमाल कर सकता है. उन्हें पता चलेगा कि Google ने लॉग में, पैकेज का मेटाडेटा शामिल नहीं किया है. साथ ही, उन्हें यह भी पता चलेगा कि उन्हें उस पैकेज पर भरोसा नहीं करना चाहिए.
लॉग में पब्लिश करना, साइनिंग के साथ रिलीज़ करने की प्रोसेस से अलग है. जैसा कि ईकोसिस्टम के डायग्राम में दिखाया गया है. इसलिए, हमलावर के लिए सिर्फ़ कुंजी से समझौता करने के अलावा, और भी चुनौतियां बढ़ जाती हैं.
हमारी योजना है कि इस लॉग को, गवाहों के सार्वजनिक नेटवर्क में भी इंटिग्रेट किया जाए. इसके लिए, गवाहों के स्टैंडर्ड प्रोटोकॉल का इस्तेमाल किया जाएगा. हालांकि, हम बाहरी और स्वतंत्र पक्षों को इस सार्वजनिक तौर पर उपलब्ध लॉग की इंटिग्रिटी की निगरानी करने के लिए बढ़ावा देते हैं. ये पक्ष, लॉग की सिर्फ़ जोड़ने की प्रॉपर्टी की पुष्टि कर सकते हैं. साथ ही, इसमें किसी भी तरह की छेड़छाड़ की रिपोर्ट कर सकते हैं.
इस तरह के पारदर्शिता सिस्टम के होने और हमलों के बारे में ज़्यादा जानकारी मिलने से, गलत इरादे से की जाने वाली गतिविधियों को बढ़ावा नहीं मिलता. अगर किसी पैकेज से समझौता किया जाता है, लेकिन उपयोगकर्ता सिर्फ़ उन पैकेज पर भरोसा करते हैं जो लॉग में शामिल हैं, तो समझौते किए गए पैकेज को सार्वजनिक तौर पर दिखाया जाना चाहिए. इससे, समझौते किए गए पैकेज के बारे में पता चलने की संभावना बढ़ जाती है. साथ ही, इसके डिस्ट्रिब्यूशन को रोकने के लिए कार्रवाई की जा सकती है.
दावेदार मॉडल
दावेदार मॉडल, पुष्टि किए जा सकने वाले सिस्टम में भूमिकाओं और आर्टफ़ैक्ट को तय करने के लिए इस्तेमाल किया जाने वाला फ़्रेमवर्क है. Google के प्रॉडक्ट ऐप्लिकेशन की पारदर्शिता के मामले में, हमारा दावा है कि इस लॉग में रिकॉर्ड की गई किसी पैकेज फ़ाइल का हैश, Google के आधिकारिक प्रॉडक्ट के किसी खास वर्शन को दिखाता है. यह वर्शन, सार्वजनिक तौर पर इस्तेमाल के लिए होता है.
- ClaimGoogleApp: (मैं, Google, दावा करता हूं कि
$hashApp$googleAppके लिए है). इसमें:$hashApp$googleAppके किसी खास वर्शन की पैकेज फ़ाइल (जिसमें स्प्लिट एपीके और एपीईएक्स पैकेज शामिल हैं) का क्रिप्टोग्राफ़िक हैश (जैसे, SHA256) है.$googleAppएक Android पैकेज (एपीके या APEX) है, जो Google के बनाए और डिस्ट्रिब्यूट किए जाने वाले किसी ऐप्लिकेशन या प्रॉडक्ट का हिस्सा है.
$googleApp की कॉपी रखने वाला कोई भी व्यक्ति, इस दावे की पुष्टि कर सकता है.
हम पुष्टि करने वाले पेज पर, इस प्रोसेस के बारे में पूरी जानकारी देते हैं.
लॉग का कॉन्टेंट
जब Google, एपीके या एपीईएक्स पैकेज का नया वर्शन रिलीज़ करता है, तो वह Google के प्रॉडक्ट ऐप्लिकेशन की पारदर्शिता वाले लॉग में उससे जुड़ी एंट्री जोड़ता है.
इस लॉग की हर एंट्री में, मेटाडेटा के चार हिस्से होते हैं:
- Google के साइन किए गए पैकेज की एपीके या APEX फ़ाइल का हैश. यह पूरी फ़ाइल के SHA256 डाइजेस्ट की हेक्स स्ट्रिंग है.
- पहले वाले हैश के टाइप की जानकारी. यह एक स्ट्रिंग है.
- पैकेज का पैकेज नेम. यह एक स्ट्रिंग है.
- पैकेज का वर्शन नंबर (versionCode). यह शून्य से बड़ा कोई पूर्णांक है.
लॉग एंट्री का फ़ॉर्मैट, जानकारी के इन चार हिस्सों को नई लाइन (\n) वाले वर्ण के साथ जोड़कर बनाया जाता है. इसे यहां दिखाया गया है:
hash\nhash_description\npackage_name\npackage_version\n
Google के किसी प्रॉडक्ट को एपीके या एपीईएक्स फ़ाइल के तौर पर डिस्ट्रिब्यूट किया जा सकता है. इसलिए, हैश की जानकारी को SHA256(APK) या SHA256(APEX) पर सेट किया जाता है. इससे, हर फ़ाइल के कॉन्टेंट की पूरी जानकारी मिलती है. साथ ही, उपयोगकर्ताओं के लिए इस मेज़रमेंट को पाना आसान हो जाता है.
ईकोसिस्टम का डायग्राम
