सुरक्षा से जुड़े सुधार

Android, सुरक्षा से जुड़ी सुविधाओं और ऑफ़र को लगातार बेहतर बनाता रहता है. बाईं ओर मौजूद नेविगेशन में, रिलीज़ के हिसाब से बेहतर सुविधाओं की सूचियां देखें.

Android 14

Every Android release includes dozens of security enhancements to protect users. Here are some of the major security enhancements available in Android 14:

  • Hardware-assisted AddressSanitizer (HWASan), introduced in Android 10, is a memory error detection tool similar to AddressSanitizer. Android 14 brings significant improvements to HWASan. Learn how it helps prevent bugs from making it into Android releases, HWAddressSanitizer
  • In Android 14, starting with apps that share location data with third-parties, the system runtime permission dialog now includes a clickable section that highlights the app's data-sharing practices, including information such as why an app may decide to share data with third parties.
  • Android 12 introduced an option to disable 2G support at the modem level, which protects users from the inherent security risk from 2G's obsolete security model. Recognizing how critical disabling 2G could be for enterprise customers, Android 14 enables this security feature in Android Enterprise, introducing support for IT admins to restrict the ability of a managed device to downgrade to 2G connectivity.
  • Added support to reject null-ciphered cellular connections, ensuring that circuit-switched voice and SMS traffic is always encrypted and protected from passive over-the-air interception. Learn more about Android's program to harden cellular connectivity.
  • Added support for multiple IMEIs
  • Since Android 14, AES-HCTR2 is the preferred mode of filenames encryption for devices with accelerated cryptography instructions.
  • Cellular connectivity
  • Documentation added for Android Safety Center
  • If your app targets Android 14 and uses Dynamic Code Loading (DCL), all dynamically-loaded files must be marked as read-only. Otherwise, the system throws an exception. We recommend that apps avoid dynamically loading code whenever possible, as doing so greatly increases the risk that an app can be compromised by code injection or code tampering.

Check out our full AOSP release notes and the Android Developer features and changes list.

Android 13

Every Android release includes dozens of security enhancements to protect users. Here are some of the major security enhancements available in Android 13:

  • Android 13 adds multi-document presentation support. This new Presentation Session interface enables an app to do a multi-document presentation, something which isn't possible with the existing API. For further information, refer to Identity Credential
  • In Android 13, intents originating from external apps are delivered to an exported component if and only if the intents match their declared intent-filter elements.
  • Open Mobile API (OMAPI) is a standard API used to communicate with a device's Secure Element. Before Android 13, only apps and framework modules had access to this interface. By converting it to a vendor stable interface, HAL modules are also capable of communicating with the secure elements through the OMAPI service. For more information, see OMAPI Vendor Stable Interface.
  • As of Android 13-QPR, shared UIDs are deprecated. Users of Android 13 or higher should put the line `android:sharedUserMaxSdkVersion="32"` in their manifest. This entry prevents new users from getting a shared UID. For further information on UIDs, see App signing.
  • Android 13 added support Keystore symmetric cryptographic primitives such as AES (Advanced Encryption Standard), HMAC (Keyed-Hash Message Authentication Code), and asymmetric cryptographic algorithms (including Elliptic Curve, RSA2048, RSA4096, and Curve 25519)
  • Android 13 (API level 33) and higher supports a runtime permission for sending non-exempt notifications from an app. This gives users control over which permission notifications they see.
  • Added per-use prompt for apps requesting access to all device logs, giving users the ability to allow or deny access.
  • introduced the Android Virtualization Framework (AVF), which brings together different hypervisors under one framework with standardized APIs. It provides secure and private execution environments for executing workloads isolated by hypervisor.
  • Introduced APK signature scheme v3.1 All new key rotations that use apksigner use the v3.1 signature scheme by default to target rotation for Android 13 and higher.

Check out our full AOSP release notes and the Android Developer features and changes list.

Android 12

Every Android release includes dozens of security enhancements to protect users. Here are some of the major security enhancements available in Android 12:

  • Android 12 introduces the BiometricManager.Strings API, which provides localized strings for apps that use BiometricPrompt for authentication. These strings are intended to be device-aware and provide more specificity about which authentication types might be used. Android 12 also includes support for under-display fingerprint sensors
  • Support added for under-display fingerprint sensors
  • Introduction of the Fingerprint Android Interface Definition Language (AIDL)
  • Support for new Face AIDL
  • Introduction of Rust as a language for platform development
  • The option for users to grant access only to their approximate location added
  • Added Privacy indicators on the status bar when an app is using the camera or microphone
  • Android's Private Compute Core (PCC)
  • Added an option to disable 2G support

Android 11

Every Android release includes dozens of security enhancements to protect users. For a list of some of the major security enhancements available in Android 11, see the Android Release Notes.

Android 10

Android के हर रिलीज़ में, उपयोगकर्ताओं को सुरक्षित रखने के लिए सुरक्षा से जुड़ी कई सुविधाएं शामिल की जाती हैं. Android 10 में सुरक्षा और निजता से जुड़ी कई सुविधाएं बेहतर की गई हैं. Android 10 में हुए बदलावों की पूरी सूची के लिए, Android 10 के रिलीज़ नोट देखें.

सुरक्षा

BoundsSanitizer

Android 10, ब्लूटूथ और कोडेक में BoundsSanitizer (BoundSan) को डिप्लॉय करता है. BoundSan, UBSan के bounds sanitizer का इस्तेमाल करता है. यह समस्या हल करने की सुविधा, हर मॉड्यूल के लेवल पर चालू होती है. इससे Android के अहम कॉम्पोनेंट को सुरक्षित रखने में मदद मिलती है. इसलिए, इसे बंद नहीं किया जाना चाहिए. BoundSan इन कोडेक में चालू है:

  • libFLAC
  • libavcdec
  • libavcenc
  • libhevcdec
  • libmpeg2
  • libopus
  • libvpx
  • libspeexresampler
  • libvorbisidec
  • libaac
  • libxaac

सिर्फ़ एक्ज़ीक्यूट करने के लिए मेमोरी

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

एक्सटेंडेड ऐक्सेस

भरोसेमंद एजेंट, तीसरे पक्ष की पुष्टि करने वाले तरीकों, जैसे कि Smart Lock के लिए इस्तेमाल किए जाने वाले बुनियादी तरीके हैं. ये एजेंट, Android 10 में ही डिवाइस के अनलॉक होने की अवधि बढ़ा सकते हैं. भरोसेमंद एजेंट, अब लॉक किए गए डिवाइस को अनलॉक नहीं कर सकते. साथ ही, वे किसी डिवाइस को ज़्यादा से ज़्यादा चार घंटे तक ही अनलॉक रख सकते हैं.

चेहरे से अनलॉक करें

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

पूर्णांक के ओवरफ़्लो को सैनिटाइज़ करना

Android 10, सॉफ़्टवेयर कोडेक में इंटिजर ओवरफ़्लो को ठीक करने की सुविधा (IntSan) चालू करता है. पक्का करें कि डिवाइस के हार्डवेयर पर काम न करने वाले कोडेक के लिए, वीडियो चलाने की परफ़ॉर्मेंस ठीक हो. IntSan इन कोडेक में चालू है:

  • libFLAC
  • libavcdec
  • libavcenc
  • libhevcdec
  • libmpeg2
  • libopus
  • libvpx
  • libspeexresampler
  • libvorbisidec

मॉड्यूलर सिस्टम के कॉम्पोनेंट

