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

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

Android 14

每个 Android 版本中都包含数十种安全增强功能,以保护用户。以下是 Android 14 中提供的一些主要安全增强功能:

  • Android 10 中引入的硬件辅助 AddressSanitizer (HWASan) 是一款类似于 AddressSanitizer 的内存错误检测工具。Android 14 对 HWASan 进行了重大改进。如需了解它如何帮助防止 bug 进入 Android 版本,请访问 HWAddressSanitizer
  • 在 Android 14 中,从与第三方共享位置数据的应用开始,系统运行时权限对话框现在包含一个可点击的部分,用于突出显示应用的数据分享做法,包括诸如以下信息:应用为什么可能会决定与第三方分享数据。
  • Android 12 引入了在调制解调器级别停用 2G 支持的选项,以保护用户免受 2G 的过时安全模型固有的安全风险的影响。认识到停用 2G 对企业客户的重要性后,Android 14 在 Android Enterprise 中启用了此安全功能,以便 IT 管理员能够限制受管设备降级到 2G 连接
  • 开始支持拒绝未加密的移动网络连接,确保电路交换语音和短信流量始终会加密,并可防范被动无线拦截。详细了解 Android 的移动网络连接强化计划
  • 新增了对多个 IMEI 的支持
  • 从 Android 14 开始,AES-HCTR2 是采用加速加密指令的设备的首选文件名加密模式。
  • 移动网络连接
  • 在 Android 安全中心添加了相关文档
  • 如果您的应用以 Android 14 为目标平台并使用动态代码加载 (DCL) 功能,则必须将所有动态加载的文件标记为只读。否则,系统会抛出异常。我们建议应用尽可能避免动态加载代码,因为这样做会大大增加应用因代码注入或代码篡改而遭到入侵的风险。

请查看完整的 AOSP 版本说明以及 Android 开发者功能和变更列表

Android 13

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

  • Android 13 में, एक से ज़्यादा दस्तावेज़ों को प्रज़ेंट करने की सुविधा जोड़ी गई है. प्रज़ेंटेशन सेशन के इस नए इंटरफ़ेस की मदद से, ऐप्लिकेशन में एक से ज़्यादा दस्तावेज़ों का प्रज़ेंटेशन किया जा सकता है. ऐसा मौजूदा एपीआई की मदद से नहीं किया जा सकता. ज़्यादा जानकारी के लिए, पहचान की पुष्टि करने वाला क्रेडेंशियल देखें
  • Android 13 में, बाहरी ऐप्लिकेशन से शुरू होने वाले इंटेंट, एक्सपोर्ट किए गए कॉम्पोनेंट को सिर्फ़ तब डिलीवर किए जाते हैं, जब वे इंटेंट, एलान किए गए इंटेंट-फ़िल्टर एलिमेंट से मैच करते हों.
  • Open Mobile API (OMAPI) एक स्टैंडर्ड एपीआई है. इसका इस्तेमाल, डिवाइस के सुरक्षित एलिमेंट के साथ कम्यूनिकेट करने के लिए किया जाता है. Android 13 से पहले, सिर्फ़ ऐप्लिकेशन और फ़्रेमवर्क मॉड्यूल के पास इस इंटरफ़ेस का ऐक्सेस था. इसे वेंडर के स्टैबल इंटरफ़ेस में बदलकर, HAL मॉड्यूल, OMAPI सेवा की मदद से सुरक्षित एलिमेंट के साथ भी कम्यूनिकेट कर सकते हैं. ज़्यादा जानकारी के लिए, OMAPI वेंडर स्टैबल इंटरफ़ेस देखें.
  • Android 13-QPR के बाद, शेयर किए गए यूआईडी का इस्तेमाल नहीं किया जा सकता. Android 13 या उसके बाद के वर्शन का इस्तेमाल करने वाले लोगों को अपने मेनिफ़ेस्ट में, `android:sharedUserMaxSdkVersion="32"` लाइन डालनी चाहिए. इस एंट्री की वजह से, नए उपयोगकर्ताओं को शेयर किया गया यूआईडी नहीं मिलता. यूआईडी के बारे में ज़्यादा जानकारी के लिए, ऐप्लिकेशन साइनिंग लेख पढ़ें.
  • Android 13 में, एईएस (ऐडवांस एन्क्रिप्शन स्टैंडर्ड), एचएमएसी (कीड-हैश मैसेज ऑथेंटिकेशन कोड), और असिमेट्रिक क्रिप्टोग्राफ़िक एल्गोरिदम (जैसे कि एलिप्टिक कर्व, आरएसए2048, आरएसए4096, और कर्व 25519) जैसे सिमेट्रिक क्रिप्टोग्राफ़िक प्राइमिटिव के लिए, Keystore की सुविधा जोड़ी गई है
  • Android 13 (एपीआई लेवल 33) और उसके बाद के वर्शन में, ऐप्लिकेशन से सूचनाएं भेजने के लिए, रनटाइम की अनुमति का इस्तेमाल किया जा सकता है. इससे उपयोगकर्ताओं को यह कंट्रोल करने की सुविधा मिलती है कि उन्हें कौनसी अनुमति की सूचनाएं दिखें.
  • सभी डिवाइस लॉग का ऐक्सेस पाने का अनुरोध करने वाले ऐप्लिकेशन के लिए, हर बार इस्तेमाल करने पर पूछने की सुविधा जोड़ी गई है. इससे उपयोगकर्ताओं को ऐक्सेस देने या अस्वीकार करने का विकल्प मिलता है.
  • Android वर्चुअलाइज़ेशन फ़्रेमवर्क (एवीएफ़) को लॉन्च किया. इसमें, स्टैंडर्ड एपीआई की मदद से अलग-अलग हाइपरवाइजर को एक फ़्रेमवर्क में इकट्ठा किया जाता है. यह, हाइपरवाइजर से अलग किए गए वर्कलोड को चलाने के लिए, सुरक्षित और निजी रनटाइम एनवायरमेंट उपलब्ध कराता है.
  • APK सिग्नेचर स्कीम v3.1 को लॉन्च किया गया apksigner का इस्तेमाल करने वाले सभी नए कुंजी रोटेशन, डिफ़ॉल्ट रूप से v3.1 सिग्नेचर स्कीम का इस्तेमाल करते हैं ताकि Android 13 और उसके बाद के वर्शन के लिए रोटेशन को टारगेट किया जा सके.

