बायोमेट्रिक्स

बायोमेट्रिक्स की मदद से, डिवाइस से अपनी पहचान की पुष्टि करना ज़्यादा आसान होता है. हालांकि, यह तरीका ज़्यादा सुरक्षित नहीं होता. पुष्टि करने के अलग-अलग लेवल वाले मॉडल के तहत, मुख्य पुष्टि (जैसे, पिन, पैटर्न, और पासवर्ड जैसे नॉलेज फ़ैक्टर पर आधारित तरीके) सबसे ज़्यादा सुरक्षा देती है. बायोमेट्रिक ऑथेंटिकेशन, पुष्टि करने के दूसरे टीयर में आता है. इससे सहूलियत और सुरक्षा, दोनों मिलती हैं. Android के सीडीडी में, बायोमेट्रिक सुरक्षा की तीन क्लास तय की गई हैं: क्लास 3 (पहले इसे 'बेहतर' कहा जाता था), क्लास 2 (पहले इसे 'कम सुरक्षित' कहा जाता था), और क्लास 1 (पहले इसे 'सुविधाजनक' कहा जाता था). हर क्लास के लिए, ज़रूरी शर्तें, विशेषाधिकार, और पाबंदियां तय की गई हैं. ज़्यादा जानकारी के लिए, ऊपर दिया गया सीडीडी देखें. तीनों क्लास को लॉकस्क्रीन के साथ इंटिग्रेट करने की अनुमति है. हालांकि, सिर्फ़ मज़बूत और कमज़ोर पुष्टि करने वाले एट्रिब्यूटर को android.hardware.biometrics APIs के साथ इंटिग्रेट करने की अनुमति है. इस टेबल में, हर ऑथेंटिकेटर और उनमें काम करने वाली सुविधाओं के बारे में बताया गया है.

Authenticator लॉकस्क्रीन BiometricPrompt इंटिग्रेशन कीस्टोर (समय के हिसाब से बनी कुंजी) कीस्टोर (कार्रवाई पर आधारित कुंजी)
BIOMETRIC_STRONG (क्लास 3) हां हां हां हां
BIOMETRIC_WEAK (क्लास 2) हां हां नहीं नहीं
BIOMETRIC_CONVENIENCE
(क्लास 1)
हां नहीं नहीं नहीं
DEVICE_CREDENTIAL हां हां हां हां

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

सोर्स

Android 12

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

Android 11

  • BiometricManager.Authenticators इंटरफ़ेस को पेश किया गया है. इसमें ऐसे कॉन्स्टेंट दिए गए हैं जिनका इस्तेमाल करके, डेवलपर यह तय कर सकते हैं कि उनके ऐप्लिकेशन पर पुष्टि करने के लिए कौनसे तरीके इस्तेमाल किए जा सकते हैं.
  • 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 के साथ इंटिग्रेट करने के लिए:

  1. रजिस्टर करने का तरीका दिखाने के लिए, BiometricEnrollActivity में बदलाव करें. ध्यान दें कि आपका बायोमेट्रिक डेटा सिर्फ़ तब दिखाया जा सकता है, जब वह ज़रूरी शर्तों को पूरा करता हो. अगर आपके डिवाइस पर एक से ज़्यादा भाषाएं काम करती हैं, तो इस कार्रवाई से उपयोगकर्ता को एक सूची दिखेगी. इसमें से वह अपनी पसंद की भाषा चुन सकता है.
BiometricPrompt का आर्किटेक्चर
पहली इमेज. BiometricPrompt का आर्किटेक्चर

एचएएल लागू करने के दिशा-निर्देश

