বায়োমেট্রিক্স ডিভাইসের মাধ্যমে আপনার পরিচয় নিশ্চিত করার জন্য আরও সুবিধাজনক, কিন্তু সম্ভাব্যভাবে কম নিরাপদ উপায় প্রদান করে। স্তরযুক্ত প্রমাণীকরণ মডেলের অধীনে, প্রাথমিক প্রমাণীকরণ (অর্থাৎ, জ্ঞান-ফ্যাক্টর ভিত্তিক পদ্ধতি যেমন পিন, প্যাটার্ন এবং পাসওয়ার্ড) সর্বোচ্চ স্তরের নিরাপত্তা প্রদান করে। বায়োমেট্রিক্স প্রমাণীকরণের দ্বিতীয় স্তরে রয়েছে, যা সুবিধা এবং সুরক্ষার ভারসাম্য প্রদান করে। অ্যান্ড্রয়েড সিডিডি বায়োমেট্রিক শক্তির তিনটি শ্রেণীকে সংজ্ঞায়িত করে: ক্লাস 3 (পূর্বে শক্তিশালী), ক্লাস 2 (পূর্বে দুর্বল), এবং ক্লাস 1 (পূর্বে সুবিধা)। প্রতিটি শ্রেণীর পূর্বশর্ত, সুযোগ-সুবিধা এবং সীমাবদ্ধতার একটি সেট রয়েছে - আরও বিস্তারিত জানার জন্য দয়া করে উপরের সিডিডিটি দেখুন। তিনটি শ্রেণীই লকস্ক্রিনের সাথে একীভূত করার অনুমতিপ্রাপ্ত, তবে কেবল শক্তিশালী এবং দুর্বল প্রমাণীকরণকারীই android.hardware.biometrics API-এর সাথে একীভূত করার অনুমতিপ্রাপ্ত। এই সারণীটি প্রতিটি প্রমাণীকরণকারী এবং তারা যে কার্যকারিতা সমর্থন করে তা বর্ণনা করে।
| প্রমাণীকরণকারী | লকস্ক্রিন | বায়োমেট্রিকপ্রম্পট ইন্টিগ্রেশন | কীস্টোর (সময়-ভিত্তিক কী) | কীস্টোর (অপারেশন-ভিত্তিক কী) |
|---|---|---|---|---|
| BIOMETRIC_STRONG (শ্রেণি ৩) | হাঁ | হাঁ | হাঁ | হাঁ |
| বায়োমেট্রিক_দুর্বল (দ্বিতীয় শ্রেণী) | হাঁ | হাঁ | না | না |
| বায়োমেট্রিক_সুবিধা (ক্লাস ১) | হাঁ | না | না | না |
| ডিভাইস_ক্রেডেন্টিয়াল | হাঁ | হাঁ | হাঁ | হাঁ |
অ্যান্ড্রয়েড ফ্রেমওয়ার্কে মুখ এবং আঙুলের ছাপের বায়োমেট্রিক প্রমাণীকরণের জন্য সমর্থন রয়েছে। অন্যান্য বায়োমেট্রিক পদ্ধতি (যেমন আইরিস) সমর্থন করার জন্য অ্যান্ড্রয়েডকে কাস্টমাইজ করা যেতে পারে। তবে, বায়োমেট্রিক ইন্টিগ্রেশন বায়োমেট্রিক সুরক্ষার উপর নির্ভর করবে, পদ্ধতির উপর নয়। বায়োমেট্রিক সুরক্ষা স্পেসিফিকেশন সম্পর্কে আরও তথ্যের জন্য, পরিমাপ বায়োমেট্রিক আনলক সুরক্ষা দেখুন।
উৎস
অ্যান্ড্রয়েড ১২
- BiometricManager.Strings API প্রবর্তন করে, যা প্রমাণীকরণের জন্য BiometricPrompt ব্যবহার করে এমন অ্যাপগুলির জন্য স্থানীয় স্ট্রিং সরবরাহ করে। এই স্ট্রিংগুলি ডিভাইস-সচেতন করার জন্য এবং কোন প্রমাণীকরণের ধরণ(গুলি) ব্যবহার করা যেতে পারে সে সম্পর্কে আরও সুনির্দিষ্টতা প্রদানের উদ্দেশ্যে তৈরি করা হয়েছে।
- আন্ডার-ডিসপ্লে ফিঙ্গারপ্রিন্ট সেন্সর (UDFPS) সাপোর্ট অন্তর্ভুক্ত।
অ্যান্ড্রয়েড ১১
- BiometricManager.Authenticators ইন্টারফেসটি প্রবর্তন করে, যা এমন ধ্রুবক প্রদান করে যা ডেভেলপাররা তাদের অ্যাপ দ্বারা গৃহীত প্রমাণীকরণের ধরণ নির্দিষ্ট করতে ব্যবহার করতে পারে।
-
ACTION_BIOMETRIC_ENROLLইনটেন্ট অ্যাকশন যোগ করে, যা ডেভেলপাররা ব্যবহারকারীকে তাদের অ্যাপের প্রয়োজনীয়তা পূরণ করে এমন একটি প্রমাণীকরণ পদ্ধতি নথিভুক্ত করার নির্দেশ দিতে ব্যবহার করতে পারে। -
AuthenticationResult #getAuthenticationType ()পদ্ধতি যোগ করে, যা ডেভেলপাররা ব্যবহারকারী বায়োমেট্রিক শংসাপত্র ব্যবহার করে প্রমাণীকরণ করেছেন কিনা তা পরীক্ষা করতে ব্যবহার করতে পারেন, নাকি ডিভাইস শংসাপত্র ব্যবহার করে। - BiometricPrompt ক্লাসের মধ্যে auth-per-use কীগুলির জন্য অতিরিক্ত সহায়তা প্রদান করে।
অ্যান্ড্রয়েড ১০
-
BiometricManagerক্লাসটি প্রবর্তন করে যা ডেভেলপাররা বায়োমেট্রিক প্রমাণীকরণের প্রাপ্যতা সম্পর্কে জিজ্ঞাসা করতে ব্যবহার করতে পারে। -
BiometricPromptজন্য ফিঙ্গারপ্রিন্ট এবং ফেস প্রমাণীকরণ ইন্টিগ্রেশন অন্তর্ভুক্ত
অ্যান্ড্রয়েড ৯
- শুধুমাত্র
BiometricPromptএর জন্য ফিঙ্গারপ্রিন্ট ইন্টিগ্রেশন অন্তর্ভুক্ত। - FingerprintManager ক্লাসটি বন্ধ করে দেয়। যদি আপনার বান্ডেল করা এবং সিস্টেম অ্যাপগুলি এই ক্লাসটি ব্যবহার করে, তাহলে
BiometricPromptএবংBiometricManagerব্যবহার করার জন্য সেগুলি আপডেট করুন। -
BiometricPromptBoundKeysTestব্যবহার করেBiometricPromptপরীক্ষা করার জন্যFingerprintManagerCTS যাচাইকারী পরীক্ষা আপডেট করা হয়েছে।
বাস্তবায়ন
ব্যবহারকারী এবং ডেভেলপারদের একটি নির্বিঘ্ন বায়োমেট্রিক অভিজ্ঞতা নিশ্চিত করতে, আপনার বায়োমেট্রিক স্ট্যাককে BiometricPrompt , BiometricManager , এবং ACTION_BIOMETRIC_ENROLL API-এর সাথে একীভূত করুন। বায়োমেট্রিক সেন্সরযুক্ত ডিভাইসগুলিকে এই শক্তির প্রয়োজনীয়তাগুলি মেনে চলতে হবে। এছাড়াও, সমস্ত বাস্তবায়নকে CtsBiometricsTestCases CTS মডিউল পাস করতে হবে।
আপনার বায়োমেট্রিক স্ট্যাককে ACTION_BIOMETRIC_ENROLL API এর সাথে একীভূত করতে:
- আপনার তালিকাভুক্তির প্রবাহ উপস্থাপন করতে BiometricEnrollActivity পরিবর্তন করুন। মনে রাখবেন যে আপনার বায়োমেট্রিক কেবল তখনই উপস্থাপন করা যাবে যদি এটি অনুরোধকৃত শক্তি পূরণ করে। যদি আপনার ডিভাইস একাধিক সমর্থন করে, তাহলে এই ক্রিয়াটি এমন একটি তালিকা উপস্থাপন করবে যা ব্যবহারকারী বেছে নিতে পারবেন।

