सिस्टम और कर्नेल की सुरक्षा

ऑपरेटिंग सिस्टम के स्तर पर, Android प्लैटफ़ॉर्म Linux कर्नेल की सुरक्षा देता है. साथ ही, यह सुरक्षित इंटर-प्रोसेस कम्यूनिकेशन (आईपीसी) सुविधा भी देता है, ताकि अलग-अलग प्रोसेस में चल रहे ऐप्लिकेशन के बीच सुरक्षित तरीके से बातचीत की जा सके. ओएस लेवल पर मौजूद सुरक्षा सुविधाओं से यह पक्का होता है कि ऐप्लिकेशन सैंडबॉक्स में, नेटिव कोड भी सीमित हो. इस सिस्टम को इस तरह डिज़ाइन किया गया है कि ऐप्लिकेशन में किए गए व्यवहार या किसी ऐप्लिकेशन के जोखिम की आशंका की वजह से, इस सिस्टम को अन्य ऐप्लिकेशन, Android सिस्टम या डिवाइस को नुकसान पहुंचने से रोका जा सके. अपने डिवाइसों पर कर्नेल को मज़बूत बनाने के तरीकों के बारे में जानने के लिए, Kernel कॉन्फ़िगरेशन देखें. ज़रूरी सेटिंग के बारे में जानने के लिए, 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 के लिए एनएफ़सी से जुड़ी भरोसेमंद जगह. डिवाइस के खोने या चोरी होने के मामले में, स्टोरेज एन्क्रिप्ट (सुरक्षित) करने की सुविधा यह पक्का करती है कि उपयोगकर्ता का डेटा, उसकी लॉकस्क्रीन क्रेडेंशियल के बिना ऐक्सेस न किया जा सके.

उपयोगकर्ता की सुरक्षा से जुड़ी सुविधाएं

स्टोरेज को एन्क्रिप्ट (सुरक्षित) करना

CDD के लिए ज़रूरी है कि Android 10 या उसके बाद के वर्शन के साथ लॉन्च होने वाले सभी डिवाइस और Android 6.0 या इसके बाद के वर्शन के साथ लॉन्च होने वाले ज़्यादातर डिवाइस, स्टोरेज को एन्क्रिप्ट (सुरक्षित) करने की सुविधा चालू करें.

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

मेटाडेटा एन्क्रिप्ट (सुरक्षित) करने की सुविधा, फ़ाइल को एन्क्रिप्ट (सुरक्षित) करने की सुविधा के साथ काम करती है. यह उपयोगकर्ता के डेटा वाले हिस्से में उन सभी ब्लॉक को एन्क्रिप्ट करता है जिन्हें पहले से फ़ाइल के आधार पर एन्क्रिप्ट (सुरक्षित) नहीं किया गया है. इसके लिए, एक ऐसी कुंजी का इस्तेमाल किया जाता है जो किसी उपयोगकर्ता के लॉकस्क्रीन क्रेडेंशियल तक सीमित नहीं होती, लेकिन फिर भी वेरिफ़ाइड बूट की मदद से सुरक्षित होती है.

लॉकस्क्रीन पर क्रेडेंशियल की सुरक्षा

Android को कॉन्फ़िगर किया जा सकता है, ताकि किसी डिवाइस का ऐक्सेस देने से पहले, उपयोगकर्ता के दिए गए लॉकस्क्रीन क्रेडेंशियल (पिन, पासवर्ड या पैटर्न) की पुष्टि की जा सके. लॉकस्क्रीन क्रेडेंशियल, डिवाइस के बिना अनुमति के इस्तेमाल को रोकने के अलावा, एन्क्रिप्ट (सुरक्षित) किए गए डेटा के लिए क्रिप्टोग्राफ़िक कुंजी की सुरक्षा करता है. डिवाइस के एडमिन के लिए, लॉकस्क्रीन क्रेडेंशियल और/या क्रेडेंशियल के लिए तय किए गए मुश्किल नियमों का इस्तेमाल करना ज़रूरी हो सकता है.

डिवाइस का व्‍यवस्‍थापन

Android 2.2 और उसके बाद के वर्शन में, Android डिवाइस एडमिनिस्ट्रेशन एपीआई उपलब्ध होता है. यह एपीआई, सिस्टम लेवल पर डिवाइस को मैनेज करने की सुविधाएं देता है. उदाहरण के लिए, पहले से मौजूद Android ईमेल ऐप्लिकेशन, Exchange की सुविधा को बेहतर बनाने के लिए एपीआई का इस्तेमाल करता है. ईमेल ऐप्लिकेशन की मदद से, Exchange एडमिन सभी डिवाइसों पर लॉकस्क्रीन क्रेडेंशियल से जुड़ी नीतियां लागू कर सकते हैं. इन नीतियों में अक्षर और अंक वाले पासवर्ड या अंकों वाले पिन शामिल हैं. एडमिन, खोए या चोरी हुए हैंडसेट को किसी भी जगह से वाइप भी कर सकते हैं. इसका मतलब है कि वे हैंडसेट को फ़ैक्ट्री डिफ़ॉल्ट सेटिंग पर वापस ला सकते हैं.

Android सिस्टम के साथ शामिल ऐप्लिकेशन में इस्तेमाल के अलावा, ये एपीआई डिवाइस मैनेजमेंट की सेवा देने वाले तीसरे पक्ष के लोगों के लिए उपलब्ध हैं. एपीआई के बारे में जानकारी, डिवाइस एडमिन पेज पर दी गई है.