इस पेज पर, ऐप्लिकेशन की सुरक्षा से जुड़े अलग-अलग पहलुओं के बारे में बताया गया है.
ऐप्लिकेशन के एलिमेंट
Android, मोबाइल डिवाइसों के लिए एक ओपन सोर्स प्लैटफ़ॉर्म और ऐप्लिकेशन एनवायरमेंट उपलब्ध कराता है. इसका मुख्य ऑपरेटिंग सिस्टम, Linux कर्नेल पर आधारित है. Android ऐप्लिकेशन, ज़्यादातर Java प्रोग्रामिंग लैंग्वेज में लिखे जाते हैं. ये Android रनटाइम (ART) वर्चुअल मशीन में चलते हैं. हालांकि, ऐप्लिकेशन को नेटिव कोड में भी लिखा जा सकता है. ऐप्लिकेशन, APK फ़ाइल एक्सटेंशन वाली एक फ़ाइल से इंस्टॉल किए जाते हैं.
Android ऐप्लिकेशन बनाने के लिए, इन चीज़ों की ज़रूरत होती है:
-
AndroidManifest.xml:AndroidManifest.xmlफ़ाइल, कंट्रोल फ़ाइल होती है. यह सिस्टम को बताती है कि ऐप्लिकेशन में मौजूद सभी टॉप-लेवल कॉम्पोनेंट (खास तौर पर, नीचे बताए गए ऐक्टिविटी, सेवाएं, ब्रॉडकास्ट रिसीवर, और कॉन्टेंट प्रोवाइडर) के साथ क्या करना है. यह फ़ाइल यह भी तय करती है कि कौनसी अनुमतियां ज़रूरी हैं. -
ऐक्टिविटी: आम तौर पर, ऐक्टिविटी,
Activityक्लास का इस्तेमाल करके, उपयोगकर्ता के लिए एक टास्क का कोड होता है. आम तौर पर, किसी गतिविधि में उपयोगकर्ता को यूज़र इंटरफ़ेस (यूआई) दिखाना शामिल होता है. हालांकि, ऐसा करना ज़रूरी नहीं है. कुछ गतिविधियां कभी भी यूआई नहीं दिखाती हैं. आम तौर पर, ऐप्लिकेशन की कोई एक गतिविधि, ऐप्लिकेशन में एंट्री पॉइंट होती है. -
सेवाएं: सेवा, कोड का एक ऐसा हिस्सा होता है जो
Serviceक्लास के आधार पर बैकग्राउंड में चलता है. यह अपनी प्रोसेस में या किसी दूसरे ऐप्लिकेशन की प्रोसेस के कॉन्टेक्स्ट में चल सकता है. अन्य कॉम्पोनेंट, किसी सेवा से जुड़ते हैं और रिमोट प्रोसीजर कॉल के ज़रिए उस पर तरीकों को लागू करते हैं. किसी सेवा का उदाहरण मीडिया प्लेयर है: भले ही, उपयोगकर्ता मीडिया चुनने वाले यूज़र इंटरफ़ेस (यूआई) से बाहर निकल जाए, लेकिन हो सकता है कि वह संगीत को चालू रखना चाहता हो. सेवा, यूज़र इंटरफ़ेस (यूआई) बंद होने के बाद भी संगीत चलाती रहती है. -
ब्रॉडकास्ट रिसीवर: ब्रॉडकास्ट रिसीवर,
BroadcastReceiverक्लास का ऑब्जेक्ट होता है. यह तब शुरू होता है, जब ऑपरेटिंग सिस्टम या कोई दूसरा ऐप्लिकेशन, इंटेंट नाम का आईपीसी मेकेनिज़्म जारी करता है. यहIntentक्लास का एक इंस्टेंस होता है. कोई ऐप्लिकेशन, बैटरी कम होने की सूचना पाने के लिए रिसीवर रजिस्टर कर सकता है. उदाहरण के लिए, वह इस सूचना के आधार पर अपने व्यवहार में बदलाव कर सकता है.
Android के अनुमति मॉडल के तहत, सुरक्षित किए गए एपीआई को ऐक्सेस करना
Android पर सभी ऐप्लिकेशन, ऐप्लिकेशन सैंडबॉक्स में चलते हैं. डिफ़ॉल्ट रूप से, Android ऐप्लिकेशन सिर्फ़ सिस्टम के सीमित संसाधनों को ऐक्सेस कर सकता है. सिस्टम, Android ऐप्लिकेशन को उन संसाधनों का ऐक्सेस देता है जिनका गलत इस्तेमाल करने या नुकसान पहुंचाने के मकसद से इस्तेमाल करने पर, उपयोगकर्ता अनुभव, नेटवर्क या डिवाइस पर मौजूद डेटा पर बुरा असर पड़ सकता है.
ये पाबंदियां अलग-अलग तरह से लागू की जाती हैं. कुछ सुविधाओं पर पाबंदी लगाई गई है. ऐसा इसलिए किया गया है, ताकि संवेदनशील फ़ंक्शन के लिए एपीआई उपलब्ध न हों. उदाहरण के लिए, सिम कार्ड में सीधे तौर पर बदलाव करने के लिए कोई Android API उपलब्ध नहीं है. कुछ मामलों में, भूमिकाओं को अलग-अलग करने से सुरक्षा मिलती है. जैसे, हर ऐप्लिकेशन के लिए स्टोरेज को अलग-अलग करना. अन्य मामलों में, संवेदनशील एपीआई का इस्तेमाल भरोसेमंद ऐप्लिकेशन के लिए किया जाता है. साथ ही, इन्हें अनुमतियां नाम की सुरक्षा सुविधा के ज़रिए सुरक्षित रखा जाता है.
सुरक्षा वाले इन एपीआई में ये शामिल हैं:
- कैमरे के फ़ंक्शन
- जगह की जानकारी का डेटा (जीपीएस)
- ब्लूटूथ की सुविधाएं
- टेलीफ़ोनी फ़ंक्शन
- एसएमएस/मल्टीमीडिया मैसेज (एमएमएस) की सुविधाएं
- नेटवर्क/डेटा कनेक्शन
इन संसाधनों को सिर्फ़ ऑपरेटिंग सिस्टम के ज़रिए ऐक्सेस किया जा सकता है. डिवाइस पर सुरक्षित एपीआई का इस्तेमाल करने के लिए, किसी ऐप्लिकेशन को अपने मेनिफ़ेस्ट में उन क्षमताओं के बारे में बताना होगा जिनकी उसे ज़रूरत है. Android 6.0 और इसके बाद के सभी वर्शन, रनटाइम की अनुमतियों वाले मॉडल का इस्तेमाल करते हैं. अगर कोई उपयोगकर्ता किसी ऐप्लिकेशन से ऐसी सुविधा का अनुरोध करता है जिसके लिए सुरक्षित एपीआई की ज़रूरत होती है, तो सिस्टम एक डायलॉग दिखाता है. इसमें उपयोगकर्ता को अनुमति अस्वीकार करने या अनुमति देने का विकल्प मिलता है.
अनुमतियां देने के बाद, ऐप्लिकेशन के इंस्टॉल रहने तक ये अनुमतियां उस पर लागू रहती हैं. उपयोगकर्ता को किसी तरह की उलझन से बचाने के लिए, सिस्टम उसे ऐप्लिकेशन को दी गई अनुमतियों के बारे में दोबारा सूचना नहीं देता. साथ ही, मुख्य ऑपरेटिंग सिस्टम में शामिल ऐप्लिकेशन या ओईएम की ओर से बंडल किए गए ऐप्लिकेशन, उपयोगकर्ता से अनुमतियों का अनुरोध नहीं करते. किसी ऐप्लिकेशन को अनइंस्टॉल करने पर, उससे जुड़ी अनुमतियां हटा दी जाती हैं. इसलिए, उसे फिर से इंस्टॉल करने पर, अनुमतियां फिर से दिखती हैं.
डिवाइस की सेटिंग में जाकर, उपयोगकर्ता उन ऐप्लिकेशन के लिए अनुमतियां देख सकते हैं जिन्हें उन्होंने पहले इंस्टॉल किया था. उपयोगकर्ता चाहें, तो कुछ सुविधाओं को बंद भी कर सकते हैं. जैसे, जीपीएस, रेडियो या वाई-फ़ाई को बंद करना.
अगर कोई ऐप्लिकेशन, सुरक्षित की गई ऐसी सुविधा का इस्तेमाल करने की कोशिश करता है जिसके बारे में ऐप्लिकेशन के मेनिफ़ेस्ट में एलान नहीं किया गया है, तो अनुमति न मिलने पर आम तौर पर ऐप्लिकेशन को सुरक्षा से जुड़ी गड़बड़ी का मैसेज मिलता है. सुरक्षित किए गए एपीआई की अनुमति की जांच, सबसे निचले लेवल पर की जाती है, ताकि सुरक्षा को गच्चा न दिया जा सके. जब सुरक्षित एपीआई को ऐक्सेस करने का अनुरोध किया जाता है, तब ऐप्लिकेशन इंस्टॉल करने के दौरान उपयोगकर्ता को दिखने वाले मैसेज का उदाहरण, इमेज 2 में दिखाया गया है.
सिस्टम की डिफ़ॉल्ट अनुमतियों के बारे में Manifest.permission पर बताया गया है. ऐप्लिकेशन, अन्य ऐप्लिकेशन के लिए अपनी अनुमतियां तय कर सकते हैं. इस तरह की अनुमतियां, ऊपर दी गई जगह पर नहीं दिखती हैं.
अनुमति तय करते समय, protectionLevel एट्रिब्यूट सिस्टम को बताता है कि अनुमति मांगने वाले ऐप्लिकेशन के बारे में उपयोगकर्ता को कैसे सूचना दी जानी चाहिए या किसे अनुमति दी जानी चाहिए. ऐप्लिकेशन के लिए खास अनुमतियां बनाने और इस्तेमाल करने के बारे में जानकारी, सुरक्षा से जुड़ी चेकलिस्ट में दी गई है.
डिवाइस की कुछ ऐसी सुविधाएं होती हैं जो सिर्फ़ OEM के पहले से इंस्टॉल किए गए ऐप्लिकेशन के लिए उपलब्ध होती हैं. जैसे, एसएमएस ब्रॉडकास्ट इंटेंट भेजने की सुविधा. ये सुविधाएं, तीसरे पक्ष के ऐप्लिकेशन के लिए उपलब्ध नहीं होती हैं. ये अनुमतियां, signatureOrSystem अनुमति का इस्तेमाल करती हैं.
उपयोगकर्ता, तीसरे पक्ष के ऐप्लिकेशन के बारे में कैसे जानते हैं
Android की कोशिश होती है कि उपयोगकर्ताओं को यह साफ़ तौर पर पता चले कि वे तीसरे पक्ष के ऐप्लिकेशन के साथ कब इंटरैक्ट कर रहे हैं. साथ ही, उन्हें यह भी बताया जाता है कि उन ऐप्लिकेशन में कौन-कौनसी सुविधाएं उपलब्ध हैं. किसी भी ऐप्लिकेशन को इंस्टॉल करने से पहले, उपयोगकर्ता को एक साफ़ मैसेज दिखाया जाता है. इसमें बताया जाता है कि ऐप्लिकेशन किन-किन अनुमतियों का अनुरोध कर रहा है. ऐप्लिकेशन इंस्टॉल करने के बाद, उपयोगकर्ता को किसी भी अनुमति की पुष्टि करने के लिए फिर से नहीं कहा जाता.
ऐप्लिकेशन इंस्टॉल करने से ठीक पहले अनुमतियां दिखाने की कई वजहें होती हैं. इस दौरान उपयोगकर्ता, ऐप्लिकेशन, डेवलपर, और सुविधाओं के बारे में जानकारी की बारीकी से जांच करता है. इससे वह यह तय कर पाता है कि ऐप्लिकेशन उसकी ज़रूरतों और उम्मीदों के मुताबिक है या नहीं. यह भी ज़रूरी है कि उन्होंने अब तक ऐप्लिकेशन के लिए मानसिक या वित्तीय तौर पर कोई प्रतिबद्धता न दिखाई हो. साथ ही, वे ऐप्लिकेशन की तुलना अन्य विकल्पों से आसानी से कर सकें.
कुछ अन्य प्लैटफ़ॉर्म, उपयोगकर्ता को सूचना देने के लिए अलग तरीका अपनाते हैं. वे हर सेशन की शुरुआत में या ऐप्लिकेशन इस्तेमाल करते समय अनुमति मांगते हैं. Android का मकसद है कि उपयोगकर्ता अपनी पसंद के हिसाब से, ऐप्लिकेशन के बीच आसानी से स्विच कर सकें. हर बार पुष्टि करने का विकल्प देने से, उपयोगकर्ता को समय लगेगा. साथ ही, Android को बेहतर उपयोगकर्ता अनुभव देने से रोका जा सकेगा. इंस्टॉल करते समय, उपयोगकर्ता को अनुमतियों की समीक्षा करने का विकल्प मिलता है. इससे अगर उपयोगकर्ता को कोई समस्या होती है, तो वह ऐप्लिकेशन इंस्टॉल नहीं करता.
साथ ही, यूज़र इंटरफ़ेस से जुड़ी कई स्टडी में यह पता चला है कि उपयोगकर्ता को बार-बार प्रॉम्प्ट दिखाने से, वह दिखाए गए किसी भी डायलॉग पर ठीक है पर क्लिक करने लगता है. Android के सुरक्षा लक्ष्यों में से एक यह है कि उपयोगकर्ता को सुरक्षा से जुड़ी अहम जानकारी सही तरीके से दी जाए. ऐसा उन डायलॉग बॉक्स का इस्तेमाल करके नहीं किया जा सकता जिन्हें उपयोगकर्ता अनदेखा करने के लिए प्रशिक्षित है. अहम जानकारी को सिर्फ़ एक बार और सिर्फ़ तब दिखाया जाता है, जब यह ज़रूरी हो. इससे उपयोगकर्ता को यह सोचने का ज़्यादा समय मिलता है कि वह किस बात से सहमत हो रहा है.
कुछ प्लैटफ़ॉर्म, ऐप्लिकेशन की सुविधाओं के बारे में कोई भी जानकारी नहीं दिखाते हैं. इस तरीके से, उपयोगकर्ताओं को ऐप्लिकेशन की सुविधाओं को आसानी से समझने और उनके बारे में चर्चा करने से रोका जाता है. हालांकि, सभी उपयोगकर्ताओं के लिए हमेशा पूरी जानकारी के साथ फ़ैसले लेना मुमकिन नहीं होता. Android की अनुमतियों के मॉडल की मदद से, ज़्यादातर उपयोगकर्ताओं के लिए ऐप्लिकेशन के बारे में जानकारी आसानी से उपलब्ध कराई जाती है. उदाहरण के लिए, अनुमतियों के अचानक किए गए अनुरोधों से, ज़्यादा समझदार उपयोगकर्ता ऐप्लिकेशन की मुख्य सुविधाओं और उनके काम करने के तरीके के बारे में अहम सवाल पूछ सकते हैं. साथ ही, वे अपनी समस्याएं Google Play जैसे प्लैटफ़ॉर्म पर शेयर कर सकते हैं, जहां वे सभी उपयोगकर्ताओं को दिखती हैं.
| ऐप्लिकेशन इंस्टॉल करने के दौरान अनुमतियां — Google Translate | इंस्टॉल किए गए ऐप्लिकेशन की अनुमतियां — Gmail |
|---|---|
![]() |
![]() |
पहली इमेज. ऐप्लिकेशन के लिए अनुमतियां दिखाना.
इंटरप्रोसेस कम्यूनिकेशन
प्रोसेस, Unix-टाइप के किसी भी पारंपरिक तरीके का इस्तेमाल करके कम्यूनिकेट कर सकती हैं. उदाहरण के लिए, फ़ाइल सिस्टम, लोकल सॉकेट या सिग्नल. हालांकि, Linux की अनुमतियां अब भी लागू होती हैं.
Android, आईपीसी के नए तरीके भी उपलब्ध कराता है:
-
Binder: यह क्षमता पर आधारित रिमोट प्रोसीजर कॉल का एक हल्का-फुल्का मैकेनिज़्म है. इसे प्रोसेस के दौरान और क्रॉस-प्रोसेस कॉल करते समय, बेहतर परफ़ॉर्मेंस देने के लिए डिज़ाइन किया गया है. Binder को कस्टम Linux ड्राइवर का इस्तेमाल करके लागू किया जाता है. क्लास के बारे में जानकारी के लिए, बाइंडर देखें.
-
सेवाएं: सेवाएं, सीधे तौर पर ऐक्सेस किए जा सकने वाले इंटरफ़ेस उपलब्ध करा सकती हैं. इन्हें बाइंडर का इस्तेमाल करके ऐक्सेस किया जा सकता है. ज़्यादा जानकारी के लिए, ऐप्लिकेशन के एलिमेंट देखें
-
इंटेंट: इंटेंट एक सामान्य मैसेज ऑब्जेक्ट होता है. इससे किसी काम को करने के इरादे के बारे में पता चलता है. उदाहरण के लिए, अगर आपके ऐप्लिकेशन को कोई वेब पेज दिखाना है, तो वह यूआरएल देखने के लिए, इंटेंट इंस्टेंस बनाता है और उसे सिस्टम को सौंप देता है. सिस्टम, कोड के किसी दूसरे हिस्से (इस मामले में, ब्राउज़र) का पता लगाता है. इस हिस्से को पता होता है कि उस इंटेंट को कैसे हैंडल करना है. इसके बाद, सिस्टम उस हिस्से को चलाता है. इंटेंट का इस्तेमाल, सिस्टम में दिलचस्प इवेंट (जैसे कि सूचना) ब्रॉडकास्ट करने के लिए भी किया जा सकता है. क्लास के बारे में जानकारी के लिए, Intent देखें.
-
कॉन्टेंट उपलब्ध कराने वाली कंपनियां: कॉन्टेंट उपलब्ध कराने वाली कंपनी, डेटा का एक ऐसा स्टोरहाउस होती है जो डिवाइस पर मौजूद डेटा को ऐक्सेस करने की सुविधा देती है. इसका सबसे अच्छा उदाहरण, कॉन्टेंट उपलब्ध कराने वाली वह कंपनी है जिसका इस्तेमाल उपयोगकर्ता की संपर्क सूची को ऐक्सेस करने के लिए किया जाता है. कोई ऐप्लिकेशन, कॉन्टेंट देने वाली कंपनी के साथ शेयर किए गए डेटा को ऐक्सेस कर सकता है. साथ ही, कोई ऐप्लिकेशन अपने डेटा को शेयर करने के लिए, कॉन्टेंट देने वाली कंपनी को भी तय कर सकता है. क्लास के बारे में जानकारी के लिए, ContentProvider देखें.
नेटवर्क सॉकेट या वर्ल्ड-राइटेबल फ़ाइलों जैसे अन्य तरीकों का इस्तेमाल करके भी आईपीसी को लागू किया जा सकता है. हालांकि, Android आईपीसी के लिए इन फ़्रेमवर्क का इस्तेमाल करने का सुझाव दिया जाता है. Android डेवलपर को यह सुझाव दिया जाता है कि वे उपयोगकर्ताओं के डेटा को सुरक्षित रखने और सुरक्षा से जुड़ी कमियों को दूर करने के लिए, सबसे सही तरीके अपनाएं.
लागत के हिसाब से संवेदनशील एपीआई
कीमत के हिसाब से संवेदनशील एपीआई, ऐसा कोई भी फ़ंक्शन होता है जिससे उपयोगकर्ता या नेटवर्क के लिए शुल्क लग सकता है. Android प्लैटफ़ॉर्म ने, लागत के हिसाब से संवेदनशील एपीआई को सुरक्षित एपीआई की सूची में रखा है. इन एपीआई को ओएस कंट्रोल करता है. उपयोगकर्ता को तीसरे पक्ष के उन ऐप्लिकेशन को साफ़ तौर पर अनुमति देनी होगी जो लागत से जुड़े संवेदनशील एपीआई का इस्तेमाल करने का अनुरोध करते हैं. इन एपीआई में ये शामिल हैं:
- टेलीफ़ोनी
- SMS/MMS
- नेटवर्क/डेटा
- ऐप्लिकेशन के अंतर्गत बिलिंग
- एनएफ़सी ऐक्सेस
Android 4.2 में, एसएमएस के इस्तेमाल पर ज़्यादा कंट्रोल मिलता है. अगर कोई ऐप्लिकेशन, प्रीमियम सेवाओं का इस्तेमाल करने वाले शॉर्ट कोड पर एसएमएस भेजने की कोशिश करता है, तो Android इसकी सूचना देता है. इससे अतिरिक्त शुल्क लग सकता है. उपयोगकर्ता के पास यह चुनने का विकल्प होता है कि ऐप्लिकेशन को मैसेज भेजने की अनुमति देनी है या नहीं.
सिम कार्ड का ऐक्सेस
तीसरे पक्ष के ऐप्लिकेशन को सिम कार्ड का ऐक्सेस नहीं दिया जाता. ओएस, सिम कार्ड के साथ सभी कम्यूनिकेशन को मैनेज करता है. इसमें सिम कार्ड की मेमोरी में मौजूद निजी जानकारी (संपर्क) को ऐक्सेस करना भी शामिल है. ऐप्लिकेशन, एटी कमांड को भी ऐक्सेस नहीं कर सकते, क्योंकि इन्हें सिर्फ़ रेडियो इंटरफ़ेस लेयर (आरआईएल) मैनेज करती है. आरआइएल, इन कमांड के लिए कोई हाई लेवल एपीआई उपलब्ध नहीं कराता है.
निजी जानकारी
Android ने उपयोगकर्ता के डेटा को ऐक्सेस करने वाले एपीआई को सुरक्षित एपीआई के सेट में रखा है. सामान्य इस्तेमाल के दौरान, Android डिवाइसों में भी उपयोगकर्ता का डेटा इकट्ठा होता है. यह डेटा, उपयोगकर्ताओं के इंस्टॉल किए गए तीसरे पक्ष के ऐप्लिकेशन में इकट्ठा होता है. इस जानकारी को शेयर करने का विकल्प चुनने वाले ऐप्लिकेशन, Android OS की अनुमति से जुड़ी जांचों का इस्तेमाल कर सकते हैं. इससे, तीसरे पक्ष के ऐप्लिकेशन से डेटा को सुरक्षित रखा जा सकता है.

