फ़िंगरप्रिंट सेंसर वाले उपकरणों पर, उपयोगकर्ता एक या अधिक फ़िंगरप्रिंट दर्ज कर सकते हैं और उन फ़िंगरप्रिंट का उपयोग डिवाइस को अनलॉक करने और अन्य कार्यों को करने के लिए कर सकते हैं। Android फ़िंगरप्रिंट हार्डवेयर इंटरफ़ेस डेफिनिशन लैंग्वेज (HIDL) का उपयोग विक्रेता-विशिष्ट लाइब्रेरी और फ़िंगरप्रिंट हार्डवेयर (उदाहरण के लिए, फ़िंगरप्रिंट सेंसर) से कनेक्ट करने के लिए करता है।
फ़िंगरप्रिंट एचआईडीएल को लागू करने के लिए, आपको एक विक्रेता-विशिष्ट पुस्तकालय में IBiometricsFingerprint.hal
लागू करना होगा।
फ़िंगरप्रिंट मिलान
डिवाइस का फिंगरप्रिंट सेंसर आमतौर पर निष्क्रिय रहता है। हालांकि, authenticate
या enroll
के लिए कॉल के जवाब में, फ़िंगरप्रिंट सेंसर एक स्पर्श के लिए सुनता है (जब उपयोगकर्ता फ़िंगरप्रिंट सेंसर को छूता है तो स्क्रीन भी जाग सकती है)। फ़िंगरप्रिंट मिलान के उच्च-स्तरीय प्रवाह में निम्नलिखित चरण शामिल हैं:
- उपयोगकर्ता फिंगरप्रिंट सेंसर पर उंगली रखता है।
- विक्रेता-विशिष्ट लाइब्रेरी यह निर्धारित करती है कि नामांकित फ़िंगरप्रिंट टेम्प्लेट के वर्तमान सेट में फ़िंगरप्रिंट मिलान है या नहीं।
- मिलान परिणाम
FingerprintService
को पास कर दिए जाते हैं।
यह प्रवाह मानता है कि डिवाइस पर फ़िंगरप्रिंट पहले ही नामांकित हो चुका है, यानी विक्रेता-विशिष्ट लाइब्रेरी ने फ़िंगरप्रिंट के लिए एक टेम्प्लेट नामांकित किया है। अधिक विवरण के लिए, प्रमाणीकरण देखें।
आर्किटेक्चर
फ़िंगरप्रिंट एचएएल निम्नलिखित घटकों के साथ सहभागिता करता है।
-
BiometricManager
किसी ऐप प्रोसेस में सीधे ऐप के साथ इंटरैक्ट करता है। प्रत्येक ऐप मेंIBiometricsFingerprint.hal
. का एक उदाहरण है -
FingerprintService
सिस्टम प्रक्रिया में संचालित होती है, जो फ़िंगरप्रिंट एचएएल के साथ संचार को संभालती है। - फ़िंगरप्रिंट HAL IBiometricsफ़िंगरप्रिंट HIDL इंटरफ़ेस का C/C++ कार्यान्वयन है। इसमें विक्रेता-विशिष्ट लाइब्रेरी शामिल है जो डिवाइस-विशिष्ट हार्डवेयर के साथ संचार करती है।
- कीस्टोर एपीआई और कीमास्टर घटक एक सुरक्षित वातावरण में सुरक्षित कुंजी भंडारण के लिए हार्डवेयर-समर्थित क्रिप्टोग्राफी प्रदान करते हैं, जैसे कि विश्वसनीय निष्पादन पर्यावरण (टीईई)।

एक विक्रेता-विशिष्ट एचएएल कार्यान्वयन को टीईई द्वारा आवश्यक संचार प्रोटोकॉल का उपयोग करना चाहिए। कच्ची छवियों और संसाधित फ़िंगरप्रिंट सुविधाओं को अविश्वसनीय स्मृति में पारित नहीं किया जाना चाहिए। ऐसे सभी बायोमेट्रिक डेटा को टीईई जैसे सुरक्षित हार्डवेयर में संग्रहित करने की आवश्यकता होती है। रूटिंग बायोमेट्रिक डेटा से समझौता करने में सक्षम नहीं होना चाहिए।
FingerprintService
सेवा और fingerprintd
, फ़िंगरप्रिंट एचएएल के माध्यम से फ़िंगरप्रिंट को नामांकित करने और अन्य संचालन करने के लिए विक्रेता-विशिष्ट पुस्तकालय में कॉल करते हैं।