HAL বাস্তবায়ন নির্দেশিকা
কোনও ব্যবহারকারীকে ডিভাইস থেকে সরিয়ে ফেলা হলে বায়োমেট্রিক তথ্য ফাঁস না হয় এবং তা সরিয়ে ফেলা হয় তা নিশ্চিত করতে এই বায়োমেট্রিক HAL নির্দেশিকাগুলি অনুসরণ করুন:
- নিশ্চিত করুন যে কাঁচা বায়োমেট্রিক ডেটা বা ডেরিভেটিভস (যেমন টেমপ্লেট) কখনই নিরাপদ বিচ্ছিন্ন পরিবেশের বাইরে থেকে (যেমন TEE বা সুরক্ষিত উপাদান) অ্যাক্সেসযোগ্য নয়। সমস্ত সঞ্চিত ডেটা অবশ্যই একটি ডিভাইস-নির্দিষ্ট কী দিয়ে এনক্রিপ্ট করা উচিত যা কেবল বিশ্বস্ত এক্সিকিউশন এনভায়রনমেন্ট (TEE) এর কাছে পরিচিত। যদি হার্ডওয়্যার এটি সমর্থন করে, তাহলে নিরাপদ বিচ্ছিন্ন পরিবেশে হার্ডওয়্যার অ্যাক্সেস সীমিত করুন এবং একটি SELinux নীতি দিয়ে এটি সুরক্ষিত করুন। সমস্ত ডিভাইস ফাইলে একটি স্পষ্ট SELinux নীতি সহ যোগাযোগ চ্যানেল (উদাহরণস্বরূপ, SPI, I2C) শুধুমাত্র নিরাপদ বিচ্ছিন্ন পরিবেশে অ্যাক্সেসযোগ্য করুন।
- তথ্য লঙ্ঘন এবং অন্যান্য আক্রমণ প্রতিরোধ করার জন্য বায়োমেট্রিক অধিগ্রহণ, তালিকাভুক্তি এবং স্বীকৃতি অবশ্যই নিরাপদ বিচ্ছিন্ন পরিবেশের মধ্যে হতে হবে। এই প্রয়োজনীয়তা শুধুমাত্র ক্লাস 3 (পূর্বে শক্তিশালী) এবং ক্লাস 2 (পূর্বে দুর্বল) বায়োমেট্রিক্সের ক্ষেত্রে প্রযোজ্য।
- রিপ্লে আক্রমণ থেকে রক্ষা পেতে, একটি ব্যক্তিগত, ডিভাইস-নির্দিষ্ট কী দিয়ে বায়োমেট্রিক টেমপ্লেট স্বাক্ষর করুন। অ্যাডভান্সড এনক্রিপশন স্ট্যান্ডার্ড (AES) এর জন্য, কমপক্ষে একটি টেমপ্লেট স্বাক্ষর করুন যাতে পরম ফাইল-সিস্টেম পাথ, গ্রুপ এবং বায়োমেট্রিক আইডি থাকে যাতে টেমপ্লেট ফাইলগুলি অন্য ডিভাইসে বা একই ডিভাইসে নথিভুক্ত ব্যবহারকারী ছাড়া অন্য কারও জন্য অকার্যকর হয়। উদাহরণস্বরূপ, একই ডিভাইসে বা অন্য ডিভাইস থেকে ভিন্ন ব্যবহারকারীর বায়োমেট্রিক ডেটা অনুলিপি করা থেকে বিরত থাকুন।
- যদি আপনার TEE-এর বাইরে ডেটা সংরক্ষণ করার প্রয়োজন হয়, তাহলে
setActiveUser() HIDL methodদ্বারা প্রদত্ত ফাইল-সিস্টেম পাথ ব্যবহার করুন অথবা ব্যবহারকারীকে অপসারণের সময় সমস্ত ব্যবহারকারীর টেমপ্লেট ডেটা মুছে ফেলার অন্য কোনও উপায় প্রদান করুন। এর কারণ হল ব্যবহারকারীর ডেটা ফাঁস হওয়া থেকে রক্ষা করা। যে ডিভাইসগুলি এই পাথ ব্যবহার করে না তাদের ব্যবহারকারীকে অপসারণের পরে পরিষ্কার করতে হবে । CDD-এর মতে বায়োমেট্রিক ডেটা এবং ডেরিভেটিভ ফাইলগুলি এনক্রিপ্ট করা সংরক্ষণ করা আবশ্যক - বিশেষ করে যদি TEE-তে না হয় তবে যদি নিরাপদ বিচ্ছিন্ন পরিবেশের স্টোরেজ প্রয়োজনীয়তার কারণে এটি অসম্ভব হয়, তাহলে ব্যবহারকারীকে অপসারণের সময় বা ডিভাইসটি মুছে ফেলার সময় ডেটা অপসারণ নিশ্চিত করার জন্য হুক যুক্ত করুন। LockSettingsService.removeBiometricsForUser() দেখুন।
কাস্টমাইজেশন
যদি আপনার ডিভাইস একাধিক বায়োমেট্রিক্স সমর্থন করে, তাহলে ব্যবহারকারী সেটিংসে একটি ডিফল্ট নির্দিষ্ট করতে সক্ষম হবেন। আপনার BiometricPrompt বাস্তবায়নের ক্ষেত্রে ক্লাস 3 (পূর্বে স্ট্রং) বায়োমেট্রিককে ডিফল্ট হিসেবে পছন্দ করা উচিত যদি না ব্যবহারকারী স্পষ্টভাবে এটিকে ওভাররাইড করে, তাহলে বায়োমেট্রিকের সাথে সম্পর্কিত ঝুঁকিগুলি ব্যাখ্যা করে একটি সতর্কতা বার্তা প্রদর্শন করতে হবে (উদাহরণস্বরূপ, আপনার একটি ছবি আপনার ডিভাইস আনলক করতে পারে )।
ডিভাইস-নির্দিষ্ট প্রমাণীকরণ স্ট্রিং
Android 12 থেকে শুরু করে, BiometricManager.Strings API এর মাধ্যমে ডেভেলপারদের জন্য প্রাসঙ্গিক প্রমাণীকরণ স্ট্রিং উপলব্ধ করা হয়। ডিভাইস-নির্দিষ্ট স্ট্রিং বাস্তবায়নের জন্য আপনি এই API দ্বারা প্রদত্ত রিসোর্স মানগুলি কাস্টমাইজ করতে পারেন। যদি আপনি তা করেন, তাহলে নিশ্চিত করুন যে ডিভাইসটি সমর্থন করে এমন সমস্ত লোকেলের জন্য যেকোনো নতুন স্ট্রিং অনুবাদ করা হয়েছে। অতিরিক্তভাবে, নিশ্চিত করুন যে নিম্নলিখিত বৈশিষ্ট্যগুলি সংরক্ষণ করা হয়েছে:
পদ্ধতি | স্ট্রিং উদ্দেশ্য | প্রমাণীকরণের ধরণ(গুলি) অন্তর্ভুক্ত করতে হবে | যদি বায়োমেট্রিক(গুলি) এবং স্ক্রিন লক উভয়ই সম্ভব হয় |
|---|---|---|---|
গেটবাটনলেবেল() | বায়োমেট্রিকপ্রম্পট ট্রিগার করে এমন বোতামের লেবেল | শুধুমাত্র নথিভুক্ত প্রকারগুলি (যদি সম্ভব হয়) যা প্রমাণীকরণকারীর প্রয়োজনীয়তা পূরণ করে | শুধুমাত্র বায়োমেট্রিক স্ট্রিং ব্যবহার করুন (যেমন, "আঙুলের ছাপ ব্যবহার করুন") |
প্রম্পটমেসেজ পান() | প্রমাণীকরণের সময় বায়োমেট্রিকপ্রম্পটে দেখানো বার্তা | শুধুমাত্র নথিভুক্ত প্রকারগুলি (যদি সম্ভব হয়) যা প্রমাণীকরণকারীর প্রয়োজনীয়তা পূরণ করে | সম্মিলিত বায়োমেট্রিক এবং স্ক্রিন লক স্ট্রিং ব্যবহার করুন (যেমন "চালিয়ে যেতে আপনার আঙুলের ছাপ বা পিন ব্যবহার করুন") |
সেটিংয়ের নাম পান () | প্রমাণীকরণের জন্য BiometricPrompt সক্ষম করে এমন একটি সেটিং এর নাম | ডিভাইস দ্বারা সমর্থিত সমস্ত প্রকার (নথিভুক্ত না হলেও) যা প্রমাণীকরণকারীর প্রয়োজনীয়তা পূরণ করে | সম্মিলিত বায়োমেট্রিক এবং স্ক্রিন লক স্ট্রিং ব্যবহার করুন (যেমন, "ফিঙ্গারপ্রিন্ট বা স্ক্রিন লক ব্যবহার করুন") |
উদাহরণস্বরূপ, এমন একটি ডিভাইস বিবেচনা করুন যেখানে একটি ক্লাস 2 ফেস সেন্সর রয়েছে যার একটি নথিভুক্ত মুখ , একটি নথিভুক্ত পিন, এবং একটি ক্লাস 3 ফিঙ্গারপ্রিন্ট সেন্সর রয়েছে যার কোনও নথিভুক্ত আঙ্গুলের ছাপ নেই । নিম্নলিখিত টেবিলটি অনুমোদিত প্রমাণীকরণকারী এবং ইনভোকড বায়োমেট্রিকম্যানেজার.স্ট্রিংস পদ্ধতির প্রতিটি সংমিশ্রণের জন্য নমুনা স্ট্রিং সরবরাহ করে:
অনুমোদিত প্রমাণীকরণকারী | গেটবাটনলেবেল() | প্রম্পটমেসেজ পান() | সেটিংয়ের নাম পান () |
|---|---|---|---|
ক্লাস ৩ বায়োমেট্রিক ( BIOMETRIC_STRONG ) | "আঙুলের ছাপ ব্যবহার করুন" (শুধুমাত্র আঙুলের ছাপ প্রমাণীকরণকারীর প্রয়োজনীয়তা পূরণ করে) | "চালিয়ে যেতে আপনার আঙ্গুলের ছাপ ব্যবহার করুন" (শুধুমাত্র আঙুলের ছাপ প্রমাণীকরণকারীর প্রয়োজনীয়তা পূরণ করে) | "আঙুলের ছাপ ব্যবহার করুন" (শুধুমাত্র আঙুলের ছাপ প্রমাণীকরণকারীর প্রয়োজনীয়তা পূরণ করে) |
ক্লাস ২ বায়োমেট্রিক ( BIOMETRIC_WEAK ) | "মুখ ব্যবহার করুন" (মুখ এবং আঙুলের ছাপ প্রয়োজনীয়তা পূরণ করে; শুধুমাত্র মুখ নথিভুক্ত করা হয়) | "চালিয়ে যেতে তোমার মুখ ব্যবহার করো" (মুখ এবং আঙুলের ছাপ প্রয়োজনীয়তা পূরণ করে; শুধুমাত্র মুখ নথিভুক্ত করা হয়) | "মুখ অথবা আঙুলের ছাপ ব্যবহার করুন" (মুখ এবং আঙুলের ছাপ প্রয়োজনীয়তা পূরণ করে; ডিভাইস উভয়ই সমর্থন করে) |
স্ক্রিন লক ( DEVICE_CREDENTIAL ) | "পিন ব্যবহার করুন" (যেকোনো স্ক্রিন লক প্রয়োজনীয়তা পূরণ করে; পিন নথিভুক্ত করা হয়েছে) | "চালিয়ে যেতে আপনার পিন লিখুন" (যেকোনো স্ক্রিন লক প্রয়োজনীয়তা পূরণ করে; পিন নথিভুক্ত করা হয়েছে) | "স্ক্রিন লক ব্যবহার করুন" (যেকোনো স্ক্রিন লক প্রয়োজনীয়তা পূরণ করে) |
ক্লাস ৩ বায়োমেট্রিক অথবা স্ক্রিন লক | "পিন ব্যবহার করুন" (আঙুলের ছাপ এবং যেকোনো স্ক্রিন লক প্রয়োজনীয়তা পূরণ করে; শুধুমাত্র পিন নথিভুক্ত করা হয়) | "চালিয়ে যেতে আপনার পিন লিখুন" (আঙুলের ছাপ এবং যেকোনো স্ক্রিন লক প্রয়োজনীয়তা পূরণ করে; শুধুমাত্র পিন নথিভুক্ত করা হয়) | "আঙ্গুলের ছাপ অথবা স্ক্রিন লক ব্যবহার করুন" (আঙুলের ছাপ এবং যেকোনো স্ক্রিন লক প্রয়োজনীয়তা পূরণ করে) |
ক্লাস ২ বায়োমেট্রিক অথবা স্ক্রিন লক | "মুখ ব্যবহার করুন" (মুখ, আঙুলের ছাপ এবং যেকোনো স্ক্রিন লক প্রয়োজনীয়তা পূরণ করে; মুখ নথিভুক্ত করা হয়েছে এবং পিন প্রতিস্থাপন করে) | "চালিয়ে যেতে আপনার মুখ বা পিন ব্যবহার করুন" (মুখ, আঙুলের ছাপ এবং যেকোনো স্ক্রিন লক প্রয়োজনীয়তা পূরণ করে; মুখ এবং পিন নথিভুক্ত করা হয়েছে) | "বায়োমেট্রিক্স অথবা স্ক্রিন লক ব্যবহার করুন" (মুখ, আঙুলের ছাপ এবং যেকোনো স্ক্রিন লক প্রয়োজনীয়তা পূরণ করে) |
বৈধতা
আপনার বায়োমেট্রিক বাস্তবায়নকে নিম্নলিখিত পরীক্ষাগুলি পাস করতে হবে:
- CTS BiometricManager সম্পর্কে
- সিটিএস বায়োমেট্রিকপ্রম্পট (স্বাস্থ্য, গভীর পরীক্ষা যাচাইকারীর উপর নির্ভর করে)
- CtsVerifier বায়োমেট্রিক পরীক্ষা বিভাগ : ডিভাইসটি সমর্থিত প্রতিটি পদ্ধতির সাথে পৃথকভাবে পাস করতে হবে।
এছাড়াও, যদি আপনার ডিভাইসটি এমন একটি বায়োমেট্রিক সমর্থন করে যার একটি AOSP HIDL ( fingerprint@2.1 , fingerprint@2.2 , face1.0 ), তাহলে এটিকে অবশ্যই তার প্রাসঙ্গিক VTS পরীক্ষা ( fingerprint , face ) পাস করতে হবে।