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