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

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

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

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

स्रोत

Android 12

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

Android 11

  • BiometricManager.Authenticators इंटरफ़ेस पेश किया गया है. यह ऐसे कॉन्स्टेंट उपलब्ध कराता है जिनका इस्तेमाल डेवलपर, यह तय करने के लिए कर सकते हैं कि उनके ऐप्लिकेशन में किस तरह की पुष्टि करने की सुविधा काम करेगी.
  • इसमें ACTION_BIOMETRIC_ENROLL इंटेंट ऐक्शन जोड़ा गया है. डेवलपर इसका इस्तेमाल करके, उपयोगकर्ता को पुष्टि करने के ऐसे तरीके के लिए रजिस्टर करने का निर्देश दे सकते हैं जो उनके ऐप्लिकेशन की ज़रूरी शर्तों को पूरा करता हो.
  • AuthenticationResult#getAuthenticationType() method को जोड़ता है. डेवलपर इसका इस्तेमाल यह देखने के लिए कर सकते हैं कि उपयोगकर्ता ने बायोमेट्रिक क्रेडेंशियल या डिवाइस क्रेडेंशियल का इस्तेमाल करके पुष्टि की है या नहीं.
  • BiometricPrompt क्लास में, auth-per-use कुंजियों के लिए अतिरिक्त सहायता उपलब्ध कराता है.

Android 10

  • BiometricManager class को पेश करता है. डेवलपर इसका इस्तेमाल करके, बायोमेट्रिक ऑथेंटिकेशन की उपलब्धता के बारे में क्वेरी कर सकते हैं.
  • इसमें BiometricPrompt के लिए, फ़िंगरप्रिंट और चेहरे की पहचान करके पुष्टि करने की सुविधा को इंटिग्रेट करने की सुविधा शामिल है

Android 9

  • इसमें सिर्फ़ BiometricPrompt के लिए फ़िंगरप्रिंट इंटिग्रेशन शामिल है.
  • FingerprintManager क्लास को बंद कर दिया गया है. अगर आपके बंडल किए गए और सिस्टम ऐप्लिकेशन इस क्लास का इस्तेमाल करते हैं, तो उन्हें BiometricPrompt और BiometricManager का इस्तेमाल करने के लिए अपडेट करें.
  • BiometricPromptBoundKeysTest का इस्तेमाल करके BiometricPrompt की जांच करने के लिए, FingerprintManager CTS verifier टेस्ट अपडेट किए गए.

लागू करना

यह पक्का करें कि उपयोगकर्ताओं और डेवलपर को बायोमेट्रिक ऑथेंटिकेशन का बेहतर अनुभव मिले. इसके लिए, अपने बायोमेट्रिक स्टैक को BiometricPrompt, BiometricManager, और ACTION_BIOMETRIC_ENROLL एपीआई के साथ इंटिग्रेट करें. बायोमेट्रिक सेंसर वाले डिवाइसों को, मज़बूती से जुड़ी इन ज़रूरी शर्तों का पालन करना होगा.इसके अलावा, सभी डिवाइसों को CtsBiometricsTestCases CTS मॉड्यूल पास करना होगा.

अपने बायोमेट्रिक स्टैक को ACTION_BIOMETRIC_ENROLL API के साथ इंटिग्रेट करने के लिए:

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

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

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

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

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

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

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

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


तरीका

String purpose

पुष्टि करने के लिए शामिल किए जाने वाले तरीके

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

getButtonLabel()

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

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

biometric-only स्ट्रिंग का इस्तेमाल करें. जैसे, "फ़िंगरप्रिंट का इस्तेमाल करें"

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 Biometric Test section: डिवाइस पर काम करने वाले हर तरीके के लिए, यह टेस्ट अलग-अलग पास होना चाहिए

इसके अलावा, अगर आपके डिवाइस पर ऐसा बायोमेट्रिक काम करता है जिसमें एओएसपी एचआईडीएल (fingerprint@2.1, fingerprint@2.2, face1.0) है, तो उसे वीटीएस के ज़रूरी टेस्ट (fingerprint, face) पास करने होंगे