बायोमेट्रिक एचएएल के इन दिशा-निर्देशों का पालन करें, ताकि यह पक्का किया जा सके कि बायोमेट्रिक डेटा लीक न हो और किसी उपयोगकर्ता को डिवाइस से हटाने पर, वह डेटा मिटाया जाए:

  • पक्का करें कि रॉ बायोमेट्रिक डेटा या डेरिवेट (जैसे, टेंप्लेट) को कभी भी सुरक्षित अलग-थलग रखे गए एनवायरमेंट (जैसे, टीईई या सुरक्षित एलिमेंट) से बाहर से ऐक्सेस न किया जा सके. सेव किए गए सभी डेटा को डिवाइस के हिसाब से बनाई गई कुंजी से एन्क्रिप्ट किया जाना चाहिए. इस कुंजी के बारे में सिर्फ़ टीईई (ट्रस्टेड एक्ज़ीक्यूशन एनवायरमेंट) को पता होता है. अगर हार्डवेयर इसकी अनुमति देता है, तो हार्डवेयर के ऐक्सेस को सुरक्षित अलग-थलग किए गए एनवायरमेंट तक सीमित करें और उसे SELinux नीति से सुरक्षित रखें. कम्यूनिकेशन चैनल (उदाहरण के लिए, SPI, I2C) को सिर्फ़ सुरक्षित अलग-थलग किए गए एनवायरमेंट के लिए ऐक्सेस करने की अनुमति दें. साथ ही, डिवाइस की सभी फ़ाइलों पर SELinux की साफ़ तौर पर बताई गई नीति लागू करें.
  • डेटा के गलत इस्तेमाल और अन्य हमलों से बचने के लिए, बायोमेट्रिक डेटा हासिल करने, रजिस्टर करने, और पहचान करने की प्रोसेस, सुरक्षित अलग-थलग किए गए माहौल में होनी चाहिए. यह ज़रूरी शर्त सिर्फ़ क्लास 3 (पहले इसे 'बेहतर' कहा जाता था) और क्लास 2 (पहले इसे 'कम सुरक्षित' कहा जाता था) बायोमेट्रिक्स पर लागू होती है.
  • रिप्ले अटैक से बचने के लिए, बायोमेट्रिक टेंप्लेट पर डिवाइस के हिसाब से बनाई गई निजी पासकोड से हस्ताक्षर करें. ऐडवांस एन्क्रिप्शन स्टैंडर्ड (एईएस) के लिए, कम से कम फ़ाइल-सिस्टम के सटीक पाथ, ग्रुप, और बायोमेट्रिक आईडी वाले टेंप्लेट पर हस्ताक्षर करें. इससे टेंप्लेट की फ़ाइलें किसी दूसरे डिवाइस पर काम नहीं करेंगी. इसके अलावा, टेंप्लेट को उस डिवाइस पर रजिस्टर करने वाले व्यक्ति के अलावा कोई और भी ऐक्सेस नहीं कर पाएगा. उदाहरण के लिए, एक ही डिवाइस पर या किसी दूसरे डिवाइस पर किसी दूसरे उपयोगकर्ता का बायोमेट्रिक डेटा कॉपी करने से रोकना.
  • अगर आपको टीईई के बाहर डेटा सेव करना है, तो setActiveUser() HIDL method से मिले फ़ाइल-सिस्टम पाथ का इस्तेमाल करें या उपयोगकर्ता को हटाने पर, उसके टेंप्लेट का सारा डेटा मिटाने का कोई दूसरा तरीका दें. ऐसा इसलिए किया जाता है, ताकि उपयोगकर्ता के डेटा को लीक होने से बचाया जा सके. जिन डिवाइसों में इस पाथ का इस्तेमाल नहीं किया जाता है उन्हें उपयोगकर्ता हटाने के बाद, साफ़ करना ज़रूरी है. सीडीडी के मुताबिक, बायोमेट्रिक डेटा और डेरिवेटिव फ़ाइलों को एन्क्रिप्ट (सुरक्षित) करके सेव करना ज़रूरी है. ऐसा खास तौर पर तब ज़रूरी है, जब उन्हें टीईई में सेव न किया गया हो. अगर सुरक्षित और अलग-थलग किए गए एनवायरमेंट के स्टोरेज की ज़रूरतों की वजह से ऐसा करना मुमकिन नहीं है, तो उपयोगकर्ता को हटाने या डिवाइस को मिटाने पर डेटा हटाने के लिए हुक जोड़ें. LockSettingsService.removeBiometricsForUser() देखें

पसंद के मुताबिक बनाएं