Android 10, Android सिस्टम के कुछ कॉम्पोनेंट को मॉड्यूलर बनाता है. इससे, उन्हें Android के सामान्य रिलीज़ साइकल के बाहर अपडेट किया जा सकता है. कुछ मॉड्यूल में ये शामिल हैं:

OEMCrypto

Android 10, OEMCrypto API के वर्शन 15 का इस्तेमाल करता है.

Scudo

Scudo, डाइनैमिक उपयोगकर्ता-मोड मेमोरी ऐलोकेटर है. इसे हेप से जुड़ी कमजोरियों से ज़्यादा सुरक्षित रखने के लिए डिज़ाइन किया गया है. यह स्टैंडर्ड C एलोकेशन और डिएलोकेशन प्राइमिटिव के साथ-साथ C++ प्राइमिटिव भी उपलब्ध कराता है.

ShadowCallStack

ShadowCallStack (SCS) एक LLVM इंस्ट्रूमेंटेशन मोड है. यह रिटर्न पते को ओवरराइट होने (जैसे कि स्टैक बफ़र ओवरफ़्लो) से बचाता है. इसके लिए, यह किसी फ़ंक्शन के रिटर्न पते को, अलग से लिए गए ShadowCallStack इंस्टेंस में सेव करता है. यह इंस्टेंस, नॉन-लीफ़ फ़ंक्शन के फ़ंक्शन प्रोलॉग में होता है. साथ ही, यह फ़ंक्शन एपिलॉग में ShadowCallStack इंस्टेंस से रिटर्न पता लोड करता है.

WPA3 और Wi-Fi Enhanced Open

Android 10 में वाई-फ़ाई प्रोटेक्टेड ऐक्सेस 3 (WPA3) और वाई-फ़ाई बेहतर ओपन सिक्योरिटी स्टैंडर्ड के लिए सहायता जोड़ी गई है. इससे, जाने-पहचाने हमलों से बेहतर निजता और सुरक्षा मिलती है.

निजता

Android 9 या इससे पहले के वर्शन को टारगेट करते समय ऐप्लिकेशन का ऐक्सेस

अगर आपका ऐप्लिकेशन Android 10 या उसके बाद के वर्शन पर काम करता है, लेकिन Android 9 (एपीआई लेवल 28) या उससे पहले के वर्शन को टारगेट करता है, तो प्लैटफ़ॉर्म इस तरह काम करता है:

  • अगर आपके ऐप्लिकेशन में ACCESS_FINE_LOCATION या ACCESS_COARSE_LOCATION के लिए <uses-permission> एलिमेंट का एलान किया गया है, तो इंस्टॉलेशन के दौरान सिस्टम, ACCESS_BACKGROUND_LOCATION के लिए <uses-permission> एलिमेंट अपने-आप जोड़ देता है.
  • अगर आपका ऐप्लिकेशन ACCESS_FINE_LOCATION या ACCESS_COARSE_LOCATION का अनुरोध करता है, तो सिस्टम अनुरोध में ACCESS_BACKGROUND_LOCATION को अपने-आप जोड़ देता है.

बैकग्राउंड गतिविधि पर पाबंदियां

Android 10 में, सिस्टम बैकग्राउंड से गतिविधियां शुरू करने पर पाबंदियां लगाता है. इस बदलाव से, उपयोगकर्ता को कम रुकावटों का सामना करना पड़ता है. साथ ही, उपयोगकर्ता के पास अपनी स्क्रीन पर दिखने वाली जानकारी को कंट्रोल करने का ज़्यादा विकल्प होता है. जब तक आपका ऐप्लिकेशन, उपयोगकर्ता के इंटरैक्शन के सीधे नतीजे के तौर पर गतिविधियां शुरू करता है, तब तक इन पाबंदियों का आपके ऐप्लिकेशन पर असर पड़ने की संभावना नहीं है.
बैकग्राउंड से गतिविधियां शुरू करने के सुझाए गए विकल्प के बारे में ज़्यादा जानने के लिए, अपने ऐप्लिकेशन में समय के हिसाब से ज़रूरी इवेंट के बारे में उपयोगकर्ताओं को सूचना देने का तरीका बताने वाली गाइड देखें.

कैमरे का मेटाडेटा

Android 10, getCameraCharacteristics() तरीका से डिफ़ॉल्ट रूप से मिलने वाली जानकारी में बदलाव करता है. खास तौर पर, आपके ऐप्लिकेशन के पास CAMERA अनुमति होनी चाहिए, ताकि वह इस तरीके की रिटर्न वैल्यू में शामिल, डिवाइस के हिसाब से मेटाडेटा को ऐक्सेस कर सके.
इन बदलावों के बारे में ज़्यादा जानने के लिए, ऐसे कैमरा फ़ील्ड के बारे में सेक्शन देखें जिनके लिए अनुमति की ज़रूरत होती है.

क्लिपबोर्ड का डेटा

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

डिवाइस की जगह की जानकारी

Android 10 में ACCESS_BACKGROUND_LOCATION अनुमति को शामिल किया गया है. इससे उपयोगकर्ताओं को यह कंट्रोल करने में मदद मिलती है कि ऐप्लिकेशन को जगह की जानकारी का ऐक्सेस कब दिया जाए.
ACCESS_FINE_LOCATION और ACCESS_COARSE_LOCATION अनुमतियों के उलट, ACCESS_BACKGROUND_LOCATION अनुमति का असर सिर्फ़ तब पड़ता है, जब ऐप्लिकेशन बैकग्राउंड में चल रहा हो. जब तक किसी ऐप्लिकेशन के लिए इनमें से कोई एक शर्त पूरी नहीं होती, तब तक उसे बैकग्राउंड में जगह की जानकारी ऐक्सेस करने वाला ऐप्लिकेशन माना जाता है:

  • ऐप्लिकेशन से जुड़ी कोई गतिविधि दिख रही हो.
  • ऐप्लिकेशन, ऐसी फ़ोरग्राउंड सेवा चला रहा है जिसने location के फ़ोरग्राउंड सेवा टाइप का एलान किया है.
    अपने ऐप्लिकेशन में किसी सेवा के लिए, फ़ोरग्राउंड सेवा के टाइप का एलान करने के लिए, अपने ऐप्लिकेशन के targetSdkVersion या compileSdkVersion को 29 या उससे ज़्यादा पर सेट करें. इस बारे में ज़्यादा जानें कि फ़ोरग्राउंड सेवाएं, उपयोगकर्ता की शुरू की गई उन कार्रवाइयों को जारी कैसे रख सकती हैं जिनके लिए जगह की जानकारी का ऐक्सेस ज़रूरी है.

बाहरी मेमोरी

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

  • ऐप्लिकेशन के हिसाब से बनी डायरेक्ट्री में मौजूद फ़ाइलें, जिन्हें getExternalFilesDir() का इस्तेमाल करके ऐक्सेस किया जाता है.
  • मीडिया स्टोर से ऐप्लिकेशन ने जो फ़ोटो, वीडियो, और ऑडियो क्लिप बनाई हैं.

स्कोप वाले स्टोरेज के बारे में ज़्यादा जानने के साथ-साथ, बाहरी स्टोरेज वाले डिवाइसों पर सेव की गई फ़ाइलों को शेयर करने, ऐक्सेस करने, और उनमें बदलाव करने का तरीका जानने के लिए, बाहरी स्टोरेज में फ़ाइलों को मैनेज करने और मीडिया फ़ाइलों को ऐक्सेस करने और उनमें बदलाव करने के बारे में गाइड देखें.

