ऑपरेटिंग सिस्टम के लेवल पर, Android प्लैटफ़ॉर्म, Linux kernel की सुरक्षा के साथ-साथ, इंटर-प्रोसेस कम्यूनिकेशन (आईपीसी) की सुरक्षित सुविधा भी उपलब्ध कराता है. इससे अलग-अलग प्रोसेस में चल रहे ऐप्लिकेशन के बीच सुरक्षित तरीके से कम्यूनिकेट किया जा सकता है. ओएस लेवल पर मौजूद सुरक्षा सुविधाओं से यह पक्का होता है कि ऐप्लिकेशन सैंडबॉक्स में, नेटिव कोड भी सीमित हो. भले ही, वह कोड, ऐप्लिकेशन के व्यवहार की वजह से शामिल किया गया हो या ऐप्लिकेशन की किसी कमजोरी का फ़ायदा उठाने के लिए, सिस्टम को इस तरह से डिज़ाइन किया गया है कि वह नुकसान पहुंचाने वाले ऐप्लिकेशन को, अन्य ऐप्लिकेशन, Android सिस्टम या डिवाइस को नुकसान पहुंचाने से रोक सके. ज़रूरी सेटिंग के बारे में जानने के लिए, Android के साथ काम करने की जानकारी देने वाला दस्तावेज़ (सीडीडी) देखें.
Linux की सुरक्षा
Android प्लैटफ़ॉर्म का आधार, Linux kernel है. Linux के kernel का इस्तेमाल कई सालों से किया जा रहा है. साथ ही, इसका इस्तेमाल सुरक्षा से जुड़े लाखों एनवायरमेंट में किया जाता है. Linux को लेकर, हजारों डेवलपर ने लगातार रिसर्च की है, उस पर हमले किए हैं, और उसमें सुधार किए हैं. इस वजह से, Linux एक ऐसा केरल बन गया है जो स्थिर और सुरक्षित है. कई कंपनियां और सुरक्षा विशेषज्ञ, इस पर भरोसा करते हैं.
मोबाइल कंप्यूटिंग एनवायरमेंट के आधार के तौर पर, Linux kernel, Android को सुरक्षा से जुड़ी कई अहम सुविधाएं देता है. इनमें ये भी शामिल हैं:
- उपयोगकर्ता के हिसाब से अनुमतियों का मॉडल
- प्रोसेस को अलग करना
- सुरक्षित आईपीसी के लिए, एक्सटेंसिबल मेकेनिज्म
- कर्नेल के ग़ैर-ज़रूरी और संभावित रूप से असुरक्षित हिस्सों को हटाने की सुविधा
Linux एक मल्टी-यूज़र ऑपरेटिंग सिस्टम है. इसलिए, सुरक्षा के लिहाज़ से, Linux kernel का मुख्य मकसद, उपयोगकर्ता के संसाधनों को एक-दूसरे से अलग करना है. Linux के सुरक्षा फ़िलॉज़ोफ़ी का मकसद, उपयोगकर्ता के संसाधनों को एक-दूसरे से सुरक्षित रखना है. इसके लिए, Linux:
- उपयोगकर्ता A को उपयोगकर्ता B की फ़ाइलें पढ़ने से रोकता है
- यह पक्का करता है कि उपयोगकर्ता A, उपयोगकर्ता B की मेमोरी का पूरा इस्तेमाल न करे
- यह पक्का करता है कि उपयोगकर्ता A, उपयोगकर्ता B के सीपीयू संसाधनों का इस्तेमाल न करे
- यह पक्का करना कि उपयोगकर्ता A, उपयोगकर्ता B के डिवाइसों (उदाहरण के लिए, टेलीफ़ोन, जीपीएस, और ब्लूटूथ) का इस्तेमाल ज़्यादा न करे
ऐप्लिकेशन सैंडबॉक्स
Android के ऐप्लिकेशन की सुरक्षा, ऐप्लिकेशन सैंडबॉक्स की मदद से की जाती है. यह ऐप्लिकेशन को एक-दूसरे से अलग रखता है. साथ ही, ऐप्लिकेशन और सिस्टम को नुकसान पहुंचाने वाले ऐप्लिकेशन से सुरक्षित रखता है. ज़्यादा जानकारी के लिए, ऐप्लिकेशन सैंडबॉक्स देखें.
सिस्टम पार्टीशन और सुरक्षित मोड
पूरी सुरक्षा वाले अलग-अलग पार्टीशन में, Android के साथ-साथ ऑपरेटिंग सिस्टम की लाइब्रेरी, ऐप्लिकेशन रनटाइम, ऐप्लिकेशन फ़्रेमवर्क, और ऐप्लिकेशन भी शामिल होते हैं. यह पार्टीशन, रीड-ओनली मोड पर सेट है. जब कोई उपयोगकर्ता डिवाइस को सुरक्षित मोड में बूट करता है, तो तीसरे पक्ष के ऐप्लिकेशन को डिवाइस के मालिक मैन्युअल तरीके से लॉन्च कर सकते हैं. हालांकि, ये ऐप्लिकेशन डिफ़ॉल्ट रूप से लॉन्च नहीं होते.
फ़ाइल सिस्टम की अनुमतियां
यूनिक्स-स्टाइल वाले एनवायरमेंट में, फ़ाइल सिस्टम की अनुमतियां यह पक्का करती हैं कि कोई उपयोगकर्ता, दूसरे उपयोगकर्ता की फ़ाइलों में बदलाव न कर सके या उन्हें न पढ़ सके. Android के मामले में, हर ऐप्लिकेशन अपने उपयोगकर्ता के तौर पर काम करता है. जब तक डेवलपर, फ़ाइलों को अन्य ऐप्लिकेशन के साथ साफ़ तौर पर शेयर नहीं करता, तब तक किसी एक ऐप्लिकेशन से बनाई गई फ़ाइलों को कोई दूसरा ऐप्लिकेशन न तो पढ़ सकता है और न ही उनमें बदलाव कर सकता है.
Security-Enhanced Linux
Android, ऐक्सेस कंट्रोल की नीतियों को लागू करने और प्रोसेस पर ज़रूरी ऐक्सेस कंट्रोल (mac) लागू करने के लिए, बेहतर सुरक्षा देने वाले Linux (SELinux) का इस्तेमाल करता है. ज़्यादा जानकारी के लिए, Android में बेहतर सुरक्षा वाला लिनक्स देखें .
वेरिफ़ाइड बूट
Android 7.0 और इसके बाद के वर्शन पर, पुष्टि किए गए बूट की सुविधा सख्ती से लागू होती है. इसका मतलब है कि ज़्यादातर हैक किए गए डिवाइस, बूट नहीं कर पाएंगे. वेरिफ़ाइड बूट की सुविधा, डिवाइस के सॉफ़्टवेयर के सही होने की गारंटी देती है. यह सुविधा, हार्डवेयर रूट ऑफ़ ट्रस्ट से लेकर सिस्टम के सेगमेंट तक काम करती है. बूट के दौरान, हर चरण को क्रिप्टोग्राफ़िक तरीके से पुष्टि की जाती है. इससे, अगले चरण को लागू करने से पहले, उसकी इंटेग्रिटी और पुष्टि की जाती है.
ज़्यादा जानकारी के लिए, पुष्टि किए गए
बूट देखें.
क्रिप्टोग्राफी
Android, ऐप्लिकेशन के इस्तेमाल के लिए क्रिप्टोग्राफ़िक एपीआई का एक सेट उपलब्ध कराता है. इनमें एईएस, आरएसए, डीएसए, और एसएचए जैसे स्टैंडर्ड और आम तौर पर इस्तेमाल किए जाने वाले क्रिप्टोग्राफ़िक प्राइमिटिव को लागू करना शामिल है. इसके अलावा, एसएसएल और एचटीटीपीएस जैसे बेहतर लेवल के प्रोटोकॉल के लिए भी एपीआई उपलब्ध कराए जाते हैं.
Android 4.0 में KeyChain क्लास को शामिल किया गया था, ताकि ऐप्लिकेशन निजी कुंजियों और सर्टिफ़िकेट चेन के लिए, सिस्टम क्रेडेंशियल स्टोरेज का इस्तेमाल कर सकें.
डिवाइस को रूट करना
डिफ़ॉल्ट रूप से, Android पर सिर्फ़ कर्नेल और मुख्य सेवाओं का एक छोटा सबसेट, रूट अनुमतियों के साथ चलता है. SELinux अब भी उपयोगकर्ता स्पेस में, रूट के तौर पर चल रही प्रोसेस पर पाबंदी लगाता है. पुष्टि किए गए बूट की सुविधा, रूट अनुमतियों वाले उपयोगकर्ता या सेवा को ऑपरेटिंग सिस्टम में हमेशा के लिए बदलाव करने से रोकती है.
Android प्लैटफ़ॉर्म पर काम करने वाले डेवलपर के लिए, अपने मालिकाना हक वाले Android डिवाइस में बदलाव करना ज़रूरी है. कई Android डिवाइसों पर, उपयोगकर्ताओं के पास bootloader को अनलॉक करने का विकल्प होता है, ताकि वे किसी अन्य ऑपरेटिंग सिस्टम को इंस्टॉल कर सकें. इन अन्य ऑपरेटिंग सिस्टम की मदद से, डिवाइस के मालिक को ऐप्लिकेशन और सिस्टम के कॉम्पोनेंट को डीबग करने के लिए, रूट ऐक्सेस मिल सकता है. इसके अलावा, Android एपीआई के ज़रिए ऐप्लिकेशन को उपलब्ध न कराई गई सुविधाओं को ऐक्सेस करने के लिए भी, मालिक को रूट ऐक्सेस मिल सकता है.
कुछ डिवाइसों पर, यूएसबी केबल और डिवाइस के फ़िज़िकल कंट्रोल का इस्तेमाल करके, कोई व्यक्ति नया ऑपरेटिंग सिस्टम इंस्टॉल कर सकता है. इससे उपयोगकर्ता को रूट की अनुमतियां मिलती हैं. उपयोगकर्ता के मौजूदा डेटा को हैक होने से बचाने के लिए, bootloader अनलॉक करने के तरीके के तहत, bootloader को उपयोगकर्ता के मौजूदा डेटा को मिटाना होगा. कर्नेल बग या सुरक्षा से जुड़ी किसी समस्या का फ़ायदा उठाकर, रूट ऐक्सेस हासिल करने पर, यह सुरक्षा बायपास की जा सकती है.
डिवाइस पर सेव की गई कुंजी से डेटा को एन्क्रिप्ट (सुरक्षित) करने पर, रूट किए गए डिवाइसों पर ऐप्लिकेशन के डेटा को रूट उपयोगकर्ताओं से सुरक्षित नहीं रखा जा सकता. ऐप्लिकेशन, डिवाइस से बाहर सेव की गई कुंजी का इस्तेमाल करके, डेटा को एन्क्रिप्ट (सुरक्षित) करके, डेटा की सुरक्षा को बेहतर बना सकते हैं. जैसे, किसी सर्वर या उपयोगकर्ता के पासवर्ड पर. कुंजी मौजूद न होने पर, यह तरीका कुछ समय के लिए सुरक्षा दे सकता है. हालांकि, किसी समय पर ऐप्लिकेशन को कुंजी देनी होगी. इसके बाद, रूट उपयोगकर्ता उसे ऐक्सेस कर पाएंगे.
डेटा को रूट उपयोगकर्ताओं से सुरक्षित रखने के लिए, हार्डवेयर सलूशन का इस्तेमाल करना एक बेहतर तरीका है. OEM, हार्डवेयर से जुड़े ऐसे समाधान लागू कर सकते हैं जिनसे वीडियो चलाने के लिए डीआरएम या Google Wallet के लिए एनएफ़सी से जुड़े भरोसेमंद स्टोरेज जैसे खास तरह के कॉन्टेंट का ऐक्सेस सीमित हो. अगर आपका डिवाइस खो जाता है या चोरी हो जाता है, तो स्टोरेज को एन्क्रिप्ट (सुरक्षित) करने की सुविधा से यह पक्का होता है कि उपयोगकर्ता के लॉकस्क्रीन क्रेडेंशियल के बिना, उसका डेटा ऐक्सेस न किया जा सके.
उपयोगकर्ता की सुरक्षा से जुड़ी सुविधाएं
स्टोरेज को एन्क्रिप्ट (सुरक्षित) करना
सीडीडी के मुताबिक, Android 10 या इसके बाद के वर्शन पर लॉन्च होने वाले सभी डिवाइसों और Android 6.0 या इसके बाद के वर्शन पर लॉन्च होने वाले ज़्यादातर डिवाइसों में, स्टोरेज एन्क्रिप्शन की सुविधा पहले से चालू होनी चाहिए.
Android में स्टोरेज एन्क्रिप्शन की सुविधा, मेटाडेटा एन्क्रिप्शन के साथ फ़ाइल के आधार पर एन्क्रिप्शन के तौर पर लागू की गई है. फ़ाइल-आधारित एन्क्रिप्शन, उपयोगकर्ता डेटा वाले पार्टीशन पर फ़ाइल के कॉन्टेंट और नामों को साफ़ तौर पर एन्क्रिप्ट करता है. इसके लिए, अलग-अलग डायरेक्ट्री के लिए अलग-अलग कुंजियों का इस्तेमाल किया जाता है. यह हर उपयोगकर्ता के लिए, क्रेडेंशियल से एन्क्रिप्ट (सुरक्षित) की गई और डिवाइस से एन्क्रिप्ट (सुरक्षित) की गई स्टोरेज डायरेक्ट्री उपलब्ध कराता है. इनमें, वर्क प्रोफ़ाइलें भी शामिल हैं.
मेटाडेटा एन्क्रिप्शन, फ़ाइल के आधार पर एन्क्रिप्शन के साथ काम करता है. यह उपयोगकर्ता डेटा वाले ऐसे सभी ब्लॉक को एन्क्रिप्ट करता है जो फ़ाइल-आधारित एन्क्रिप्शन की मदद से पहले से एन्क्रिप्ट नहीं किए गए हैं. इसके लिए, यह ऐसी कुंजी का इस्तेमाल करता है जो किसी उपयोगकर्ता के लॉकस्क्रीन क्रेडेंशियल से जुड़ी नहीं होती. हालांकि, यह कुंजी अब भी पुष्टि किए गए बूट की मदद से सुरक्षित होती है.
लॉकस्क्रीन पर क्रेडेंशियल की सुरक्षा
Android को कॉन्फ़िगर किया जा सकता है, ताकि किसी डिवाइस का ऐक्सेस देने से पहले, उपयोगकर्ता के दिए गए लॉकस्क्रीन क्रेडेंशियल (पिन, पासवर्ड या पैटर्न) की पुष्टि की जा सके. डिवाइस के गलत इस्तेमाल को रोकने के अलावा, लॉकस्क्रीन क्रेडेंशियल, क्रेडेंशियल से एन्क्रिप्ट (सुरक्षित) किए गए डेटा के लिए क्रिप्टोग्राफ़िक कुंजी को सुरक्षित रखता है. डिवाइस के एडमिन के लिए, लॉकस्क्रीन क्रेडेंशियल और/या क्रेडेंशियल के लिए तय किए गए मुश्किल नियमों का इस्तेमाल करना ज़रूरी हो सकता है.
डिवाइस का व्यवस्थापन
Android 2.2 और उसके बाद के वर्शन में, Android डिवाइस एडमिनिस्ट्रेशन एपीआई उपलब्ध होता है. यह एपीआई, सिस्टम लेवल पर डिवाइस को मैनेज करने की सुविधाएं देता है. उदाहरण के लिए, पहले से मौजूद Android ईमेल ऐप्लिकेशन, Exchange की सुविधा को बेहतर बनाने के लिए एपीआई का इस्तेमाल करता है. ईमेल ऐप्लिकेशन की मदद से, Exchange एडमिन सभी डिवाइसों पर, लॉकस्क्रीन पर क्रेडेंशियल डालने से जुड़ी नीतियां लागू कर सकते हैं. इनमें अक्षरों और अंकों वाले पासवर्ड या अंकों वाले पिन शामिल हैं. एडमिन, खोए या चोरी हुए हैंडसेट को किसी भी जगह से वाइप कर सकते हैं. इसका मतलब है कि वे हैंडसेट को फ़ैक्ट्री डिफ़ॉल्ट सेटिंग पर वापस ला सकते हैं.
Android सिस्टम में शामिल ऐप्लिकेशन में इस्तेमाल करने के अलावा, ये एपीआई डिवाइस मैनेजमेंट के समाधान देने वाली तीसरे पक्ष की कंपनियों के लिए भी उपलब्ध हैं. एपीआई के बारे में जानकारी, डिवाइस एडमिनिस्ट्रेशन में दी गई है.