AOSP के रिलीज़ नोट और Android डेवलपर के सुविधाओं और बदलावों की सूची देखें.

Android 12

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

  • Android 12 में BiometricManager.Strings API पेश किया गया है. यह उन ऐप्लिकेशन के लिए स्थानीय भाषा में स्ट्रिंग उपलब्ध कराता है जो पुष्टि के लिए BiometricPrompt का इस्तेमाल करते हैं. इन स्ट्रिंग को डिवाइस के हिसाब से बनाया गया है. साथ ही, इनमें यह जानकारी भी दी गई है कि पुष्टि करने के लिए किस तरह के तरीकों का इस्तेमाल किया जा सकता है. Android 12 में, डिसप्ले में मौजूद फ़िंगरप्रिंट सेंसर की सुविधा भी शामिल है
  • डिसप्ले में मौजूद फ़िंगरप्रिंट सेंसर के लिए सहायता जोड़ी गई
  • फ़िंगरप्रिंट Android इंटरफ़ेस डेफ़िनिशन लैंग्वेज (एआईडीएल) की जानकारी
  • नए Face AIDL के लिए सहायता
  • प्लैटफ़ॉर्म डेवलपमेंट के लिए, Rust को एक भाषा के तौर पर पेश किया गया
  • उपयोगकर्ताओं के लिए, सिर्फ़ अनुमानित जगह की जानकारी का ऐक्सेस देने का विकल्प जोड़ा गया
  • जब कोई ऐप्लिकेशन कैमरे या माइक्रोफ़ोन का इस्तेमाल करता है, तब स्टेटस बार में निजता इंडिकेटर जोड़े गए हैं
  • Android का Private Compute Core (PCC)
  • 2G की सुविधा बंद करने का विकल्प जोड़ा गया

Android 11

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

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 中提供的一些主要安全增强功能:

  • 加密:在工作资料中增加了对撤销密钥 (evict key) 的支持。
  • 验证启动:增加了 Android 启动时验证 (AVB)。支持回滚保护(用于引导加载程序)的启动时验证代码库已添加到 AOSP 中。建议提供引导加载程序支持,以便为 HLOS 提供回滚保护。建议将引导加载程序设为只能由用户通过实际操作设备来解锁。
  • 锁定屏幕:增加了对使用防篡改硬件验证锁定屏幕凭据的支持。
  • KeyStore:搭载 Android 8.0 及更高版本的所有设备都需要进行密钥认证。增加了 ID 认证支持,以改进零触摸注册计划。
  • 沙盒:使用 Treble 计划的框架和设备特定组件之间的标准接口更紧密地对许多组件进行沙盒化处理。将 seccomp 过滤应用到了所有不信任的应用,以减少内核的攻击面。WebView 现在运行在一个独立的进程中,对系统其余部分的访问非常有限。
  • 内核加固:实现了经过安全强化的 usercopy、PAN 模拟、初始化后变为只读以及 KASLR。
  • 用户空间安全强化:为媒体堆栈实现了 CFI。 应用叠加层不能再遮盖系统关键窗口,并且用户可以关闭这些叠加层。
  • 操作系统流式更新:在磁盘空间不足的设备上启用了更新
  • 安装未知应用:用户必须授予权限,系统才能从不是第一方应用商店的来源安装应用。
  • 隐私权:对于设备上的每个应用和使用设备的每个用户,Android ID (SSAID) 都采用不同的值。对于网络浏览器应用,Widevine 客户端 ID 会针对每个应用软件包名称和网络来源返回不同的值。 net.hostname 现在为空,并且 DHCP 客户端不再发送主机名。android.os.Build.SERIAL 已被替换为 Build.SERIAL API(受到用户控制权限的保护)。改进了某些芯片组中的 MAC 地址随机分配功能。

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 चालू है (कर्नल पतों को लीक होने से रोकना)