एमएसी पते को रैंडम पर सेट करना

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

  • अपने-आप चुना गया मैक पता पाना: डिवाइस के मालिक के ऐप्लिकेशन और प्रोफ़ाइल के मालिक के ऐप्लिकेशन, getRandomizedMacAddress() को कॉल करके किसी नेटवर्क के लिए असाइन किया गया, अपने-आप चुना गया मैक पता पा सकते हैं.
  • असल, फ़ैक्ट्री मैक पता पाना: डिवाइस के मालिक के ऐप्लिकेशन, getWifiMacAddress() को कॉल करके, डिवाइस का असल हार्डवेयर मैक पता पा सकते हैं. यह तरीका, डिवाइसों के फ़्लीट को ट्रैक करने के लिए काम का है.

ऐसे डिवाइस आइडेंटिफ़ायर जिन्हें रीसेट नहीं किया जा सकता

Android 10 के बाद, डिवाइस के ऐसे आइडेंटिफ़ायर को ऐक्सेस करने के लिए, ऐप्लिकेशन के पास READ_PRIVILEGED_PHONE_STATE खास अनुमति होनी चाहिए जिन्हें रीसेट नहीं किया जा सकता. इनमें IMEI और सीरियल नंबर, दोनों शामिल हैं.

अगर आपके ऐप्लिकेशन के पास अनुमति नहीं है और फिर भी, रीसेट नहीं किए जा सकने वाले आइडेंटिफ़ायर के बारे में जानकारी मांगी जाती है, तो टारगेट किए गए SDK टूल के वर्शन के आधार पर प्लैटफ़ॉर्म का जवाब अलग-अलग होता है:

  • अगर आपका ऐप्लिकेशन Android 10 या उसके बाद के वर्शन को टारगेट करता है, तो SecurityException ऐप्लिकेशन के लिए एक समस्या दिखती है.
  • अगर आपका ऐप्लिकेशन Android 9 (एपीआई लेवल 28) या उससे पहले के वर्शन को टारगेट करता है, तो यह तरीका null या प्लेसहोल्डर डेटा दिखाता है. हालांकि, ऐसा तब ही होता है, जब ऐप्लिकेशन के पास READ_PHONE_STATE अनुमति हो. ऐसा न होने पर, SecurityException दिखता है.

शारीरिक गतिविधि की पहचान करने की सुविधा

Android 10 में, android.permission.ACTIVITY_RECOGNITION रनटाइम की अनुमति की सुविधा जोड़ी गई है. यह सुविधा उन ऐप्लिकेशन के लिए है जिन्हें उपयोगकर्ता के कदमों की संख्या का पता लगाना है या उपयोगकर्ता की शारीरिक गतिविधि की कैटगरी तय करनी है. जैसे, पैदल चलना, साइकल चलाना या वाहन चलाना. इसे इस तरह से डिज़ाइन किया गया है कि उपयोगकर्ताओं को यह जानकारी मिल सके कि सेटिंग में डिवाइस के सेंसर डेटा का इस्तेमाल कैसे किया जाता है.
Google Play services की कुछ लाइब्रेरी, नतीजे तब तक नहीं दिखातीं, जब तक उपयोगकर्ता ने आपके ऐप्लिकेशन को अनुमति न दी हो. जैसे, Activity Recognition API और Google Fit API.
डिवाइस में पहले से मौजूद सिर्फ़
कदमों की गिनती करने वाले और कदमों का पता लगाने वाले सेंसर के लिए, आपको यह अनुमति देनी होगी.
अगर आपका ऐप्लिकेशन Android 9 (एपीआई लेवल 28) या इससे पहले के वर्शन को टारगेट करता है, तो सिस्टम आपके ऐप्लिकेशन को android.permission.ACTIVITY_RECOGNITION अनुमति अपने-आप देता है. हालांकि, इसके लिए ज़रूरी है कि आपका ऐप्लिकेशन इन सभी शर्तों को पूरा करता हो:

  • मेनिफ़ेस्ट फ़ाइल में com.google.android.gms.permission.ACTIVITY_RECOGNITION अनुमति शामिल है.
  • मेनिफ़ेस्ट फ़ाइल में android.permission.ACTIVITY_RECOGNITION अनुमति शामिल नहीं है.

अगर सिस्टम अपने-आप android.permission.ACTIVITY_RECOGNITION अनुमति देता है, तो Android 10 को टारगेट करने के लिए ऐप्लिकेशन को अपडेट करने के बाद भी, आपके ऐप्लिकेशन के पास यह अनुमति बनी रहती है. हालांकि, उपयोगकर्ता कभी भी सिस्टम सेटिंग में जाकर, इस अनुमति को रद्द कर सकता है.

/proc/net फ़ाइल सिस्टम से जुड़ी पाबंदियां

Android 10 या इसके बाद के वर्शन वाले डिवाइसों पर, ऐप्लिकेशन /proc/net को ऐक्सेस नहीं कर सकते. इसमें डिवाइस के नेटवर्क की स्थिति की जानकारी शामिल होती है. जिन ऐप्लिकेशन को इस जानकारी का ऐक्सेस चाहिए, जैसे कि वीपीएन, उन्हें NetworkStatsManager या ConnectivityManager क्लास का इस्तेमाल करना चाहिए.

यूज़र इंटरफ़ेस (यूआई) से अनुमतियों के ग्रुप हटाए गए

Android 10 के बाद, ऐप्लिकेशन यह नहीं देख सकते कि यूज़र इंटरफ़ेस (यूआई) में अनुमतियां कैसे ग्रुप की गई हैं.

संपर्कों की जानकारी हटाना

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

स्क्रीन पर दिखने वाले कॉन्टेंट का ऐक्सेस सीमित करना

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

यूएसबी डिवाइस का सीरियल नंबर

अगर आपका ऐप्लिकेशन Android 10 या उसके बाद के वर्शन को टारगेट करता है, तो आपका ऐप्लिकेशन सीरियल नंबर तब तक नहीं पढ़ सकता, जब तक उपयोगकर्ता आपके ऐप्लिकेशन को यूएसबी डिवाइस या ऐक्सेसरी को ऐक्सेस करने की अनुमति नहीं देता.
यूएसबी डिवाइसों के साथ काम करने के बारे में ज़्यादा जानने के लिए, यूएसबी होस्ट को कॉन्फ़िगर करने का तरीका बताने वाली गाइड देखें.

वाई-फ़ाई

Android 10 या उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन, वाई-फ़ाई को चालू या बंद नहीं कर सकते. WifiManager.setWifiEnabled() वाला तरीका, हमेशा false दिखाता है.
अगर आपको उपयोगकर्ताओं को वाई-फ़ाई को चालू और बंद करने के लिए कहना है, तो सेटिंग पैनल का इस्तेमाल करें.

कॉन्फ़िगर किए गए वाई-फ़ाई नेटवर्क को सीधे ऐक्सेस करने पर पाबंदियां

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

Android 9

Android के हर रिलीज़ में, उपयोगकर्ताओं को सुरक्षित रखने के लिए सुरक्षा से जुड़ी कई सुविधाएं शामिल की जाती हैं. Android 9 में उपलब्ध सुरक्षा से जुड़े कुछ अहम सुधारों की सूची के लिए, Android रिलीज़ के नोट देखें.

Android 8