दूसरी इमेज. उपयोगकर्ता के संवेदनशील डेटा को सिर्फ़ सुरक्षित एपीआई के ज़रिए ऐक्सेस किया जा सकता है.
सिस्टम कॉन्टेंट उपलब्ध कराने वाले ऐसे ऐप्लिकेशन बनाए गए हैं जिनमें निजी या व्यक्तिगत पहचान से जुड़ी जानकारी शामिल हो सकती है. जैसे, संपर्क और कैलेंडर. इन ऐप्लिकेशन को अनुमतियां साफ़ तौर पर बताई गई हैं. इस जानकारी से उपयोगकर्ता को साफ़ तौर पर पता चलता है कि ऐप्लिकेशन को किस तरह की जानकारी दी जा सकती है. इंस्टॉल करने के दौरान, तीसरे पक्ष का ऐप्लिकेशन इन संसाधनों को ऐक्सेस करने की अनुमति मांग सकता है. अनुमति मिलने पर, ऐप्लिकेशन को इंस्टॉल किया जा सकता है. साथ ही, इंस्टॉल होने के बाद, यह ऐप्लिकेशन कभी भी उस डेटा को ऐक्सेस कर सकता है जिसके लिए अनुरोध किया गया है.
निजी जानकारी इकट्ठा करने वाले किसी भी ऐप्लिकेशन के पास, डिफ़ॉल्ट रूप से सिर्फ़ उस ऐप्लिकेशन का डेटा होता है. अगर कोई ऐप्लिकेशन, आईपीसी के ज़रिए अन्य ऐप्लिकेशन को डेटा उपलब्ध कराने का विकल्प चुनता है, तो ऐक्सेस देने वाला ऐप्लिकेशन, आईपीसी मैकेनिज़्म पर ऐसी अनुमतियां लागू कर सकता है जिन्हें ऑपरेटिंग सिस्टम लागू करता है.
संवेदनशील डेटा इनपुट करने वाले डिवाइस
Android डिवाइसों में अक्सर संवेदनशील डेटा इनपुट करने वाले डिवाइस होते हैं. इनकी मदद से ऐप्लिकेशन, आस-पास के माहौल से इंटरैक्ट कर पाते हैं. जैसे, कैमरा, माइक्रोफ़ोन या जीपीएस. अगर किसी तीसरे पक्ष के ऐप्लिकेशन को इन डिवाइसों को ऐक्सेस करना है, तो उपयोगकर्ता को Android OS की अनुमतियों का इस्तेमाल करके, उसे साफ़ तौर पर अनुमति देनी होगी. इंस्टॉल करने के बाद, इंस्टॉलर उपयोगकर्ता को सूचना देता है. इसमें सेंसर के नाम के हिसाब से अनुमति का अनुरोध किया जाता है.
अगर किसी ऐप्लिकेशन को उपयोगकर्ता की जगह की जानकारी चाहिए, तो उसे उपयोगकर्ता की जगह की जानकारी को ऐक्सेस करने की अनुमति लेनी होगी. इंस्टॉल करने के दौरान, इंस्टॉलर उपयोगकर्ता को एक प्रॉम्प्ट दिखाता है. इसमें पूछा जाता है कि क्या ऐप्लिकेशन को उपयोगकर्ता की जगह की जानकारी ऐक्सेस करने की अनुमति दी जा सकती है. अगर उपयोगकर्ता को किसी भी समय यह नहीं चाहिए कि कोई ऐप्लिकेशन उसकी जगह की जानकारी ऐक्सेस करे, तो वह सेटिंग ऐप्लिकेशन चला सकता है. इसके बाद, जगह की जानकारी और सुरक्षा पर जाकर, वायरलेस नेटवर्क का इस्तेमाल करें और जीपीएस सैटलाइट चालू करें को अनचेक कर सकता है. इससे उपयोगकर्ता के डिवाइस पर मौजूद सभी ऐप्लिकेशन के लिए, जगह की जानकारी पर आधारित सेवाएं बंद हो जाती हैं.
डिवाइस का मेटाडेटा
Android, ऐसे डेटा को ऐक्सेस करने पर भी पाबंदी लगाने की कोशिश करता है जो मूल रूप से संवेदनशील नहीं है. हालांकि, इससे उपयोगकर्ता की विशेषताओं, उसकी प्राथमिकताओं, और डिवाइस इस्तेमाल करने के तरीके के बारे में पता चल सकता है.
डिफ़ॉल्ट रूप से, ऐप्लिकेशन के पास ऑपरेटिंग सिस्टम के लॉग, ब्राउज़र के इतिहास, फ़ोन नंबर या हार्डवेयर या नेटवर्क की पहचान से जुड़ी जानकारी का ऐक्सेस नहीं होता. अगर कोई ऐप्लिकेशन इंस्टॉल करने के दौरान इस जानकारी को ऐक्सेस करने का अनुरोध करता है, तो इंस्टॉलर उपयोगकर्ता को एक प्रॉम्प्ट दिखाता है. इसमें पूछा जाता है कि क्या ऐप्लिकेशन को यह जानकारी ऐक्सेस करने की अनुमति दी जा सकती है. अगर उपयोगकर्ता ऐक्सेस नहीं देता है, तो ऐप्लिकेशन इंस्टॉल नहीं होगा.
सर्टिफ़िकेट देने वाली संस्थाएं
Android में, सिस्टम के लिए सर्टिफ़िकेट देने वाली संस्थाओं के इंस्टॉल किए गए सर्टिफ़िकेट का एक सेट शामिल होता है. इन सर्टिफ़िकेट पर पूरे सिस्टम में भरोसा किया जाता है. Android 7.0 से पहले, डिवाइस बनाने वाली कंपनियां अपने डिवाइसों पर शिप किए गए सीए के सेट में बदलाव कर सकती थीं. हालांकि, Android 7.0 और उसके बाद के वर्शन वाले डिवाइसों में सिस्टम सीए का एक जैसा सेट होता है, क्योंकि डिवाइस बनाने वाली कंपनियों को अब इसमें बदलाव करने की अनुमति नहीं है.
Android के स्टॉक सेट में नए सार्वजनिक CA के तौर पर शामिल होने के लिए, CA को Mozilla CA Inclusion Process पूरी करनी होगी. इसके बाद, Android के ख़िलाफ़ सुविधा का अनुरोध फ़ाइल करना होगा ( https://code.google.com/p/android/issues/entry). इससे CA को Android Open Source Project (AOSP) में, स्टॉक Android CA सेट में जोड़ा जा सकेगा.
अब भी ऐसे सीए मौजूद हैं जो डिवाइस के हिसाब से काम करते हैं. इन्हें AOSP के सीए के मुख्य सेट में शामिल नहीं किया जाना चाहिए. जैसे, मोबाइल और इंटरनेट सेवा देने वाली कंपनियों के निजी सीए. इनकी ज़रूरत, मोबाइल और इंटरनेट सेवा देने वाली कंपनी के इन्फ़्रास्ट्रक्चर के कॉम्पोनेंट को सुरक्षित तरीके से ऐक्सेस करने के लिए पड़ सकती है. जैसे, एसएमएस/एमएमएस गेटवे. डिवाइस बनाने वाली कंपनियों को यह सुझाव दिया जाता है कि वे निजी CA को सिर्फ़ उन कॉम्पोनेंट/ऐप्लिकेशन में शामिल करें जिन्हें इन CA पर भरोसा करने की ज़रूरत है. ज़्यादा जानकारी के लिए, नेटवर्क सुरक्षा कॉन्फ़िगरेशन देखें.
ऐप पर हस्ताक्षर
कोड साइनिंग की मदद से, डेवलपर ऐप्लिकेशन के लेखक की पहचान कर सकते हैं. साथ ही, जटिल इंटरफ़ेस और अनुमतियां बनाए बिना अपने ऐप्लिकेशन को अपडेट कर सकते हैं. Android प्लैटफ़ॉर्म पर चलने वाले हर ऐप्लिकेशन पर, डेवलपर के हस्ताक्षर होने चाहिए. बिना साइन किए इंस्टॉल करने की कोशिश करने वाले ऐप्लिकेशन को Google Play या Android डिवाइस पर पैकेज इंस्टॉलर अस्वीकार कर देता है.
Google Play पर, ऐप्लिकेशन पर हस्ताक्षर करने की सुविधा से, Google को डेवलपर पर भरोसा होता है. साथ ही, डेवलपर को अपने ऐप्लिकेशन पर भरोसा होता है. डेवलपर को पता होता है कि उनका ऐप्लिकेशन, Android डिवाइस पर बिना किसी बदलाव के उपलब्ध कराया गया है. साथ ही, डेवलपर को अपने ऐप्लिकेशन के व्यवहार के लिए ज़िम्मेदार ठहराया जा सकता है.
Android पर, ऐप्लिकेशन साइनिंग की सुविधा का इस्तेमाल करके ही किसी ऐप्लिकेशन को उसके ऐप्लिकेशन सैंडबॉक्स में रखा जा सकता है. हस्ताक्षर किए गए ऐप्लिकेशन सर्टिफ़िकेट से यह तय होता है कि कौनसे उपयोगकर्ता आईडी को किस ऐप्लिकेशन से जोड़ा गया है. अलग-अलग ऐप्लिकेशन, अलग-अलग उपयोगकर्ता आईडी के तहत काम करते हैं. ऐप्लिकेशन साइनिंग से यह पक्का किया जाता है कि कोई ऐप्लिकेशन, अच्छी तरह से तय किए गए आईपीसी के अलावा किसी दूसरे ऐप्लिकेशन को ऐक्सेस न कर सके.
जब किसी ऐप्लिकेशन (APK फ़ाइल) को Android डिवाइस पर इंस्टॉल किया जाता है, तो Package Manager यह पुष्टि करता है कि APK को उस APK में शामिल सर्टिफ़िकेट से सही तरीके से साइन किया गया है. अगर सर्टिफ़िकेट (या ज़्यादा सटीक तरीके से कहें, तो सर्टिफ़िकेट में मौजूद सार्वजनिक पासकोड) उस पासकोड से मेल खाता है जिसका इस्तेमाल डिवाइस पर मौजूद किसी दूसरे APK पर साइन करने के लिए किया गया था, तो नए APK के पास मेनिफ़ेस्ट में यह बताने का विकल्प होता है कि वह उसी तरह के साइन किए गए दूसरे APK के साथ यूआईडी शेयर करता है.
ऐप्लिकेशन पर तीसरे पक्ष (ओईएम, ऑपरेटर, वैकल्पिक मार्केट) के हस्ताक्षर हो सकते हैं या वे खुद के हस्ताक्षर वाले हो सकते हैं. Android, कोड साइन करने की सुविधा देता है. इसके लिए, खुद के साइन किए गए सर्टिफ़िकेट का इस्तेमाल किया जाता है. इन्हें डेवलपर, किसी बाहरी सहायता या अनुमति के बिना जनरेट कर सकते हैं. ऐप्लिकेशन पर किसी केंद्रीय अथॉरिटी के हस्ताक्षर होने ज़रूरी नहीं हैं. Android, फ़िलहाल ऐप्लिकेशन सर्टिफ़िकेट के लिए CA की पुष्टि नहीं करता है.
ऐप्लिकेशन, सिग्नेचर प्रोटेक्शन लेवल पर सुरक्षा अनुमतियों का एलान भी कर सकते हैं. इससे, एक ही कुंजी से साइन किए गए ऐप्लिकेशन को ही ऐक्सेस मिलता है. साथ ही, अलग-अलग यूआईडी और ऐप्लिकेशन सैंडबॉक्स बनाए रखे जाते हैं. शेयर किए गए यूआईडी की सुविधा के ज़रिए, शेयर किए गए ऐप्लिकेशन सैंडबॉक्स के साथ ज़्यादा नज़दीकी संबंध बनाया जा सकता है. इस सुविधा के तहत, डेवलपर के एक ही हस्ताक्षर वाले दो या उससे ज़्यादा ऐप्लिकेशन, अपने मेनिफ़ेस्ट में शेयर किए गए यूआईडी का एलान कर सकते हैं.
ऐप्लिकेशन की पुष्टि करना
Android 4.2 और इसके बाद के वर्शन पर, ऐप्लिकेशन की पुष्टि करने की सुविधा काम करती है. उपयोगकर्ता, ऐप्लिकेशन की पुष्टि करें सुविधा को चालू कर सकते हैं. साथ ही, ऐप्लिकेशन इंस्टॉल करने से पहले, ऐप्लिकेशन की पुष्टि करने वाले व्यक्ति से ऐप्लिकेशन की जांच करा सकते हैं. ऐप्लिकेशन की पुष्टि करने की सुविधा, उपयोगकर्ता को चेतावनी दे सकती है. ऐसा तब होता है, जब वह नुकसान पहुंचा सकने वाला कोई ऐप्लिकेशन इंस्टॉल करने की कोशिश करता है. अगर कोई ऐप्लिकेशन बहुत ज़्यादा नुकसान पहुंचा सकता है, तो यह सुविधा उसे इंस्टॉल होने से रोक सकती है.
डिजिटल राइट मैनेजमेंट
Android प्लैटफ़ॉर्म, डिजिटल राइट मैनेजमेंट (डीआरएम) का एक ऐसा फ़्रेमवर्क उपलब्ध कराता है जिसे बढ़ाया जा सकता है. इससे ऐप्लिकेशन, लाइसेंस के तहत सुरक्षित कॉन्टेंट को मैनेज कर पाते हैं. ऐसा, कॉन्टेंट से जुड़ी लाइसेंस की शर्तों के मुताबिक किया जाता है. डीआरएम फ़्रेमवर्क, कई डीआरएम स्कीम के साथ काम करता है. कोई डिवाइस किन डीआरएम स्कीम के साथ काम करता है, यह डिवाइस बनाने वाली कंपनी तय करती है.
Android DRM फ़्रेमवर्क को दो आर्किटेक्चर लेयर में लागू किया जाता है (तीसरी इमेज देखें):
-
यह एक DRM फ़्रेमवर्क एपीआई है. इसे Android ऐप्लिकेशन फ़्रेमवर्क के ज़रिए ऐप्लिकेशन के लिए उपलब्ध कराया जाता है. साथ ही, यह स्टैंडर्ड ऐप्लिकेशन के लिए ART VM के ज़रिए काम करता है.
-
यह नेटिव कोड वाला डीआरएम मैनेजर है. यह डीआरएम फ़्रेमवर्क लागू करता है और डीआरएम प्लग-इन (एजेंट) के लिए एक इंटरफ़ेस उपलब्ध कराता है. इससे अलग-अलग डीआरएम स्कीम के लिए, अधिकारों को मैनेज करने और डिक्रिप्ट करने में मदद मिलती है

तीसरी इमेज. Android प्लैटफ़ॉर्म पर डीआरएम का आर्किटेक्चर.