अगर आपके डिवाइस पर एक से ज़्यादा बायोमेट्रिक डेटा सेव करने की सुविधा है, तो उपयोगकर्ता को सेटिंग में जाकर, डिफ़ॉल्ट तौर पर इस्तेमाल होने वाला बायोमेट्रिक डेटा चुनने का विकल्प मिलना चाहिए. BiometricPrompt को लागू करते समय, डिफ़ॉल्ट रूप से तीसरी क्लास (पहले इसे 'मज़बूत' कहा जाता था) की बायोमेट्रिक सुविधा का इस्तेमाल करना चाहिए. हालांकि, अगर उपयोगकर्ता साफ़ तौर पर इसे बदलता है, तो बायोमेट्रिक से जुड़े जोखिमों के बारे में बताने वाला चेतावनी मैसेज दिखाना ज़रूरी है. उदाहरण के लिए, आपकी फ़ोटो से आपका डिवाइस अनलॉक हो सकता है

डिवाइस के हिसाब से पुष्टि करने वाली स्ट्रिंग

Android 12 से, डेवलपर के लिए BiometricManager.Strings API के ज़रिए, संदर्भ के हिसाब से पुष्टि करने वाली स्ट्रिंग उपलब्ध कराई गई हैं. डिवाइस के हिसाब से स्ट्रिंग लागू करने के लिए, इस एपीआई से मिलने वाली संसाधन वैल्यू को पसंद के मुताबिक बनाया जा सकता है. अगर ऐसा किया जाता है, तो पक्का करें कि सभी नई स्ट्रिंग का अनुवाद, उन सभी भाषाओं के लिए किया गया हो जिनका इस्तेमाल डिवाइस पर किया जा सकता है. इसके अलावा, पक्का करें कि ये प्रॉपर्टी सेव की गई हों:


तरीका

स्ट्रिंग का मकसद

पुष्टि करने के तरीके

अगर बायोमेट्रिक और स्क्रीन लॉक, दोनों का इस्तेमाल किया जा सकता है

getButtonLabel()

BiometricPrompt को ट्रिगर करने वाले बटन का लेबल

अगर हो सके, तो सिर्फ़ रजिस्टर किए गए ऐसे टाइप का इस्तेमाल करें जो पुष्टि करने वाले डिवाइस की ज़रूरी शर्तों को पूरा करते हों

सिर्फ़ बायोमेट्रिक स्ट्रिंग का इस्तेमाल करें. जैसे, "फ़िंगरप्रिंट का इस्तेमाल करें"

getPromptMessage()

पुष्टि करते समय, BiometricPrompt पर दिखने वाला मैसेज

अगर हो सके, तो सिर्फ़ रजिस्टर किए गए ऐसे टाइप का इस्तेमाल करें जो पुष्टि करने वाले डिवाइस की ज़रूरी शर्तों को पूरा करते हों

बायोमेट्रिक और स्क्रीन लॉक की एक साथ इस्तेमाल की जाने वाली स्ट्रिंग का इस्तेमाल करें. उदाहरण के लिए, "जारी रखने के लिए, फ़िंगरप्रिंट या पिन का इस्तेमाल करें"

getSettingName()

ऑथेंटिकेशन के लिए, BiometricPrompt को चालू करने वाली सेटिंग का नाम

डिवाइस पर काम करने वाले सभी टाइप के ऐसे पुष्टि करने वाले तरीके जिनके लिए पुष्टि करने वाले तरीके की ज़रूरी शर्तें पूरी की गई हों. भले ही, वे रजिस्टर न किए गए हों

बायोमेट्रिक और स्क्रीन लॉक की एक साथ इस्तेमाल की जाने वाली स्ट्रिंग का इस्तेमाल करें. जैसे, "फ़िंगरप्रिंट या स्क्रीन लॉक का इस्तेमाल करें"

उदाहरण के लिए, ऐसे डिवाइस पर विचार करें जिसमें क्लास 2 फ़ेस सेंसर है. इसमें रजिस्टर किया गया फ़ेस, रजिस्टर किया गया पिन, और क्लास 3 फ़िंगरप्रिंट सेंसर है. हालांकि, इसमें कोई फ़िंगरप्रिंट रजिस्टर नहीं किया गया है. इस टेबल में, अनुमति वाले पुष्टि करने वाले तरीकों के हर कॉम्बिनेशन और BiometricManager.Strings के इस्तेमाल किए गए तरीके के लिए, सैंपल स्ट्रिंग दी गई हैं:


पुष्टि करने वाले ऐसे ऐप्लिकेशन जिन्हें अनुमति मिली है

getButtonLabel()

getPromptMessage()

getSettingName()

क्लास 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 टेस्ट में पास होना चाहिए