Android के हर रिलीज़ में, उपयोगकर्ताओं को सुरक्षित रखने के लिए सुरक्षा से जुड़ी कई सुविधाएं शामिल की जाती हैं. Android 8.0 में सुरक्षा से जुड़े कुछ मुख्य सुधार किए गए हैं. इनके बारे में यहां बताया गया है:

  • एन्क्रिप्शन (सुरक्षित) करने का तरीका. वर्क प्रोफ़ाइल में पासकोड हटाने की सुविधा जोड़ी गई.
  • वेरिफ़ाइड बूट. Android वेरिफ़ाइड बूट (एवीबी) जोड़ा गया. पुष्टि किया गया बूट कोडबेस, जो रोलबैक सुरक्षा के साथ काम करता है. इसे AOSP में जोड़े गए बूट लोडर में इस्तेमाल किया जा सकता है. HLOS के लिए, रोलबैक की सुरक्षा के लिए बूटलोडर की सहायता का सुझाव दें. हमारा सुझाव है कि बूट लोडर को सिर्फ़ डिवाइस के साथ इंटरैक्ट करके अनलॉक किया जा सकता है.
  • लॉक स्क्रीन. लॉक स्क्रीन क्रेडेंशियल की पुष्टि करने के लिए, छेड़छाड़ के लिए सुरक्षित हार्डवेयर का इस्तेमाल करने की सुविधा जोड़ी गई.
  • KeyStore. Android 8.0 और उसके बाद के वर्शन वाले सभी डिवाइसों के लिए, कुंजी की पुष्टि करना ज़रूरी है. ज़ीरो-टच रजिस्ट्रेशन की सुविधा को बेहतर बनाने के लिए, आईडी की पुष्टि करने की सुविधा जोड़ी गई है.
  • सैंडबॉक्सिंग. फ़्रेमवर्क और डिवाइस के हिसाब से बने कॉम्पोनेंट के बीच, Project Treble के स्टैंडर्ड इंटरफ़ेस का इस्तेमाल करके, कई कॉम्पोनेंट को ज़्यादा सख्ती से सैंडबॉक्स किया गया. हमने उन सभी ऐप्लिकेशन पर seccomp फ़िल्टरिंग लागू की है जिन पर भरोसा नहीं किया जा सकता. इससे, कर्नेल पर हमले की संभावना कम हो जाती है. वेबव्यू अब अलग प्रोसेस में चलता है. साथ ही, यह सिस्टम के बाकी हिस्सों का बहुत सीमित ऐक्सेस रखता है.
  • कर्नेल को ज़्यादा सुरक्षित बनाना. बेहतर सुरक्षा वाली उपयोगकर्ता कॉपी, पैन इम्यूलेशन, शुरू होने के बाद रीड-ओनली, और KASLR लागू किया गया.
  • यूज़रस्पेस को सुरक्षित बनाना. मीडिया स्टैक के लिए सीएफ़आई लागू किया गया. ऐप्लिकेशन ओवरले अब सिस्टम की ज़रूरी विंडो को कवर नहीं कर सकते. साथ ही, उपयोगकर्ताओं के पास उन्हें हटाने का विकल्प होता है.
  • स्ट्रीमिंग के लिए इस्तेमाल होने वाले ओएस का अपडेट. जिन डिवाइसों में डिस्क स्टोरेज कम है उन पर अपडेट चालू किए गए हैं.
  • अनजान ऐप्लिकेशन इंस्टॉल करने की अनुमति. उपयोगकर्ताओं को किसी ऐसे सोर्स से ऐप्लिकेशन इंस्टॉल करने के लिए, अनुमति देनी होगी जो पहले पक्ष का ऐप्लिकेशन स्टोर न हो.
  • निजता. डिवाइस पर मौजूद हर ऐप्लिकेशन और हर उपयोगकर्ता के लिए, Android आईडी (एसएसएआईडी) की वैल्यू अलग-अलग होती है. वेब ब्राउज़र ऐप्लिकेशन के लिए, Widevine क्लाइंट आईडी हर ऐप्लिकेशन पैकेज के नाम और वेब ऑरिजिन के लिए अलग-अलग वैल्यू दिखाता है. net.hostname अब खाली है और डीएचसीपी क्लाइंट अब कोई होस्टनेम नहीं भेजता. android.os.Build.SERIAL को Build.SERIAL एपीआई से बदल दिया गया है. इसे उपयोगकर्ता की अनुमति से सुरक्षित किया जाता है. कुछ चिपसेट में, मैक पते को अपने-आप बदलने की सुविधा को बेहतर बनाया गया है.

Android 7

Android के हर रिलीज़ में, उपयोगकर्ताओं को सुरक्षित रखने के लिए सुरक्षा से जुड़ी कई सुविधाएं शामिल की जाती हैं. Android 7.0 में सुरक्षा से जुड़े कुछ मुख्य सुधार किए गए हैं. इनके बारे में यहां बताया गया है:

  • अलग-अलग फ़ाइलों को अलग-अलग तरीकों से एन्क्रिप्ट करने का तरीका. पूरे स्टोरेज को एक यूनिट के तौर पर एन्क्रिप्ट करने के बजाय, फ़ाइल के लेवल पर एन्क्रिप्ट करने से, डिवाइस पर मौजूद अलग-अलग उपयोगकर्ताओं और प्रोफ़ाइलों (जैसे, निजी और काम से जुड़ी प्रोफ़ाइल) को बेहतर तरीके से अलग किया जा सकता है और उन्हें सुरक्षित रखा जा सकता है.
  • डायरेक्ट बूट. फ़ाइल-आधारित एन्क्रिप्शन की मदद से चालू होने वाली डायरेक्ट बूट की सुविधा, डिवाइस के चालू होने पर, अलार्म घड़ी और सुलभता सुविधाओं जैसे कुछ ऐप्लिकेशन को बिना अनलॉक किए चलाने की अनुमति देती है.
  • वेरिफ़ाइड बूट. अब वेरिफ़ाइड बूट की प्रोसेस को सख्ती से लागू किया जा रहा है, ताकि हैक किए गए डिवाइसों को बूट होने से रोका जा सके. साथ ही, यह गड़बड़ी ठीक करने की सुविधा भी देता है, ताकि गलत मकसद से डेटा को नुकसान पहुंचाने से रोका जा सके.
  • SELinux. SELinux कॉन्फ़िगरेशन को अपडेट करने और seccomp कवरेज को बढ़ाने से, ऐप्लिकेशन सैंडबॉक्स को और ज़्यादा सुरक्षित किया जा सकता है. साथ ही, अटैक सरफ़ेस को भी कम किया जा सकता है.
  • लाइब्रेरी लोड करने के क्रम को बदलना और बेहतर ASLR. रैंडमिटी बढ़ने से, कोड के फिर से इस्तेमाल से जुड़े कुछ हमले कम भरोसेमंद हो जाते हैं.
  • कर्नेल को ज़्यादा सुरक्षित बनाना. नए कर्नेल के लिए, मेमोरी की अतिरिक्त सुरक्षा जोड़ी गई है. इसके लिए, कर्नेल मेमोरी के कुछ हिस्सों को रीड-ओनली के तौर पर मार्क किया गया है. साथ ही, कर्नेल के ऐक्सेस को यूज़रस्पेस पतों पर सीमित किया गया है. इससे, हमले के मौजूदा प्लैटफ़ॉर्म को और छोटा किया जा सकता है.
  • APK सिग्नेचर स्कीम v2. पूरी फ़ाइल पर हस्ताक्षर करने की सुविधा शुरू की गई है. इससे पुष्टि की प्रोसेस तेज़ होती है और पूरी सुरक्षा की गारंटी मिलती है.
  • भरोसेमंद सीए स्टोर. ऐप्लिकेशन के लिए, अपने सुरक्षित नेटवर्क ट्रैफ़िक के ऐक्सेस को कंट्रोल करना आसान हो, इसके लिए एपीआई लेवल 24 और उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए, डिफ़ॉल्ट रूप से उपयोगकर्ता के इंस्टॉल किए गए सर्टिफ़िकेट देने वाली संस्थाओं और डिवाइस एडमिन एपीआई के ज़रिए इंस्टॉल किए गए सर्टिफ़िकेट देने वाली संस्थाओं पर भरोसा नहीं किया जाता. इसके अलावा, सभी नए Android डिवाइसों में एक ही भरोसेमंद सीए स्टोर होना चाहिए.
  • नेटवर्क की सुरक्षा से जुड़ा कॉन्फ़िगरेशन. एलान वाली कॉन्फ़िगरेशन फ़ाइल की मदद से, नेटवर्क की सुरक्षा और TLS को कॉन्फ़िगर करें.

