बायोमेट्रिक्स की मदद से, डिवाइस से अपनी पहचान की पुष्टि करना ज़्यादा आसान होता है. हालांकि, यह तरीका ज़्यादा सुरक्षित नहीं होता. पुष्टि करने के अलग-अलग लेवल वाले मॉडल के तहत, मुख्य पुष्टि (जैसे, पिन, पैटर्न, और पासवर्ड जैसे उपयोगकर्ता के पास मौजूद जानकारी पर आधारित तरीके) सबसे ज़्यादा सुरक्षा देती है. बायोमेट्रिक ऑथेंटिकेशन, पुष्टि करने के दूसरे टीयर में आता है. इससे सहूलियत और सुरक्षा, दोनों मिलती हैं. Android के सीडीडी में, बायोमेट्रिक सुरक्षा की तीन क्लास तय की गई हैं: क्लास 3 (पहले इसे 'बेहतर' कहा जाता था), क्लास 2 (पहले इसे 'कम सुरक्षित' कहा जाता था), और क्लास 1 (पहले इसे 'सुविधाजनक' कहा जाता था). हर क्लास के लिए ज़रूरी शर्तों, खास अधिकारों, और शर्तों का एक सेट होता है. ज़्यादा जानकारी के लिए, कृपया ऊपर दिया गया सीडीडी (CDD) देखें. तीनों क्लास को लॉकस्क्रीन के साथ इंटिग्रेट करने की अनुमति है. हालांकि, सिर्फ़ मज़बूत और कमज़ोर पुष्टि करने वाले एट्रिब्यूटर को android.hardware.biometrics APIs के साथ इंटिग्रेट करने की अनुमति है. इस टेबल में, हर ऑथेंटिकेटर और उनमें काम करने वाली सुविधाओं के बारे में बताया गया है.
Authenticator | लॉकस्क्रीन | बायोमेट्रिकप्रॉम्प्ट इंटिग्रेशन | कीस्टोर (समय के हिसाब से बनी कुंजी) | कीस्टोर (कार्रवाई पर आधारित कुंजी) |
---|---|---|---|---|
BIOMETRIC_STRONG (क्लास 3) | हां | हां | हां | हां |
BIOMETRIC_WEAK (क्लास 2) | हां | हां | नहीं | नहीं |
BIOMETRIC_CONVENIENCE (क्लास 1) |
हां | नहीं | नहीं | नहीं |
DEVICE_CREDENTIAL | हां | हां | हां | हां |
Android फ़्रेमवर्क में, चेहरे और फ़िंगरप्रिंट की मदद से, बायोमेट्रिक ऑथेंटिकेशन की सुविधा शामिल है. Android को अपनी ज़रूरत के हिसाब से, अन्य बायोमेट्रिक्स मोड (जैसे, Iris) की सुविधा के साथ काम करने के लिए बनाया जा सकता है. हालांकि, बायोमेट्रिक इंटिग्रेशन, मोडैलिटी के बजाय, बायोमेट्रिक सिक्योरिटी पर निर्भर करेगा. बायोमेट्रिक सुरक्षा से जुड़ी खास बातों के बारे में ज़्यादा जानने के लिए, बायोमेट्रिक अनलॉक की सुरक्षा को मेज़र करना देखें.
सोर्स
Android 12
- BiometricManager.Strings एपीआई को पेश किया गया है. यह उन ऐप्लिकेशन के लिए स्थानीय भाषा में स्ट्रिंग उपलब्ध कराता है जो पुष्टि करने के लिए, BiometricPrompt का इस्तेमाल करते हैं. ये स्ट्रिंग, डिवाइस को जानकारी देने के लिए बनाई गई हैं. साथ ही, इनसे इस बारे में ज़्यादा सटीक जानकारी मिलती है कि पुष्टि करने के किस तरीके का इस्तेमाल किया जा सकता है.
- इसमें डिसप्ले में मौजूद फ़िंगरप्रिंट सेंसर (UDFPS) की सुविधा शामिल है.
Android 11
- पेश है BiometricManager.Authenticator इंटरफ़ेस. यह ऐसे कॉन्सटेंट उपलब्ध कराता है जिनका इस्तेमाल करके, डेवलपर यह तय कर सकते हैं कि उनके ऐप्लिकेशन में किस तरह की पुष्टि की जाती है.
ACTION_BIOMETRIC_ENROLL
इंटेंट ऐक्शन जोड़ता है. इसका इस्तेमाल करके, डेवलपर उपयोगकर्ता को पुष्टि करने के ऐसे तरीके के लिए रजिस्टर करने के लिए कह सकते हैं जो उनके ऐप्लिकेशन की ज़रूरी शर्तों को पूरा करता हो.AuthenticationResult#getAuthenticationType()
method जोड़ता है. इसका इस्तेमाल करके, डेवलपर यह पता लगा सकते हैं कि उपयोगकर्ता ने बायोमेट्रिक क्रेडेंशियल या डिवाइस क्रेडेंशियल का इस्तेमाल करके पुष्टि की है या नहीं.- BiometricPrompt क्लास में, हर बार इस्तेमाल करने पर पुष्टि करने के लिए, अतिरिक्त सहायता उपलब्ध कराता है.
Android 10
BiometricManager
क्लास की जानकारी दी गई है. इस क्लास का इस्तेमाल, बायोमेट्रिक ऑथेंटिकेशन की उपलब्धता के बारे में क्वेरी करने के लिए किया जा सकता है.- इसमें
BiometricPrompt
के लिए, फ़िंगरप्रिंट और चेहरे की पहचान करने की सुविधा शामिल है
Android 9
- इसमें सिर्फ़
BiometricPrompt
के लिए फ़िंगरप्रिंट इंटिग्रेशन शामिल है. - FingerprintManager क्लास को बंद कर दिया गया है. अगर आपके बंडल किए गए और सिस्टम ऐप्लिकेशन इस क्लास का इस्तेमाल करते हैं, तो उन्हें
BiometricPrompt
औरBiometricManager
का इस्तेमाल करने के लिए अपडेट करें. BiometricPromptBoundKeysTest
का इस्तेमाल करकेBiometricPrompt
की जांच करने के लिए,FingerprintManager
सीटीएस की पुष्टि करने वाले टेस्ट को अपडेट किया गया.
लागू करना
उपयोगकर्ताओं और डेवलपर को बेहतर बायोमेट्रिक अनुभव देने के लिए, अपने बायोमेट्रिक स्टैक को BiometricPrompt
,
BiometricManager
, और ACTION_BIOMETRIC_ENROLL
एपीआई के साथ इंटिग्रेट करें. बायोमेट्रिक सेंसर वाले डिवाइसों को इन ज़रूरी शर्तों का पालन करना होगा.इसके अलावा, सभी डिवाइसों को CtsBiometricsTestCases CTS मॉड्यूल की जांच पास करनी होगी.
अपने बायोमेट्रिक स्टैक को ACTION_BIOMETRIC_ENROLL API के साथ इंटिग्रेट करने के लिए:
- रजिस्टर करने का तरीका दिखाने के लिए, BiometricEnrollActivity में बदलाव करें. ध्यान दें कि आपका बायोमेट्रिक डेटा सिर्फ़ तब दिखाया जा सकता है, जब वह ज़रूरी शर्तों को पूरा करता हो. अगर आपके डिवाइस पर एक से ज़्यादा भाषाएं काम करती हैं, तो इस कार्रवाई से उपयोगकर्ता को एक सूची दिखेगी. इसमें से वह अपनी पसंद की भाषा चुन सकता है.
एचएएल लागू करने के दिशा-निर्देश
बायोमेट्रिक एचएएल के इन दिशा-निर्देशों का पालन करें, ताकि यह पक्का किया जा सके कि बायोमेट्रिक डेटा लीक न हो और किसी उपयोगकर्ता को डिवाइस से हटाने पर, वह डेटा हट जाए:
- पक्का करें कि रॉ बायोमेट्रिक डेटा या डेरिवेटिव (जैसे कि टेंप्लेट) को कभी भी सुरक्षित आइसोलेटेड एनवायरमेंट (जैसे, TEE या सिक्योर एलिमेंट) से ऐक्सेस न किया जा सके. सेव किए गए सभी डेटा को डिवाइस के हिसाब से बनाई गई कुंजी से एन्क्रिप्ट किया जाना चाहिए. इस कुंजी के बारे में सिर्फ़ टीईई (ट्रस्टेड एक्ज़ीक्यूशन एनवायरमेंट) को पता होता है. अगर हार्डवेयर इसकी अनुमति देता है, तो हार्डवेयर को सिर्फ़ सुरक्षित अलग-थलग किए गए एनवायरमेंट को ऐक्सेस करने की अनुमति दें. साथ ही, इसे SELinux नीति से सुरक्षित रखें. कम्यूनिकेशन चैनल (उदाहरण के लिए, SPI, I2C) को सिर्फ़ सुरक्षित अलग-थलग किए गए एनवायरमेंट के लिए ऐक्सेस करने की अनुमति दें. साथ ही, डिवाइस की सभी फ़ाइलों पर SELinux की साफ़ तौर पर बताई गई नीति लागू करें.
- डेटा के गलत इस्तेमाल और अन्य हमलों से बचने के लिए, बायोमेट्रिक डेटा हासिल करने, रजिस्टर करने, और पहचान करने की प्रोसेस, सुरक्षित अलग-थलग किए गए माहौल में होनी चाहिए. यह ज़रूरी शर्त सिर्फ़ क्लास 3 (पहले इसका नाम स्ट्रॉन्ग था) और क्लास 2 (पहले इसे कमज़ोर कहा गया था) बायोमेट्रिक्स पर लागू होती है.
- रिप्ले अटैक से बचने के लिए, बायोमेट्रिक टेंप्लेट पर डिवाइस के हिसाब से बनाई गई निजी पासकोड से हस्ताक्षर करें. ऐडवांस्ड एन्क्रिप्शन स्टैंडर्ड (एईएस) के लिए, कम से कम ऐब्सलूट फ़ाइल-सिस्टम पाथ, ग्रुप, और बायोमेट्रिक आईडी वाले ऐसे टेंप्लेट पर हस्ताक्षर करें जिससे टेंप्लेट फ़ाइलें किसी दूसरे डिवाइस पर या उसी डिवाइस पर रजिस्टर करने वाले उपयोगकर्ता के अलावा किसी और के लिए काम न करें. उदाहरण के लिए, एक ही डिवाइस या दूसरे डिवाइस पर किसी दूसरे उपयोगकर्ता का बायोमेट्रिक डेटा कॉपी करने से रोकें.
- अगर आपको टीईई के बाहर डेटा सेव करना है, तो
setActiveUser() HIDL method
से मिले फ़ाइल-सिस्टम पाथ का इस्तेमाल करें या उपयोगकर्ता को हटाने पर, उसके टेंप्लेट का सारा डेटा मिटाने का कोई दूसरा तरीका दें. इसकी वजह उपयोगकर्ता का डेटा लीक होने से बचाना है. जिन डिवाइसों पर इस पाथ का इस्तेमाल नहीं किया जाता है उन्हें उपयोगकर्ता हटाने के बाद, साफ़ करना ज़रूरी है. सीडीडी के मुताबिक, बायोमेट्रिक डेटा और डेरिवेटिव फ़ाइलों को एन्क्रिप्ट (सुरक्षित) करके सेव करना ज़रूरी है. ऐसा खास तौर पर तब ज़रूरी है, जब उन्हें टीईई में सेव न किया गया हो. अगर सुरक्षित और अलग-थलग किए गए एनवायरमेंट में स्टोरेज की ज़रूरतों की वजह से ऐसा करना मुमकिन नहीं है, तो उपयोगकर्ता को हटाने या डिवाइस को मिटाने पर डेटा हटाने के लिए हुक जोड़ें. LockSettingsService.removeBiometricForUser() को देखें
पसंद के मुताबिक बनाएं
अगर आपके डिवाइस पर एक से ज़्यादा बायोमेट्रिक्स काम करते हैं, तो उपयोगकर्ता को सेटिंग में डिफ़ॉल्ट तौर पर इस्तेमाल करने के लिए कोई बायोमेट्रिक्स चुनने का विकल्प मिलना चाहिए. लागू किए गए BiometricPrompt
में, क्लास 3 (पहले इसे स्ट्रॉन्ग कहा जाता था) बायोमेट्रिक को डिफ़ॉल्ट के तौर पर चुना जाना चाहिए. ऐसा तब तक होना चाहिए, जब तक उपयोगकर्ता साफ़ तौर पर इसे ओवरराइड न करे.
इसके बाद, बायोमेट्रिक से जुड़े जोखिमों के बारे में
एक चेतावनी मैसेज दिखाया जाना चाहिए. उदाहरण के लिए, आपकी फ़ोटो से डिवाइस अनलॉक हो सकता है
डिवाइस के हिसाब से पुष्टि करने वाली स्ट्रिंग
Android 12 से, डेवलपर के लिए BiometricManager.Strings API के ज़रिए, संदर्भ के हिसाब से पुष्टि करने वाली स्ट्रिंग उपलब्ध कराई गई हैं. डिवाइस के हिसाब से स्ट्रिंग लागू करने के लिए, इस एपीआई से मिलने वाली संसाधन वैल्यू को पसंद के मुताबिक बनाया जा सकता है. अगर ऐसा किया जाता है, तो पक्का करें कि सभी नई स्ट्रिंग का अनुवाद, उन सभी भाषाओं के लिए किया गया हो जिनका इस्तेमाल डिवाइस पर किया जा सकता है. इसके अलावा, पक्का करें कि ये प्रॉपर्टी सेव हों:
तरीका |
स्ट्रिंग का मकसद |
पुष्टि करने के लिए शामिल किए जाने वाले टाइप |
अगर बायोमेट्रिक और स्क्रीन लॉक, दोनों का इस्तेमाल किया जा सकता है |
---|---|---|---|
getButtonLabel() |
BiometricPrompt को ट्रिगर करने वाले बटन का लेबल |
अगर हो सके, तो सिर्फ़ रजिस्टर किए गए ऐसे टाइप का इस्तेमाल करें जो पुष्टि करने वाले डिवाइस की ज़रूरी शर्तों को पूरा करते हों |
सिर्फ़ बायोमेट्रिक स्ट्रिंग (जैसे, "फ़िंगरप्रिंट का इस्तेमाल करें") का इस्तेमाल करें |
getPromptMessage() |
पुष्टि करते समय, BiometricPrompt पर मैसेज दिखाया गया |
सिर्फ़ पुष्टि करने वाले से जुड़ी ज़रूरी शर्तों को पूरा करने वाले नाम रजिस्टर किए गए टाइप (अगर मुमकिन हो) |
बायोमेट्रिक और स्क्रीन लॉक स्ट्रिंग को मिलाकर इस्तेमाल करें (उदाहरण के लिए, "जारी रखने के लिए अपने फ़िंगरप्रिंट या पिन का इस्तेमाल करें") |
getSettingName() |
पुष्टि करने के लिए, BiometricPrompt को चालू करने वाली सेटिंग का नाम |
डिवाइस पर काम करने वाले सभी टाइप के ऐसे पुष्टि करने वाले तरीके जिनके लिए पुष्टि करने वाले तरीके की ज़रूरी शर्तें पूरी की गई हों. भले ही, वे रजिस्टर न किए गए हों |
बायोमेट्रिक और स्क्रीन लॉक की एक साथ इस्तेमाल की जाने वाली स्ट्रिंग का इस्तेमाल करें. जैसे, "फ़िंगरप्रिंट या स्क्रीन लॉक का इस्तेमाल करें" |
उदाहरण के लिए, ऐसे डिवाइस पर विचार करें जिसमें क्लास 2 फ़ेस सेंसर है. इसमें रजिस्टर किया गया फ़ेस, रजिस्टर किया गया पिन, और क्लास 3 फ़िंगरप्रिंट सेंसर है. हालांकि, इसमें कोई फ़िंगरप्रिंट रजिस्टर नहीं किया गया है. इस टेबल में, अनुमति वाले पुष्टि करने वाले तरीकों के हर कॉम्बिनेशन और BiometricManager.Strings के इस्तेमाल किए गए तरीके के लिए, सैंपल स्ट्रिंग दी गई हैं:
पुष्टि करने वाले ऐसे ऐप्लिकेशन जिन्हें अनुमति मिली है |
getButtonLabel() |
getPromptMessage() |
getSettingsName() |
---|---|---|---|
क्लास 3 बायोमेट्रिक (BIOMETRIC_STRONG) |
"फ़िंगरप्रिंट का इस्तेमाल करें" (सिर्फ़ फ़िंगरप्रिंट, पुष्टि करने वाले डिवाइस की ज़रूरी शर्तों को पूरा करता है) |
"जारी रखने के लिए, अपने फ़िंगरप्रिंट का इस्तेमाल करें" (पुष्टि करने वाले टूल की ज़रूरी शर्तें सिर्फ़ फ़िंगरप्रिंट से पूरी होती हैं) |
"फ़िंगरप्रिंट का इस्तेमाल करें" (सिर्फ़ फ़िंगरप्रिंट की पुष्टि करने वाले से जुड़ी ज़रूरी शर्तों को पूरा करता है) |
क्लास 2 बायोमेट्रिक (BIOMETRIC_WEAK) |
"चेहरे का इस्तेमाल करें" (चेहरा और फ़िंगरप्रिंट का इस्तेमाल, ज़रूरी शर्तें पूरी करता है; सिर्फ़ चेहरा रजिस्टर किया गया है) |
"जारी रखने के लिए अपने चेहरे का इस्तेमाल करें" (चेहरे और फ़िंगरप्रिंट की ज़रूरी शर्तें पूरी होती हैं; सिर्फ़ चेहरे की जानकारी को रजिस्टर किया जाता है) |
"फ़ेस या फ़िंगरप्रिंट का इस्तेमाल करें" (फ़ेस और फ़िंगरप्रिंट, दोनों की ज़रूरी शर्तें पूरी होती हैं; डिवाइस पर दोनों काम करते हैं) |
स्क्रीन लॉक (DEVICE_CREDENTIAL) |
"पिन का इस्तेमाल करें" (कोई भी स्क्रीन लॉक ज़रूरी शर्तें पूरी करता है; पिन रजिस्टर किया गया है) |
"जारी रखने के लिए अपना पिन डालें" (कोई भी स्क्रीन लॉक, ज़रूरी शर्तें पूरी करता है; पिन रजिस्टर किया गया है) |
"स्क्रीन लॉक का इस्तेमाल करें" (कोई भी स्क्रीन लॉक, ज़रूरी शर्तें पूरी करता है) |
क्लास 3 बायोमेट्रिक या स्क्रीन लॉक |
"पिन का इस्तेमाल करें" (फ़िंगरप्रिंट और सभी स्क्रीन लॉक ज़रूरी शर्तें पूरी करते हैं. सिर्फ़ पिन रजिस्टर किया जाता है) |
"जारी रखने के लिए पिन डालें" (फ़िंगरप्रिंट और कोई भी स्क्रीन लॉक ज़रूरी शर्तें पूरी करता है; सिर्फ़ पिन रजिस्टर किया जाता है) |
"फ़िंगरप्रिंट या स्क्रीन लॉक का इस्तेमाल करें" (फ़िंगरप्रिंट और कोई भी स्क्रीन लॉक, ज़रूरी शर्तें पूरी करता है) |
क्लास 2 बायोमेट्रिक या स्क्रीन लॉक |
"फ़ेस अनलॉक का इस्तेमाल करें" (फ़ेस, फ़िंगरप्रिंट, और कोई भी स्क्रीन लॉक, ज़रूरी शर्तें पूरी करता है; फ़ेस अनलॉक की सुविधा चालू होती है और पिन की जगह ले लेती है) |
"जारी रखने के लिए, अपना चेहरा दिखाएं या पिन डालें" (फ़ेस, फ़िंगरप्रिंट, और किसी भी तरह के स्क्रीन लॉक की ज़रूरी शर्तें पूरी होनी चाहिए. साथ ही, फ़ेस और पिन को रजिस्टर किया गया हो) |
"बायोमेट्रिक्स या स्क्रीन लॉक का इस्तेमाल करें" (फ़ेस, फ़िंगरप्रिंट, और स्क्रीन लॉक की ज़रूरी शर्तें पूरी करना) |
पुष्टि करें
आपके बायोमेट्रिक लागू करने की प्रक्रिया को इन जांचों में पास करना ज़रूरी है:
- CTS BiometricManager
- सीटीएस BiometricPrompt (सही काम करना, पूरी जांच करने के लिए पुष्टि करने वाले व्यक्ति पर निर्भर करता है)
- CtsVerifier बायोमेट्रिक टेस्ट सेक्शन: डिवाइस पर इस्तेमाल किए जा सकने वाले हर तरीके के साथ अलग-अलग पास होना ज़रूरी है
इसके अलावा, अगर आपके डिवाइस पर किसी ऐसी बायोमेट्रिक सुविधा का इस्तेमाल किया जा सकता है जिसमें AOSP HIDL (fingerprint@2.1, fingerprint@2.2, face1.0) है, तो उसे fingerprint, face से जुड़े VTS टेस्ट में पास होना होगा