कार्यान्वयन दिशानिर्देश
निम्नलिखित फ़िंगरप्रिंट एचएएल दिशानिर्देश यह सुनिश्चित करने के लिए डिज़ाइन किए गए हैं कि फ़िंगरप्रिंट डेटा लीक नहीं होता है और जब उपयोगकर्ता को डिवाइस से हटा दिया जाता है तो उसे हटा दिया जाता है:
- अपरिष्कृत फ़िंगरप्रिंट डेटा या डेरिवेटिव (उदाहरण के लिए, टेम्प्लेट) को कभी भी सेंसर ड्राइवर या टीईई के बाहर से एक्सेस नहीं किया जाना चाहिए। यदि हार्डवेयर टीईई का समर्थन करता है, तो हार्डवेयर एक्सेस टीईई तक सीमित होना चाहिए और एक SELinux नीति द्वारा संरक्षित होना चाहिए। सीरियल पेरिफेरल इंटरफेस (एसपीआई) चैनल केवल टीईई के लिए सुलभ होना चाहिए और सभी डिवाइस फाइलों पर एक स्पष्ट SELinux नीति होनी चाहिए।
- टीईई के अंदर फ़िंगरप्रिंट अधिग्रहण, नामांकन और मान्यता होनी चाहिए।
- फ़िंगरप्रिंट डेटा का केवल एन्क्रिप्टेड रूप फ़ाइल सिस्टम पर संग्रहीत किया जा सकता है, भले ही फ़ाइल सिस्टम स्वयं एन्क्रिप्ट किया गया हो।
- फ़िंगरप्रिंट टेम्प्लेट को एक निजी, डिवाइस-विशिष्ट कुंजी के साथ हस्ताक्षरित किया जाना चाहिए। उन्नत एन्क्रिप्शन स्टैंडर्ड (एईएस) के लिए, कम से कम एक टेम्पलेट को पूर्ण फ़ाइल-सिस्टम पथ, समूह और फिंगर आईडी के साथ हस्ताक्षरित किया जाना चाहिए, ताकि टेम्पलेट फाइलें किसी अन्य डिवाइस पर या उपयोगकर्ता के अलावा किसी अन्य के लिए निष्क्रिय हो, जिसने उन्हें नामांकित किया था। एक ही उपकरण। उदाहरण के लिए, एक ही डिवाइस पर या किसी अन्य डिवाइस से किसी भिन्न उपयोगकर्ता से फ़िंगरप्रिंट डेटा की प्रतिलिपि बनाना काम नहीं करना चाहिए।
- कार्यान्वयन को या तो
setActiveGroup()
फ़ंक्शन द्वारा प्रदान किए गए फ़ाइल-सिस्टम पथ का उपयोग करना चाहिए या उपयोगकर्ता को हटाए जाने पर सभी उपयोगकर्ता टेम्पलेट डेटा को मिटाने का एक तरीका प्रदान करना चाहिए। यह दृढ़ता से अनुशंसा की जाती है कि फ़िंगरप्रिंट टेम्प्लेट फ़ाइलों को एन्क्रिप्टेड के रूप में संग्रहीत किया जाए और प्रदान किए गए पथ में संग्रहीत किया जाए। यदि यह टीईई भंडारण आवश्यकताओं के कारण संभव नहीं है, तो उपयोगकर्ता को हटाए जाने पर डेटा को हटाने को सुनिश्चित करने के लिए कार्यान्वयनकर्ता को हुक जोड़ना होगा।
फ़िंगरप्रिंट के तरीके
फ़िंगरप्रिंट HIDL इंटरफ़ेस में IBiometricsFingerprint.hal
में निम्नलिखित प्रमुख विधियाँ शामिल हैं।
तरीका | विवरण |
---|---|
enroll() | फ़िंगरप्रिंट टेम्पलेट का संग्रह और संग्रहण प्रारंभ करने के लिए HAL स्टेट मशीन को स्विच करता है। जब नामांकन पूरा हो जाता है, या समय समाप्त होने के बाद, एचएएल राज्य मशीन निष्क्रिय स्थिति में वापस आ जाती है। |
preEnroll() | फ़िंगरप्रिंट नामांकन की शुरुआत को इंगित करने के लिए एक अद्वितीय टोकन उत्पन्न करता है। यह सुनिश्चित करने के लिए enroll फ़ंक्शन को एक टोकन प्रदान करता है कि पूर्व प्रमाणीकरण था, उदाहरण के लिए, पासवर्ड का उपयोग करना। छेड़छाड़ को रोकने के लिए, डिवाइस क्रेडेंशियल की पुष्टि के बाद टोकन लपेटा जाता है। यह सत्यापित करने के लिए कि यह अभी भी मान्य है, नामांकन के दौरान टोकन की जाँच की जानी चाहिए। |
getAuthenticatorId() | वर्तमान फ़िंगरप्रिंट सेट से संबद्ध टोकन लौटाता है। |
cancel() | लंबित नामांकन रद्द करता है या संचालन प्रमाणित करता है। HAL स्टेट मशीन को निष्क्रिय अवस्था में लौटा दिया जाता है। |
enumerate() | सभी ज्ञात फ़िंगरप्रिंट टेम्प्लेट की गणना के लिए सिंक्रोनस कॉल। |
remove() | एक फ़िंगरप्रिंट टेम्पलेट हटाता है। |
setActiveGroup() | एक समूह पहचानकर्ता (जीआईडी) द्वारा पहचाने गए एक निर्दिष्ट समूह से संबंधित उंगलियों के निशान के एक सेट के लिए एक एचएएल संचालन को प्रतिबंधित करता है। |
authenticate() | एक फ़िंगरप्रिंट-संबंधित ऑपरेशन को प्रमाणित करता है (एक ऑपरेशन आईडी द्वारा पहचाना जाता है)। |
setNotify() | एक उपयोगकर्ता फ़ंक्शन पंजीकृत करता है जो एचएएल से सूचनाएं प्राप्त करता है। यदि एचएएल राज्य मशीन व्यस्त स्थिति में है, तो एचएएल के व्यस्त राज्य छोड़ने तक फ़ंक्शन अवरुद्ध हो जाता है। |
postEnroll() | नामांकन प्रक्रिया को पूरा करता है और preEnroll() उत्पन्न चुनौती को अमान्य करता है। यह इंगित करने के लिए कि कोई और उंगलियां नहीं जोड़ी जा सकतीं, इसे मल्टीफ़िंगर नामांकन सत्र के अंत में बुलाया जाना चाहिए। |
इन पर अधिक विवरण के लिए, IBiometricsFingerprint.hal
में टिप्पणियों का संदर्भ लें।