Android 6

Android के हर रिलीज़ में, उपयोगकर्ताओं को सुरक्षित रखने के लिए सुरक्षा से जुड़ी कई सुविधाएं शामिल की जाती हैं. Android 6.0 में सुरक्षा से जुड़े कुछ मुख्य सुधार किए गए हैं. इनके बारे में यहां बताया गया है:

  • रनटाइम अनुमतियां. ऐप्लिकेशन को इंस्टॉल करने के समय अनुमतियां मिलने के बजाय, ऐप्लिकेशन के रनटाइम में अनुमतियों का अनुरोध किया जाता है. उपयोगकर्ता, M और M से पहले के ऐप्लिकेशन, दोनों के लिए अनुमतियों को टॉगल करके चालू और बंद कर सकते हैं.
  • वेरिफ़ाइड बूट. सिस्टम सॉफ़्टवेयर को इस्तेमाल करने से पहले, क्रिप्टोग्राफ़िक तरीके से कई तरह की जांच की जाती हैं. इससे यह पक्का किया जाता है कि फ़ोन का बूटलोडर से लेकर ऑपरेटिंग सिस्टम तक सब ठीक है.
  • हार्डवेयर से अलग की गई सुरक्षा. नई हार्डवेयर एब्स्ट्रैक्शन लेयर (एचएएल), जिसका इस्तेमाल फ़िंगरप्रिंट एपीआई, लॉकस्क्रीन, डिवाइस एन्क्रिप्शन, और क्लाइंट सर्टिफ़िकेट करते हैं. इससे कुंजियों को कर्नेल के साथ छेड़छाड़ और/या स्थानीय हमलों से बचाया जा सकता है
  • फ़िंगरप्रिंट. अब डिवाइसों को सिर्फ़ एक टच से अनलॉक किया जा सकता है. डेवलपर, एन्क्रिप्शन पासकोड को लॉक और अनलॉक करने के लिए, फ़िंगरप्रिंट का इस्तेमाल करने के लिए, नए एपीआई का भी फ़ायदा ले सकते हैं.
  • एसडी कार्ड का इस्तेमाल. डिवाइस में, डिवाइस से हटाया जा सकने वाला मीडिया इस्तेमाल किया जा सकता है. इससे, ऐप्लिकेशन के स्थानीय डेटा, फ़ोटो, वीडियो वगैरह के लिए उपलब्ध स्टोरेज को बढ़ाया जा सकता है. हालांकि, इसे ब्लॉक-लेवल एन्क्रिप्शन की मदद से सुरक्षित रखा जा सकता है.
  • साफ़ टेक्स्ट ट्रैफ़िक. डेवलपर, नए StrictMode का इस्तेमाल करके यह पक्का कर सकते हैं कि उनके ऐप्लिकेशन में क्लियरटेक्स्ट का इस्तेमाल न किया जा रहा हो.
  • सिस्टम को सुरक्षित बनाना. SELinux की नीतियों के ज़रिए सिस्टम को बेहतर बनाना. इससे उपयोगकर्ताओं के बीच बेहतर तौर पर अलगाव होता है, IOCTL फ़िल्टरिंग की सुविधा मिलती है, और सार्वजनिक तौर पर उपलब्ध सेवाओं से जुड़े खतरे को कम किया जा सकता है. साथ ही, SELinux डोमेन को और ज़्यादा सख्त किया जा सकता है और /proc का ऐक्सेस बहुत सीमित किया जा सकता है.
  • यूएसबी ऐक्सेस कंट्रोल: उपयोगकर्ताओं को फ़ोन पर मौजूद फ़ाइलों, स्टोरेज या अन्य सुविधाओं को यूएसबी से ऐक्सेस करने की अनुमति देने के लिए पुष्टि करनी होगी. डिफ़ॉल्ट रूप से, अब सिर्फ़ शुल्क सेट किया गया है. इसके तहत, स्टोरेज का ऐक्सेस पाने के लिए उपयोगकर्ता की साफ़ तौर पर अनुमति लेनी होगी.

Android 5

5.0

