पारदर्शिता का कोड, कोड पर हस्ताक्षर करने और पुष्टि करने का वैकल्पिक तरीका है जो Android ऐप्लिकेशन बंडल के साथ पब्लिश किए गए हैं. यह पारदर्शिता का कोड इस्तेमाल करता है साइनिंग पासकोड, जो सिर्फ़ ऐप्लिकेशन डेवलपर के पास होता है.
पारदर्शिता का कोड, ऐप्लिकेशन बंडल और APK. पारदर्शिता की कोड कुंजी, ऐप्लिकेशन साइनिंग की प्रक्रिया से अलग होती है एक पासकोड है, जो Play ऐप्लिकेशन साइनिंग का इस्तेमाल करते समय, Google के सुरक्षित इन्फ़्रास्ट्रक्चर में सेव होता है.
पारदर्शिता का कोड कैसे काम करता है
प्रक्रिया के बाद बंडल में पारदर्शिता का कोड फ़ाइल शामिल की जाती है बना दिया गया है. हालांकि, इसे डिस्ट्रिब्यूशन के लिए, Play Console पर अपलोड करने से पहले.
पारदर्शिता का कोड एक JSON वेब टोकन (JWT) है, जिसमें DEX की सूची मौजूद है बंडल में शामिल फ़ाइलें, नेटिव लाइब्रेरी, और उनके हैश. ऐसा होने पर को कोड पारदर्शिता कुंजी का इस्तेमाल करके साइन किया जाता है. यह कुंजी सिर्फ़ डेवलपर के पास होती है.
कोड की पारदर्शिता वाली इस फ़ाइल को, ऐप्लिकेशन से बनाए गए बेस APK में लागू किया जाता है बंडल (खास तौर पर बेस मॉड्यूल के मुख्य स्प्लिट के लिए). इसके बाद, यह काम किया जा सकता है पुष्टि की है कि:
- APK में मौजूद सभी DEX और नेटिव कोड फ़ाइलों में मिलते-जुलते हैश मौजूद हैं पारदर्शिता की कोड फ़ाइल का इस्तेमाल करें.
- ऐप्लिकेशन में, कोड की पारदर्शिता की हस्ताक्षर कुंजी का सार्वजनिक मुख्य कॉम्पोनेंट डेवलपर की सार्वजनिक कुंजी से मेल खाता है (जो डेवलपर की ओर से डेवलपर को एक अलग, सुरक्षित चैनल पर पब्लिश करना होगा).
यह जानकारी एक साथ मिलकर, इस बात की पुष्टि करती है कि APK, डेवलपर के मनचाहे मकसद से मेल खाता है और उसमें कोई बदलाव नहीं किया गया है.
पारदर्शिता की कोड फ़ाइल संसाधन, एसेट, और Android की पुष्टि नहीं करती
मेनिफ़ेस्ट या कोई ऐसी अन्य फ़ाइल जो DEX फ़ाइलें या नेटिव लाइब्रेरी नहीं है
lib/
फ़ोल्डर में शामिल है.
पारदर्शिता की पुष्टि का इस्तेमाल, सिर्फ़ कोड की जांच के लिए किया जाता है ऐसे डेवलपर और असली उपयोगकर्ता, जो यह पक्का करना चाहते हैं कि वे जो कोड चला रहे हैं जिसे मूल रूप से ऐप्लिकेशन डेवलपर ने बनाया था और उस पर हस्ताक्षर किया था.
सीमाएं
कुछ मामलों में, पारदर्शिता का कोड इस्तेमाल नहीं किया जा सकता:
sharedUserId
की जानकारी देने वाले ऐप्लिकेशन मेनिफ़ेस्ट में एट्रिब्यूट का इस्तेमाल करें. ऐसे ऐप्लिकेशन, प्रोसेस को इनके साथ शेयर कर सकते हैं: अन्य अनुप्रयोग हैं, जो इस प्रक्रिया के बारे में आश्वासन देना कोड को एक्ज़ीक्यूट किया जा रहा है.- 'छेड़छाड़ से सुरक्षा' सुविधा या ऐसी दूसरी सेवा का इस्तेमाल करने वाले ऐप्लिकेशन जो कोड में बदलाव करती हैं पारदर्शिता की कोड फ़ाइल जनरेट होने के बाद, पुष्टि नहीं करनी है.
- ऐसे ऐप्लिकेशन जो Android 5.0 (Android 5.0) से पहले के वर्शन और एपीआई लेवल पर, लेगसी Multidex का इस्तेमाल करते हैं सुविधा वाले मॉड्यूल. जब ऐप्लिकेशन Android 5.0 या उसके बाद के वर्शन वाले डिवाइसों पर Google Play से इंस्टॉल किया गया हो. पारदर्शिता का कोड पुराने ओएस वर्शन पर बंद किया गया है.
पारदर्शिता का कोड जोड़ने का तरीका
अपने ऐप्लिकेशन में पारदर्शिता का कोड जोड़ने से पहले, पक्का करें कि निजी और सार्वजनिक कुंजी का जोड़ा, जिसका इस्तेमाल आप पारदर्शिता के कोड पर हस्ताक्षर करने के लिए कर सकते हैं. यह के तौर पर यूनीक पासकोड होना चाहिए. यह आपके इस्तेमाल किए जाने वाले ऐप्लिकेशन साइनिंग पासकोड से अलग होना चाहिए शामिल किए गए हैं और इसे सुरक्षित रखा जाना चाहिए और इसे के बाहर कभी शेयर नहीं किया जाना चाहिए आपका संगठन.
अगर आपके पास कोई कुंजी नहीं है, तो अपने ऐप्लिकेशन पर हस्ताक्षर करें सेक्शन में दिए गए निर्देशों का पालन करें गाइड को पढ़ें. पारदर्शिता के कोड का इस्तेमाल करने के लिए, स्टैंडर्ड स्टैंडर्ड का इस्तेमाल किया जाता है कीस्टोर फ़ाइल में ट्रांसफ़र कर दिया जाता है, इसलिए भले ही गाइड ऐप्लिकेशन साइनिंग के लिए है, लेकिन प्रक्रिया एक जैसी है.
'Android Gradle प्लग इन' का इस्तेमाल करना
कोड की पारदर्शिता से जुड़ी सहायता के लिए, Android Gradle प्लग इन का 7.1.0-alpha03 वाला वर्शन होना ज़रूरी है
या उससे नया वर्शन होना चाहिए. पारदर्शिता के कोड पर हस्ताक्षर करने के लिए इस्तेमाल की जाने वाली कुंजी को कॉन्फ़िगर करने के लिए,
bundle
ब्लॉक में फ़ॉलो कर रहे हैं.
ग्रूवी
// In your app module's build.gradle file: android { ... bundle { codeTransparency { signing { keyAlias = "ALIAS" keyPassword = "PASSWORD" storeFile = file("path/to/keystore") storePassword = "PASSWORD" } } ... } }
Kotlin
// In your app module's build.gradle.kts file: android { ... bundle { codeTransparency { signing { keyAlias = "ALIAS" keyPassword = "PASSWORD" storeFile = file("path/to/keystore") storePassword = "PASSWORD" } } ... } }
एक ऐसी कुंजी होनी चाहिए जिसका इस्तेमाल सिर्फ़ कोड की पारदर्शिता बनाए रखने के लिए किया जा सके, न कि उस ऐप्लिकेशन साइनिंग पासकोड का इस्तेमाल करें जिसका इस्तेमाल 'Play ऐप्लिकेशन साइनिंग' के लिए किया जाता है.
कमांड लाइन पर bundletool
का इस्तेमाल किया जा रहा है
पारदर्शिता का कोड इस्तेमाल करने के लिए, bundletool के 1.7.0 या इसके बाद के वर्शन की ज़रूरत होती है. GitHub से डाउनलोड किया जा सकता है.
Android ऐप्लिकेशन बंडल में पारदर्शिता का कोड जोड़ने के लिए, यह निर्देश चलाएं. एक ऐसी कुंजी होनी चाहिए जिसका इस्तेमाल सिर्फ़ कोड की पारदर्शिता बनाए रखने के लिए किया जा सके, न कि उस ऐप्लिकेशन साइनिंग पासकोड का इस्तेमाल करें जिसका इस्तेमाल 'Play ऐप्लिकेशन साइनिंग' के लिए किया जाता है.
bundletool add-transparency \
--bundle=/MyApp/my_app.aab \
--output=/MyApp/my_app_with_transparency.aab \
--ks=/MyApp/keystore.jks \
--ks-pass=file:/MyApp/keystore.pwd \
--ks-key-alias=MyKeyAlias \
--key-pass=file:/MyApp/key.pwd
इसके अलावा, अगर आपको अपने साइनिंग टूल इस्तेमाल करने हैं, तो bundletool का इस्तेमाल किया जा सकता है अगर आपको बिना हस्ताक्षर वाली कोड की पारदर्शिता फ़ाइल जनरेट करनी है, तो इस फ़ाइल पर सेट करें और बंडल में हस्ताक्षर इंजेक्ट करें:
# Generate code transparency file
bundletool add-transparency \
--mode=generate_code_transparency_file \
--bundle=/MyApp/my_app.aab \
--output=/MyApp/code_transparency_file.jwt \
--transparency-key-certificate=/MyApp/transparency.cert
# Add code transparency signature to the bundle
bundletool add-transparency \
--mode=inject_signature \
--bundle=/MyApp/my_app.aab \
--output=/MyApp/my_app_with_transparency.aab \
--transparency-key-certificate=/MyApp/transparency.cert \
--transparency-signature=/MyApp/signature
किसी ऐप्लिकेशन के कोड की पारदर्शिता की पुष्टि करना
पारदर्शिता का कोड और कोड की पुष्टि करने के अलग-अलग तरीके हैं फ़ाइल है, जो इस बात पर निर्भर करता है कि आपके पास Android डिवाइस पर APK इंस्टॉल हैं या नहीं या आपके कंप्यूटर पर स्थानीय रूप से डाउनलोड किया गया हो.
ऐप्लिकेशन बंडल या APK सेट की जांच करने के लिए, Bundletool का इस्तेमाल करना
किसी ऐप्लिकेशन बंडल या APK में, पारदर्शिता के कोड की पुष्टि करने के लिए, bundletool का इस्तेमाल किया जा सकता है
सेट. सार्वजनिक सर्टिफ़िकेट का फ़िंगरप्रिंट प्रिंट करने के लिए, check-transparency
निर्देश का इस्तेमाल करें:
# For checking a bundle:
bundletool check-transparency \
--mode=bundle \
--bundle=/MyApp/my_app_with_transparency.aab
No APK present. APK signature was not checked.
Code transparency signature is valid. SHA-256 fingerprint of the code transparency key certificate (must be compared with the developer's public key manually): 01 23 45 67 89 AB CD EF ..
Code transparency verified: code related file contents match the code transparency file.
# For checking a ZIP containing app's APK splits:
bundletool check-transparency \
--mode=apk \
--apk-zip=/MyApp/my_app_with_transparency.zip
APK signature is valid. SHA-256 fingerprint of the apk signing key certificate (must be compared with the developer's public key manually): 02 34 E5 98 CD A7 B2 12 ..
Code transparency signature is valid. SHA-256 fingerprint of the code transparency key certificate (must be compared with the developer's public key manually): 01 23 45 67 89 AB CD EF ..
Code transparency verified: code related file contents match the code transparency file.
आप वैकल्पिक रूप से वह सार्वजनिक प्रमाणपत्र निर्दिष्ट कर सकते हैं जिसे आप के लिए सेट किया गया है, ताकि आपको हैश की तुलना न करनी पड़े मैन्युअल रूप से:
bundletool check-transparency \
--mode=bundle \
--bundle=/MyApp/my_app_with_transparency.aab \
--transparency-key-certificate=/MyApp/transparency.cert
No APK present. APK signature was not checked.
Code transparency signature verified for the provided code transparency key certificate.
Code transparency verified: code related file contents match the code transparency file.
bundletool check-transparency \
--mode=apk \
--apk-zip=/MyApp/my_app_with_transparency.zip \
--apk-signing-key-certificate=/MyApp/apk.cert \
--transparency-key-certificate=/MyApp/transparency.cert
APK signature verified for the provided apk signing key certificate.
Code transparency signature verified for the provided code transparency key certificate.
Code transparency verified: code related file contents match the code transparency file.
डिवाइस पर इंस्टॉल किए गए ऐप्लिकेशन की जांच करने के लिए, Bundletool का इस्तेमाल करना
Android डिवाइस पर इंस्टॉल किए गए ऐप्लिकेशन की जांच करने के लिए, पक्का करें कि डिवाइस ADB के ज़रिए आपके कंप्यूटर से कनेक्ट किया गया है और इसे नीचे दिया गया निर्देश जारी करें:
bundletool check-transparency \
--mode=connected_device \
--package-name="com.my.app"
APK signature is valid. SHA-256 fingerprint of the apk signing key certificate (must be compared with the developer's public key manually): 02 34 E5 98 CD A7 B2 12 ..
Code transparency signature is valid. SHA-256 fingerprint of the code transparency key certificate (must be compared with the developer's public key manually): 01 23 45 67 89 AB CD EF ..
Code transparency verified: code related file contents match the code transparency file.
कनेक्ट किए गए डिवाइस की पारदर्शिता जांच की मदद से, हस्ताक्षर की भी पुष्टि की जा सकती है. हालांकि, ऐसा करना ज़रूरी नहीं है डालें, जो आपने तय किया है:
bundletool check-transparency \
--mode=connected-device \
--package-name="com.my.app" \
--apk-signing-key-certificate=/MyApp/apk.cert \
--transparency-key-certificate=/MyApp/transparency.cert
APK signature verified for the provided apk signing key certificate.
Code transparency signature verified for the provided code transparency key certificate.
Code transparency verified: code related file contents match the code transparency file.