Google 致力于为黑人社区推动种族平等。查看具体举措
इस पेज का अनुवाद Cloud Translation API से किया गया है.
Switch to English

आवेदन पर हस्ताक्षर

एप्लिकेशन साइनिंग डेवलपर्स को एप्लिकेशन के लेखक की पहचान करने और जटिल इंटरफेस और अनुमतियां बनाए बिना अपने एप्लिकेशन को अपडेट करने की अनुमति देता है। Android प्लेटफ़ॉर्म पर चलने वाले प्रत्येक एप्लिकेशन को डेवलपर द्वारा हस्ताक्षरित किया जाना चाहिए। एप्लिकेशन जिन पर हस्ताक्षर किए बिना इंस्टॉल करने का प्रयास किया जाता है, उन्हें Google Play या Android डिवाइस पर पैकेज इंस्टॉलर द्वारा अस्वीकार कर दिया जाएगा।

Google Play पर, एप्लिकेशन साइनिंग पुलों पर भरोसा करता है जो Google ने डेवलपर के साथ किया है और डेवलपर ने उनके एप्लिकेशन के साथ विश्वास किया है। डेवलपर्स को पता है कि उनका आवेदन एंड्रॉइड डिवाइस को अनमॉडिफाइड प्रदान किया गया है; और डेवलपर्स को उनके आवेदन के व्यवहार के लिए जिम्मेदार ठहराया जा सकता है।

एंड्रॉइड पर, एप्लिकेशन साइनिंग अपने एप्लिकेशन सैंडबॉक्स में एप्लिकेशन रखने का पहला कदम है। हस्ताक्षरित आवेदन प्रमाण पत्र परिभाषित करता है कि कौन सी उपयोगकर्ता आईडी किस एप्लिकेशन से जुड़ी है; विभिन्न एप्लिकेशन अलग-अलग उपयोगकर्ता आईडी के तहत चलते हैं। एप्लिकेशन साइनिंग यह सुनिश्चित करती है कि एक एप्लिकेशन किसी अन्य एप्लिकेशन को अच्छी तरह से परिभाषित आईपीसी के अलावा किसी अन्य एप्लिकेशन तक नहीं पहुंच सकता है।

जब एक एप्लिकेशन (एपीके फ़ाइल) एक एंड्रॉइड डिवाइस पर स्थापित किया जाता है, तो पैकेज प्रबंधक सत्यापित करता है कि एपीके को उस एपीके में शामिल प्रमाण पत्र के साथ ठीक से हस्ताक्षरित किया गया है। यदि प्रमाण पत्र (या, अधिक सटीक रूप से, प्रमाण पत्र में सार्वजनिक कुंजी) डिवाइस पर किसी भी अन्य APK पर हस्ताक्षर करने के लिए उपयोग की जाने वाली कुंजी से मेल खाता है, तो नए एपीके में प्रकट में निर्दिष्ट करने का विकल्प होता है कि वह इसी तरह अन्य के साथ एक यूआईडी साझा करेगा -साइन किए गए एपीके।

अनुप्रयोगों को तीसरे पक्ष (ओईएम, ऑपरेटर, वैकल्पिक बाजार) या स्व-हस्ताक्षरित द्वारा हस्ताक्षरित किया जा सकता है। एंड्रॉइड स्व-हस्ताक्षरित प्रमाणपत्रों का उपयोग करके कोड हस्ताक्षर प्रदान करता है जो डेवलपर्स बाहरी सहायता या अनुमति के बिना उत्पन्न कर सकते हैं। केंद्रीय प्राधिकरण द्वारा आवेदनों पर हस्ताक्षर नहीं किए जाते हैं। Android वर्तमान में एप्लिकेशन प्रमाणपत्र के लिए CA सत्यापन नहीं करता है।

एप्लिकेशन हस्ताक्षर सुरक्षा स्तर पर सुरक्षा अनुमतियों की घोषणा करने में सक्षम हैं, केवल यूआईडी और एप्लिकेशन सैंडबॉक्स को बनाए रखते हुए एक ही कुंजी के साथ हस्ताक्षर किए गए अनुप्रयोगों तक पहुंच को प्रतिबंधित करते हैं। एक साझा एप्लिकेशन सैंडबॉक्स के साथ एक निकट संबंध कोसाझा यूआईडी सुविधा के माध्यम से अनुमति दी जाती है जहां एक ही डेवलपर कुंजी के साथ हस्ताक्षरित दो या अधिक एप्लिकेशन अपने प्रकट में एक साझा यूआईडी की घोषणा कर सकते हैं।

एपीके साइनिंग स्कीम

एंड्रॉइड तीन एप्लिकेशन हस्ताक्षर योजनाओं का समर्थन करता है:

अधिकतम संगतता के लिए, सभी योजनाओं के साथ पहले साइन इन करें, पहले v1, फिर v2 और फिर v3 के साथ। एंड्रॉइड 7.0+ और नए डिवाइस v2 + योजनाओं के साथ साइन किए गए एप्लिकेशन इंस्टॉल करते हैं जो केवल v1 योजना के साथ हस्ताक्षर किए गए हैं। पुराने Android प्लेटफ़ॉर्म v2 + हस्ताक्षरों को अनदेखा करते हैं और इस प्रकार v1 हस्ताक्षर करने के लिए ऐप्स की आवश्यकता होती है।

JAR हस्ताक्षर (v1 योजना)

एपीके साइनिंग शुरू से ही Android का हिस्सा रहा है। यह हस्ताक्षरित JAR पर आधारित है। इस योजना का उपयोग करने के विवरण के लिए, अपने ऐप पर हस्ताक्षर करने पर Android स्टूडियो दस्तावेज़ देखें।

v1 हस्ताक्षर एपीके के कुछ हिस्सों की रक्षा नहीं करते हैं, जैसे ज़िप मेटाडेटा। एपीके वेरीफायर को बहुत सारे अविश्वसनीय (अभी तक सत्यापित नहीं) डेटा संरचनाओं को संसाधित करने की आवश्यकता है और फिर हस्ताक्षर द्वारा कवर नहीं किए गए डेटा को छोड़ दें। यह एक बड़ी हमले की सतह प्रदान करता है। इसके अलावा, एपीके वेरिफायर को सभी संपीड़ित प्रविष्टियों को अनफॉलो करना होगा, अधिक समय और मेमोरी का उपभोग करना होगा। इन मुद्दों को हल करने के लिए, एंड्रॉइड 7.0 ने एपीके सिग्नेचर स्कीम v2 पेश की।

एपीके हस्ताक्षर योजना v2 और v3 (v2 + योजना)

Android 7.0 चलाने वाले डिवाइस और बाद में एपीके सिग्नेचर स्कीम v2 (v2 स्कीम) और बाद में सपोर्ट करते हैं। (v2 स्कीम को साइन इन करने वाले ब्लॉक में अतिरिक्त जानकारी शामिल करने के लिए एंड्रॉइड 9 में v3 में अपडेट किया गया था, लेकिन अन्यथा समान काम करता है।) एपीके की सामग्री को हैशेड और हस्ताक्षरित किया जाता है, फिर परिणामस्वरूप एपीके साइनिंग ब्लॉक को एपीके में डाला जाता है। ऐप पर v2 + स्कीम लागू करने के विवरण के लिए, एपीके सिग्नेचर स्कीम v2 देखें

सत्यापन के दौरान, v2 + योजना एपीके फ़ाइल को एक बूँद के रूप में मानती है और संपूर्ण फ़ाइल में हस्ताक्षर की जाँच करती है। जिप मेटाडेटा संशोधनों सहित एपीके के लिए किसी भी संशोधन, एपीके हस्ताक्षर को अमान्य करता है। एपीके सत्यापन का यह रूप काफी तेज है और अनधिकृत संशोधनों के अधिक वर्गों का पता लगाने में सक्षम बनाता है।

नया प्रारूप पीछे की ओर संगत है, इसलिए नए हस्ताक्षर प्रारूप के साथ हस्ताक्षरित APK पुराने Android उपकरणों (जो केवल एपीके में जोड़े गए अतिरिक्त डेटा को अनदेखा करते हैं) पर स्थापित किए जा सकते हैं, जब तक कि ये APK v1-हस्ताक्षरित भी होते हैं।

एपीके हस्ताक्षर सत्यापन प्रक्रिया

चित्र 1. एपीके हस्ताक्षर सत्यापन प्रक्रिया

एपीके की पूरी-फ़ाइल हैश को एपीके साइनिंग ब्लॉक में संग्रहीत v2 + हस्ताक्षर के खिलाफ सत्यापित किया गया है। हैश में एपीके साइनिंग ब्लॉक को छोड़कर सब कुछ शामिल है, जिसमें v2 + हस्ताक्षर हैं। एपीके साइनिंग ब्लॉक के बाहर एपीके के लिए कोई भी संशोधन एपीके के v2 + हस्ताक्षर को अमान्य करता है। छीन लिए गए v2 + हस्ताक्षर वाले APK को भी अस्वीकार कर दिया जाता है, क्योंकि उनके v1 हस्ताक्षर निर्दिष्ट करते हैं कि एपीके v2-हस्ताक्षरित था, जो Android 7.0 और उनके v1 हस्ताक्षरों का उपयोग करके APK को सत्यापित करने से इनकार करता है।

एपीके हस्ताक्षर सत्यापन प्रक्रिया के विवरण के लिए, एपीके सिग्नेचर स्कीम v2 का सत्यापन अनुभाग देखें।