Android के हर रिलीज़ में, उपयोगकर्ताओं को सुरक्षित रखने के लिए सुरक्षा से जुड़ी कई सुविधाएं शामिल की जाती हैं. Android 5.0 में सुरक्षा से जुड़े कुछ मुख्य सुधार किए गए हैं. इनके बारे में यहां बताया गया है:

  • डिफ़ॉल्ट रूप से एन्क्रिप्ट (सुरक्षित) किया गया. जिन डिवाइसों पर L डिफ़ॉल्ट रूप से उपलब्ध होता है उन पर फ़ुल डिस्क एन्क्रिप्शन डिफ़ॉल्ट रूप से चालू होता है. इससे, खोए या चोरी हुए डिवाइसों पर मौजूद डेटा की सुरक्षा बेहतर होती है. जिन डिवाइसों पर Android L वर्शन अपडेट किया गया है उन्हें सेटिंग > सुरक्षा में जाकर एन्क्रिप्ट किया जा सकता है .
  • पूरी ड्राइव को सुरक्षित रखने की बेहतर सुविधा. उपयोगकर्ता के पासवर्ड को scrypt का इस्तेमाल करके, ब्रूट-फ़ोर्स हमलों से सुरक्षित रखा जाता है. साथ ही, जहां उपलब्ध हो वहां कुंजी को हार्डवेयर कीस्टोर से बंधा जाता है, ताकि डिवाइस से बाहर के हमलों को रोका जा सके. हमेशा की तरह, Android स्क्रीन लॉक की सीक्रेट और डिवाइस को एन्क्रिप्ट करने वाली कुंजी को डिवाइस से बाहर नहीं भेजा जाता या किसी ऐप्लिकेशन को नहीं दिखाया जाता.
  • SELinux की मदद से बेहतर बनाया गया Android सैंडबॉक्स . Android के लिए अब सभी डोमेन के लिए, नीति लागू करने वाले मोड में SELinux की ज़रूरत है. SELinux, Linux कर्नेल में मौजूद ज़रूरी ऐक्सेस कंट्रोल (एमएसी) सिस्टम है. इसका इस्तेमाल, डिस्क्रेशनरी ऐक्सेस कंट्रोल (डीएसी) वाले मौजूदा सुरक्षा मॉडल को बेहतर बनाने के लिए किया जाता है. यह नई लेयर, सुरक्षा से जुड़ी संभावित कमजोरियों से ज़्यादा सुरक्षा देती है.
  • Smart Lock. Android में अब ट्रस्टलेट शामिल हैं. इनसे डिवाइसों को अनलॉक करने में ज़्यादा आसानी होती है. उदाहरण के लिए, ट्रस्टलेट की मदद से, किसी भरोसेमंद डिवाइस के आस-पास होने पर डिवाइस अपने-आप अनलॉक हो सकते हैं. ऐसा, एनएफ़सी या ब्लूटूथ की मदद से किया जा सकता है. इसके अलावा, किसी भरोसेमंद व्यक्ति के डिवाइस का इस्तेमाल करने पर भी डिवाइस अपने-आप अनलॉक हो सकते हैं.
  • फ़ोन और टैबलेट के लिए, एक से ज़्यादा उपयोगकर्ता, प्रतिबंधित प्रोफ़ाइल, और मेहमान मोड. Android अब फ़ोन पर एक से ज़्यादा उपयोगकर्ताओं के लिए काम करता है. साथ ही, इसमें मेहमान मोड भी शामिल है. इस मोड का इस्तेमाल करके, अपने डिवाइस का ऐक्सेस कुछ समय के लिए आसानी से दिया जा सकता है. ऐसा करने पर, आपके डेटा और ऐप्लिकेशन का ऐक्सेस नहीं दिया जाता.
  • ओटीए के बिना वेबव्यू में होने वाले अपडेट. वेबव्यू को अब फ़्रेमवर्क के बिना और सिस्टम ओटीए के बिना अपडेट किया जा सकता है. इससे, WebView में सुरक्षा से जुड़ी संभावित समस्याओं का तेज़ी से जवाब दिया जा सकता है.
  • एचटीटीपीएस और TLS/एसएसएल के लिए अपडेट किया गया क्रिप्टोग्राफ़ी. TLSv1.2 और TLSv1.1 अब चालू है, फ़ॉरवर्ड सिक्योरिटी को प्राथमिकता दी जाती है, AES-GCM अब चालू है, और कमज़ोर साइफ़र सुइट (MD5, 3DES, और एक्सपोर्ट साइफ़र सुइट) अब बंद हैं. ज़्यादा जानकारी के लिए, https://developer.android.com/reference/javax/net/ssl/SSLSocket.html पर जाएं.
  • नॉन-पीआईई लिंकर के लिए सहायता हटा दी गई है. Android के लिए अब सभी डाइनैमिक तौर पर लिंक किए गए एक्सीक्यूटेबल, पीआईई (पोज़िशन-इंडिपेंडेंट एक्सीक्यूटेबल) के साथ काम करने चाहिए. इससे Android के ऐड्रेस स्पेस के लेआउट को रैंडमाइज़ करने (ASLR) की सुविधा को बेहतर तरीके से लागू किया जा सकता है.
  • FORTIFY_SOURCE में सुधार. libc के इन फ़ंक्शन में अब FORTIFY_SOURCE सुरक्षा लागू की गई है: stpcpy(), stpncpy(), read(), recvfrom(), FD_CLR(), FD_SET(), और FD_ISSET(). इससे, उन फ़ंक्शन से जुड़ी मेमोरी में गड़बड़ी की समस्याओं से सुरक्षा मिलती है.
  • सुरक्षा से जुड़ी समस्याएं ठीक करना. Android 5.0 में, Android से जुड़ी जोखिम की संभावनाओं को ठीक करने के लिए भी सुधार किए गए हैं. इन कमजोरियों के बारे में जानकारी, Open Handset Alliance के सदस्यों को दी गई है. साथ ही, इनकी वजह से होने वाली समस्याओं को ठीक करने के लिए, Android Open Source Project में समाधान उपलब्ध हैं. सुरक्षा को बेहतर बनाने के लिए, Android के पुराने वर्शन वाले कुछ डिवाइसों में भी ये सुधार शामिल हो सकते हैं.

Android 4 और उससे पहले के वर्शन

Android के हर रिलीज़ में, उपयोगकर्ताओं को सुरक्षित रखने के लिए सुरक्षा से जुड़ी कई सुविधाएं शामिल की जाती हैं. Android 4.4 में, सुरक्षा से जुड़ी कुछ बेहतर सुविधाएं उपलब्ध हैं. इनके बारे में यहां बताया गया है:

  • SELinux की मदद से बेहतर बनाया गया Android सैंडबॉक्स. Android अब लागू करने वाले मोड में SELinux का इस्तेमाल करता है. SELinux, Linux कर्नेल में मौजूद ज़रूरी ऐक्सेस कंट्रोल (एमएसी) सिस्टम है. इसका इस्तेमाल, डिस्क्रेशनरी ऐक्सेस कंट्रोल (डीएसी) पर आधारित मौजूदा सुरक्षा मॉडल को बेहतर बनाने के लिए किया जाता है. इससे, सुरक्षा से जुड़ी संभावित कमज़ोरियों से ज़्यादा सुरक्षा मिलती है.
  • हर उपयोगकर्ता के लिए वीपीएन. एक से ज़्यादा उपयोगकर्ताओं वाले डिवाइसों पर, अब हर उपयोगकर्ता के लिए वीपीएन लागू होते हैं. इससे, उपयोगकर्ता अपने डिवाइस पर मौजूद अन्य उपयोगकर्ताओं पर असर डाले बिना, नेटवर्क के सभी ट्रैफ़िक को वीपीएन के ज़रिए रूट कर सकता है.
  • AndroidKeyStore में ECDSA प्रोवाइडर की सहायता. Android में अब एक कीस्टोर प्रोवाइडर है, जो ECDSA और डीएसए एल्गोरिदम का इस्तेमाल करने की अनुमति देता है.
  • डिवाइस की निगरानी से जुड़ी चेतावनियां. अगर डिवाइस के सर्टिफ़िकेट स्टोर में कोई ऐसा सर्टिफ़िकेट जोड़ा गया है जिससे एन्क्रिप्ट (सुरक्षित) किए गए नेटवर्क ट्रैफ़िक की निगरानी की जा सकती है, तो Android उपयोगकर्ताओं को चेतावनी देता है.
  • FORTIFY_SOURCE. Android अब FORTIFY_SOURCE लेवल 2 के साथ काम करता है. साथ ही, सभी कोड को इन सुरक्षा उपायों के साथ संकलित किया जाता है. FORTIFY_SOURCE को clang के साथ काम करने के लिए बेहतर बनाया गया है.
  • सर्टिफ़िकेट पिन करना. Android 4.4, एसएसएल/टीएलएस से सुरक्षित कम्यूनिकेशन में इस्तेमाल किए जाने वाले, धोखाधड़ी वाले Google सर्टिफ़िकेट का पता लगाता है और उन्हें इस्तेमाल होने से रोकता है.
  • सुरक्षा से जुड़ी समस्याएं ठीक करना. Android 4.4 में, Android से जुड़ी जोखिम की संभावनाओं को ठीक करने के लिए भी अपडेट शामिल हैं. इन कमजोरियों के बारे में जानकारी, Open Handset Alliance के सदस्यों को दी गई है. साथ ही, इन कमजोरियों को ठीक करने के लिए, Android Open Source Project में समाधान उपलब्ध हैं. सुरक्षा को बेहतर बनाने के लिए, Android के पुराने वर्शन वाले कुछ डिवाइसों में भी ये सुधार शामिल किए जा सकते हैं.

