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

संग्रह की मदद से व्यवस्थित रहें अपनी प्राथमिकताओं के आधार पर, कॉन्टेंट को सेव करें और कैटगरी में बांटें.

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

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

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

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

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

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

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

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

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

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

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

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

APK हस्ताक्षर योजना v2 और v3 (v2+ योजना)

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

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

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

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

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

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

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