Android के हर रिलीज़ में, उपयोगकर्ताओं को सुरक्षित रखने के लिए सुरक्षा से जुड़ी कई सुविधाएं शामिल की जाती हैं. Android 4.3 में, सुरक्षा से जुड़ी कुछ बेहतर सुविधाएं उपलब्ध हैं. इनके बारे में यहां बताया गया है:

  • SELinux की मदद से बेहतर बनाया गया Android सैंडबॉक्स. इस रिलीज़ में, Linux kernel में SELinux के ज़रिए ज़रूरी ऐक्सेस कंट्रोल सिस्टम (MAC) का इस्तेमाल करके, Android सैंडबॉक्स को ज़्यादा सुरक्षित बनाया गया है. SELinux के बेहतर वर्शन का इस्तेमाल, उपयोगकर्ताओं और डेवलपर को नहीं दिखता. इससे Android के मौजूदा सुरक्षा मॉडल को बेहतर बनाया जाता है. साथ ही, मौजूदा ऐप्लिकेशन के साथ काम करने की सुविधा भी बनी रहती है. इस रिलीज़ में, SELinux को अनुमति वाले मोड में इस्तेमाल करने की अनुमति दी गई है, ताकि यह पक्का किया जा सके कि यह रिलीज़, पुराने वर्शन के साथ काम करती रहे. यह मोड, नीति के उल्लंघनों को लॉग करता है. हालांकि, इससे ऐप्लिकेशन काम नहीं करेंगे या सिस्टम के काम करने के तरीके पर असर नहीं पड़ेगा.
  • setuid या setgid प्रोग्राम नहीं. Android सिस्टम फ़ाइलों में, फ़ाइल सिस्टम की सुविधाओं के साथ काम करने की सुविधा जोड़ी गई है. साथ ही, सभी setuid या setgid प्रोग्राम हटा दिए गए हैं. इससे, रूट अटैक सरफ़ेस और सुरक्षा से जुड़ी संभावित जोखिम की संभावना कम हो जाती है.
  • ADB की मदद से पुष्टि करना. Android 4.2.2 से, ADB से कनेक्ट करने के लिए, आरएसए की जोड़ी वाली कुंजी से पुष्टि की जाती है. इससे, हमलावर के पास डिवाइस का फ़िज़िकल ऐक्सेस होने पर, ADB का बिना अनुमति के इस्तेमाल होने से रोका जा सकता है.
  • Android ऐप्लिकेशन से Setuid को प्रतिबंधित करना. zygote से पैदा हुई प्रोसेस के लिए, /system सेगमेंट को अब mount किया गया है. इससे Android ऐप्लिकेशन, setuid प्रोग्राम को चलाने से बच जाते हैं. इससे रूट अटैक सरफ़ेस और सुरक्षा से जुड़ी संभावित कमजोरियों की संभावना कम हो जाती है.
  • क्षमता की सीमा तय करना. Android zygote और ADB अब ऐप्लिकेशन को चलाने से पहले, prctl(PR_CAPBSET_DROP) का इस्तेमाल करके, ज़रूरी सुविधाओं को हटाते हैं. इससे, Android ऐप्लिकेशन और शेल से लॉन्च किए गए ऐप्लिकेशन, खास सुविधाओं का ऐक्सेस नहीं पाते.
  • AndroidKeyStore की सेवा देने वाली कंपनी. Android में अब एक पासकोड स्टोर करने की सुविधा है. इससे ऐप्लिकेशन, सिर्फ़ एक बार इस्तेमाल होने वाले पासकोड बना सकते हैं. इससे ऐप्लिकेशन को एपीआई मिलता है, ताकि वे निजी पासकोड बना सकें या सेव कर सकें. इन पासकोड का इस्तेमाल, दूसरे ऐप्लिकेशन नहीं कर सकते.
  • KeyChain isBoundKeyAlgorithm. Keychain API अब एक तरीका (isBoundKeyType) उपलब्ध कराता है. इससे ऐप्लिकेशन यह पुष्टि कर सकते हैं कि सिस्टम-वाइड कुंजियां, डिवाइस के लिए भरोसेमंद हार्डवेयर रूट से जुड़ी हैं. इससे, ऐसी निजी कुंजियां बनाने या सेव करने की जगह मिलती है जिन्हें डिवाइस से एक्सपोर्ट नहीं किया जा सकता. भले ही, रूट को हैक कर लिया गया हो.
  • NO_NEW_PRIVS. Android zygote अब prctl(PR_SET_NO_NEW_PRIVS) का इस्तेमाल करता है, ताकि ऐप्लिकेशन कोड को लागू करने से पहले, नई अनुमतियां जोड़ने से रोका जा सके. इससे, Android ऐप्लिकेशन को ऐसे काम करने से रोका जाता है जिनसे execve के ज़रिए खास सुविधाओं का ऐक्सेस मिल सकता है. (इसके लिए, Linux kernel का 3.5 या उसके बाद का वर्शन ज़रूरी है).
  • FORTIFY_SOURCE बेहतर बनाने की सुविधाएं. Android x86 और MIPS पर FORTIFY_SOURCE चालू किया गया और strchr(), strrchr(), strlen(), और umask() कॉल को बेहतर बनाया गया. इससे, मेमोरी में डेटा खराब होने की संभावित समस्याओं या बिना आखिरी बिंदु वाली स्ट्रिंग कॉन्स्टेंट का पता लगाया जा सकता है.
  • दूसरी जगह जाने पर सुरक्षा. स्टैटिक तौर पर लिंक किए गए, रन किए जा सकने वाले प्रोग्राम के लिए, सिर्फ़ पढ़ने के लिए उपलब्ध रीलोकेशन (relro) की सुविधा चालू की गई. साथ ही, Android कोड में सभी टेक्स्ट रीलोकेशन हटा दिए गए. इससे, मेमोरी में गड़बड़ी होने की संभावित कमजोरियों के ख़िलाफ़ बेहतर सुरक्षा मिलती है.
  • बेहतर EntropyMixer. EntropyMixer अब समय-समय पर मिक्स करने के साथ-साथ, डिवाइस के बंद होने या फिर से चालू होने पर भी एन्ट्रॉपी लिखता है. इससे, डिवाइसों के चालू रहने के दौरान जनरेट होने वाले सभी एन्ट्रापी को बनाए रखा जा सकता है. यह सुविधा, खास तौर पर उन डिवाइसों के लिए काम की है जिन्हें प्रोवाइड करने के तुरंत बाद रीबूट किया जाता है.
  • सुरक्षा से जुड़ी समस्याएं ठीक करना. Android 4.3 में, Android के लिए खास तौर पर बनी कमजोरियों को ठीक करने के लिए भी सुधार किए गए हैं. इन कमजोरियों के बारे में जानकारी, Open Handset Alliance के सदस्यों को दी गई है. साथ ही, Android Open Source Project में इन कमजोरियों को ठीक करने के तरीके उपलब्ध हैं. सुरक्षा को बेहतर बनाने के लिए, Android के पुराने वर्शन वाले कुछ डिवाइसों में भी ये सुधार शामिल किए जा सकते हैं.

Android, कई लेयर वाला सुरक्षा मॉडल उपलब्ध कराता है. इस बारे में Android की सुरक्षा से जुड़ी खास जानकारी में बताया गया है. Android के हर अपडेट में, उपयोगकर्ताओं को सुरक्षित रखने के लिए, सुरक्षा से जुड़े कई सुधार किए जाते हैं. Android 4.2 में, सुरक्षा से जुड़ी कुछ बेहतर सुविधाएं जोड़ी गई हैं. इनके बारे में यहां बताया गया है:

  • ऐप्लिकेशन की पुष्टि करना: उपयोगकर्ता, 'ऐप्लिकेशन की पुष्टि करें' सुविधा को चालू कर सकते हैं. इससे, ऐप्लिकेशन इंस्टॉल करने से पहले, ऐप्लिकेशन की पुष्टि करने वाली किसी कंपनी से ऐप्लिकेशन की जांच कराई जा सकती है. ऐप्लिकेशन की पुष्टि करने की सुविधा से, उपयोगकर्ता को इस बात की चेतावनी मिल सकती है कि वह कोई ऐसा ऐप्लिकेशन इंस्टॉल करने की कोशिश कर रहा है जो नुकसान पहुंचा सकता है. अगर कोई ऐप्लिकेशन काफ़ी खराब है, तो यह सुविधा उसे इंस्टॉल होने से रोक सकती है.
  • प्रीमियम एसएमएस पर ज़्यादा कंट्रोल: अगर कोई ऐप्लिकेशन, प्रीमियम सेवाओं का इस्तेमाल करने वाले किसी शॉर्ट कोड पर एसएमएस भेजने की कोशिश करता है, तो Android आपको इसकी सूचना देता है. ऐसा इसलिए किया जाता है, ताकि आपको अतिरिक्त शुल्क न देना पड़े. उपयोगकर्ता यह चुन सकता है कि ऐप्लिकेशन को मैसेज भेजने की अनुमति देनी है या उसे ब्लॉक करना है.
  • वीपीएन को हमेशा चालू रखें: वीपीएन को इस तरह कॉन्फ़िगर किया जा सकता है कि ऐप्लिकेशन तब तक नेटवर्क का ऐक्सेस न पाएं, जब तक वीपीएन कनेक्शन स्थापित नहीं हो जाता. इससे ऐप्लिकेशन, दूसरे नेटवर्क पर डेटा भेजने से बच जाते हैं.
  • सर्टिफ़िकेट पिन करने की सुविधा: Android की मुख्य लाइब्रेरी में अब सर्टिफ़िकेट पिन करने की सुविधा काम करती है. अगर सर्टिफ़िकेट, उम्मीद के मुताबिक सर्टिफ़िकेट के सेट से जुड़ा नहीं है, तो पिन किए गए डोमेन को सर्टिफ़िकेट की पुष्टि न होने का मैसेज मिलता है. इससे, सर्टिफ़िकेट देने वाली संस्थाओं के साथ होने वाली संभावित धोखाधड़ी से बचा जा सकता है.
  • Android की अनुमतियों को बेहतर तरीके से दिखाना: अनुमतियों को ऐसे ग्रुप में व्यवस्थित किया गया है जिन्हें उपयोगकर्ता आसानी से समझ सकते हैं. अनुमतियों की समीक्षा के दौरान, उपयोगकर्ता अनुमति पर क्लिक करके, अनुमति के बारे में ज़्यादा जानकारी देख सकता है.
  • installd को बेहतर बनाना: installd डेमन, रूट उपयोगकर्ता के तौर पर नहीं चलता. इससे रूट प्रिविलेज एस्केलेशन के लिए, हमले के संभावित दायरे को कम किया जा सकता है.
  • init स्क्रिप्ट को बेहतर बनाना: अब init स्क्रिप्ट, सिमलिन्क से जुड़े हमलों को रोकने के लिए O_NOFOLLOW सिमेंटिक्स (पूरी जानकारी देने वाले) लागू करती हैं.
  • FORTIFY_SOURCE: Android अब FORTIFY_SOURCE को लागू करता है. इसका इस्तेमाल, सिस्टम लाइब्रेरी और ऐप्लिकेशन, मेमोरी में गड़बड़ी को रोकने के लिए करते हैं.
  • ContentProvider का डिफ़ॉल्ट कॉन्फ़िगरेशन: एपीआई लेवल 17 को टारगेट करने वाले ऐप्लिकेशन में, हर Content Provider के लिए export को डिफ़ॉल्ट रूप से false पर सेट किया जाता है. इससे, ऐप्लिकेशन के लिए डिफ़ॉल्ट रूप से हमले की जगह कम हो जाती है.
  • क्रिप्टोग्राफ़ी: OpenSSL का इस्तेमाल करने के लिए, SecureRandom और Cipher.RSA के डिफ़ॉल्ट तरीके में बदलाव किया गया है. OpenSSL 1.0.1 का इस्तेमाल करके, TLSv1.1 और TLSv1.2 के लिए एसएसएल सॉकेट की सुविधा जोड़ी गई
  • सुरक्षा से जुड़ी गड़बड़ियां ठीक की गई हैं: सुरक्षा से जुड़ी गड़बड़ियों को ठीक करने के लिए, अपग्रेड की गई ओपन सोर्स लाइब्रेरी में ये शामिल हैं: WebKit, libpng, OpenSSL, और LibXML. Android 4.2 में, Android के लिए खास तौर पर बनी जोखिम की संभावनाओं को ठीक करने के लिए भी सुधार किए गए हैं. इन कमजोरियों के बारे में जानकारी, Open Handset Alliance के सदस्यों को दी गई है. साथ ही, Android Open Source Project में इनकी समस्याएं ठीक करने के लिए समाधान उपलब्ध हैं. सुरक्षा को बेहतर बनाने के लिए, Android के पुराने वर्शन वाले कुछ डिवाइसों में भी ये सुधार शामिल हो सकते हैं.

Android, कई लेयर वाला सुरक्षा मॉडल उपलब्ध कराता है. इस बारे में Android की सुरक्षा से जुड़ी खास जानकारी में बताया गया है. Android के हर अपडेट में, उपयोगकर्ताओं को सुरक्षित रखने के लिए, सुरक्षा से जुड़े कई सुधार किए जाते हैं. Android के 1.5 से 4.1 वर्शन में, सुरक्षा से जुड़े कुछ सुधार किए गए हैं. इनमें से कुछ सुधारों के बारे में यहां बताया गया है:

Android 1.5
  • स्टैक बफ़र के ओवररन को रोकने के लिए ProPolice (-fstack-protector)
  • पूर्णांक के ओवरफ़्लो को कम करने के लिए safe_iop
  • OpenBSD dlmalloc के एक्सटेंशन, ताकि डबल फ़्री() से जुड़ी कमियों को रोका जा सके और चंक को एक साथ जोड़ने वाले अटैक से बचा जा सके. हेप में गड़बड़ी का फ़ायदा उठाने के लिए, चंक को एक साथ जोड़ने वाले हमले एक सामान्य तरीका है.
  • OpenBSD calloc, मेमोरी के बंटवारे के दौरान इंटिजर ओवरफ़्लो को रोकने के लिए
Android 2.3
  • फ़ॉर्मैट स्ट्रिंग से जुड़ी सुरक्षा से जुड़ी चेतावनियां (-Wformat-security -Werror=format-security)
  • स्टैक और ढेर पर कोड को चलने से रोकने के लिए, हार्डवेयर पर आधारित No eXecute (NX)
  • Linux mmap_min_addr, जो शून्य पॉइंटर के डीरेफ़रंस से जुड़े विशेषाधिकार के बढ़ने को कम करता है. Android 4.1 में इसे और बेहतर बनाया गया है
Android 4.0
मेमोरी में मुख्य जगहों को रैंडम क्रम में लगाने के लिए, ऐड्रेस स्पेस लेआउट रैंडमाइज़ेशन (एएसएलआर)
Android 4.1
  • PIE (पॉज़िशन इंडिपेंडेंट एक्सीक्यूटेबल) के साथ काम करना
  • रीड-ओनली रीलोकेशन / तुरंत बाइंडिंग (-Wl,-z,relro -Wl,-z,now)
  • dmesg_restrict चालू है (कर्नल पतों को लीक होने से रोकना)
  • kptr_restrict चालू है (कर्नल पतों को लीक होने से रोकना)