বায়োমেট্রিক্স

বায়োমেট্রিক্স একটি ডিভাইসের সাথে আপনার পরিচয় নিশ্চিত করার একটি আরও সুবিধাজনক, কিন্তু সম্ভাব্যভাবে কম নিরাপদ উপায় অফার করে। টায়ার্ড প্রমাণীকরণ মডেলের অধীনে, প্রাথমিক প্রমাণীকরণ (যেমন, PIN, প্যাটার্ন এবং পাসওয়ার্ডের মতো জ্ঞান-ফ্যাক্টর ভিত্তিক পদ্ধতি) সর্বোচ্চ স্তরের নিরাপত্তা প্রদান করে। বায়োমেট্রিক্স প্রমাণীকরণের সেকেন্ডারি স্তরে রয়েছে, যা সুবিধা এবং নিরাপত্তার ভারসাম্য প্রদান করে। অ্যান্ড্রয়েড সিডিডি বায়োমেট্রিক শক্তির তিনটি শ্রেণিকে সংজ্ঞায়িত করে: ক্লাস 3 (পূর্বে শক্তিশালী), ক্লাস 2 (পূর্বে দুর্বল), এবং ক্লাস 1 (পূর্বে সুবিধা)। প্রতিটি ক্লাসের পূর্বশর্ত, সুযোগ-সুবিধা এবং সীমাবদ্ধতার একটি সেট রয়েছে - আরও বিশদ বিবরণের জন্য দয়া করে উপরে CDD দেখুন। তিনটি শ্রেণীকেই লকস্ক্রিনের সাথে একীভূত করার অনুমতি দেওয়া হয়েছে, তবে শুধুমাত্র শক্তিশালী এবং দুর্বল প্রমাণীকরণকারীদের android.hardware.biometrics API-এর সাথে একীভূত করার অনুমতি দেওয়া হয়েছে। এই টেবিলটি প্রতিটি প্রমাণীকরণকারী এবং তারা যে কার্যকারিতা সমর্থন করে তা বর্ণনা করে।

প্রমাণীকরণকারী বন্ধ পর্দা বায়োমেট্রিক প্রম্পট ইন্টিগ্রেশন কীস্টোর (সময়-ভিত্তিক কী) কীস্টোর (অপারেশন-ভিত্তিক কী)
BIOMETRIC_STRONG (ক্লাস 3) হ্যাঁ হ্যাঁ হ্যাঁ হ্যাঁ
BIOMETRIC_WEAK (ক্লাস 2) হ্যাঁ হ্যাঁ না না
BIOMETRIC_CONVENIENCE
(ক্লাস 1)
হ্যাঁ না না না
DEVICE_CREDENTIAL হ্যাঁ হ্যাঁ হ্যাঁ হ্যাঁ

অ্যান্ড্রয়েড ফ্রেমওয়ার্কে মুখ এবং আঙুলের ছাপ বায়োমেট্রিক প্রমাণীকরণের জন্য সমর্থন অন্তর্ভুক্ত রয়েছে। অন্যান্য বায়োমেট্রিক পদ্ধতি (যেমন আইরিস) সমর্থন করার জন্য অ্যান্ড্রয়েড কাস্টমাইজ করা যেতে পারে। যাইহোক, বায়োমেট্রিক ইন্টিগ্রেশন বায়োমেট্রিক নিরাপত্তার উপর নির্ভর করবে, পদ্ধতির উপর নয়। বায়োমেট্রিক নিরাপত্তা স্পেসিফিকেশন সম্পর্কে আরো বিস্তারিত জানার জন্য, বায়োমেট্রিক আনলক নিরাপত্তা পরিমাপ দেখুন।

উৎস

অ্যান্ড্রয়েড 12

  • BiometricManager.Strings API প্রবর্তন করে, যা প্রমাণীকরণের জন্য BiometricPrompt ব্যবহার করে এমন অ্যাপগুলির জন্য স্থানীয় স্ট্রিং প্রদান করে। এই স্ট্রিংগুলি ডিভাইস-সচেতন হওয়া এবং কোন প্রমাণীকরণ প্রকার(গুলি) ব্যবহার করা যেতে পারে সে সম্পর্কে আরও নির্দিষ্টতা প্রদান করার উদ্দেশ্যে করা হয়েছে৷
  • আন্ডার-ডিসপ্লে ফিঙ্গারপ্রিন্ট সেন্সর (UDFPS) সমর্থন অন্তর্ভুক্ত করে।

অ্যান্ড্রয়েড 11

  • BiometricManager.Authenticators ইন্টারফেস প্রবর্তন করে, যা ধ্রুবক প্রদান করে যা ডেভেলপাররা তাদের অ্যাপ্লিকেশন দ্বারা গৃহীত প্রমাণীকরণের ধরন নির্দিষ্ট করতে ব্যবহার করতে পারে৷
  • 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-এর সাথে আপনার বায়োমেট্রিক স্ট্যাককে একীভূত করতে:

  1. আপনার তালিকাভুক্তির প্রবাহ উপস্থাপন করতে বায়োমেট্রিক এনরোল অ্যাক্টিভিটি পরিবর্তন করুন। মনে রাখবেন যে আপনার বায়োমেট্রিকটি শুধুমাত্র অনুরোধ করা শক্তি পূরণ করলেই উপস্থাপন করা যেতে পারে। যদি আপনার ডিভাইস একাধিক সমর্থন করে, তাহলে এই ক্রিয়াটি এমন একটি তালিকা উপস্থাপন করবে যা ব্যবহারকারী বেছে নিতে পারেন।
বায়োমেট্রিক প্রম্পট আর্কিটেকচার
চিত্র 1. বায়োমেট্রিক প্রম্পট আর্কিটেকচার

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 দ্বারা প্রত্যাবর্তিত সম্পদ মান কাস্টমাইজ করতে পারেন। আপনি যদি তা করেন তবে নিশ্চিত করুন যে ডিভাইসটি সমর্থন করে এমন সমস্ত লোকেলের জন্য যেকোনো নতুন স্ট্রিং অনুবাদ করা হয়েছে। অতিরিক্তভাবে, নিম্নলিখিত বৈশিষ্ট্যগুলি সংরক্ষণ করা হয়েছে তা নিশ্চিত করুন:


পদ্ধতি

স্ট্রিং উদ্দেশ্য

প্রমাণীকরণ প্রকার(গুলি) অন্তর্ভুক্ত করতে

যদি বায়োমেট্রিক(গুলি) এবং স্ক্রিন লক উভয়ই সম্ভব

getButtonLabel()

বায়োমেট্রিক প্রম্পট ট্রিগার করে এমন একটি বোতামের জন্য লেবেল

নথিভুক্ত প্রকারগুলি শুধুমাত্র (যদি সম্ভব হয়) যা প্রমাণীকরণকারীর প্রয়োজনীয়তা পূরণ করে

বায়োমেট্রিক-শুধু স্ট্রিং ব্যবহার করুন (যেমন, "আঙ্গুলের ছাপ ব্যবহার করুন")

getPromptMessage()

প্রমাণীকরণের সময় বায়োমেট্রিক প্রম্পটে দেখানো বার্তা

নথিভুক্ত প্রকারগুলি শুধুমাত্র (যদি সম্ভব হয়) যা প্রমাণীকরণকারীর প্রয়োজনীয়তা পূরণ করে

সম্মিলিত বায়োমেট্রিক এবং স্ক্রিন লক স্ট্রিং ব্যবহার করুন (যেমন "চালিয়ে যেতে আপনার আঙ্গুলের ছাপ বা পিন ব্যবহার করুন")

getSettingName()

একটি সেটিং এর নাম যা প্রমাণীকরণের জন্য বায়োমেট্রিক প্রম্পট সক্ষম করে

সমস্ত প্রকার ডিভাইস দ্বারা সমর্থিত (এমনকি নথিভুক্ত না হলেও) যা প্রমাণীকরণকারীর প্রয়োজনীয়তা পূরণ করে

সম্মিলিত বায়োমেট্রিক এবং স্ক্রিন লক স্ট্রিং ব্যবহার করুন (যেমন, "ফিঙ্গারপ্রিন্ট বা স্ক্রিন লক ব্যবহার করুন")

উদাহরণ স্বরূপ, এমন একটি ডিভাইসের কথা বিবেচনা করুন যেখানে একটি নথিভুক্ত মুখ , একটি নথিভুক্ত পিন এবং একটি নথিভুক্ত আঙ্গুলের ছাপ ছাড়াই একটি ক্লাস 2 ফিঙ্গারপ্রিন্ট সেন্সর সহ একটি ক্লাস 2 ফেস সেন্সর রয়েছে৷ নিম্নলিখিত সারণীটি অনুমোদিত প্রমাণীকরণকারী এবং আমন্ত্রিত বায়োমেট্রিক ম্যানেজার. স্ট্রিংস পদ্ধতির প্রতিটি সংমিশ্রণের জন্য নমুনা স্ট্রিং প্রদান করে:


অনুমোদিত প্রমাণীকরণকারী

getButtonLabel()

getPromptMessage()

getSettingName()

ক্লাস 3 বায়োমেট্রিক ( BIOMETRIC_STRONG )

"আঙ্গুলের ছাপ ব্যবহার করুন"
(শুধুমাত্র আঙ্গুলের ছাপ প্রমাণীকরণকারীর প্রয়োজনীয়তা পূরণ করে)

"চালিয়ে যেতে আপনার আঙ্গুলের ছাপ ব্যবহার করুন"
(শুধুমাত্র আঙ্গুলের ছাপ প্রমাণীকরণকারীর প্রয়োজনীয়তা পূরণ করে)

"আঙ্গুলের ছাপ ব্যবহার করুন"
(শুধুমাত্র আঙ্গুলের ছাপ প্রমাণীকরণকারীর প্রয়োজনীয়তা পূরণ করে)

ক্লাস 2 বায়োমেট্রিক ( BIOMETRIC_WEAK )

"মুখ ব্যবহার করুন"
(মুখ এবং আঙ্গুলের ছাপ প্রয়োজনীয়তা পূরণ করে; শুধুমাত্র মুখ নথিভুক্ত করা হয়)

"চালিয়ে যেতে আপনার মুখ ব্যবহার করুন"
(মুখ এবং আঙ্গুলের ছাপ প্রয়োজনীয়তা পূরণ করে; শুধুমাত্র মুখ নথিভুক্ত করা হয়)

"মুখ বা আঙুলের ছাপ ব্যবহার করুন"
(মুখ এবং আঙুলের ছাপ প্রয়োজনীয়তা পূরণ করে; ডিভাইস উভয়ই সমর্থন করে)

স্ক্রিন লক ( DEVICE_CREDENTIAL )

"পিন ব্যবহার করুন"
(যে কোনো স্ক্রিন লক প্রয়োজনীয়তা পূরণ করে; পিন নথিভুক্ত করা হয়েছে)

"চালিয়ে যেতে আপনার পিন লিখুন"
(যে কোনো স্ক্রিন লক প্রয়োজনীয়তা পূরণ করে; পিন নথিভুক্ত করা হয়েছে)

"স্ক্রিন লক ব্যবহার করুন"
(যে কোনো স্ক্রিন লক প্রয়োজনীয়তা পূরণ করে)

ক্লাস 3 বায়োমেট্রিক বা স্ক্রিন লক

"পিন ব্যবহার করুন"
(আঙুলের ছাপ এবং যেকোনো স্ক্রিন লক প্রয়োজনীয়তা পূরণ করে; শুধুমাত্র পিন নথিভুক্ত করা হয়)

"চালিয়ে যেতে আপনার পিন লিখুন"
(আঙুলের ছাপ এবং যেকোনো স্ক্রিন লক প্রয়োজনীয়তা পূরণ করে; শুধুমাত্র পিন নথিভুক্ত করা হয়)

"আঙ্গুলের ছাপ বা স্ক্রিন লক ব্যবহার করুন"
(আঙুলের ছাপ এবং যেকোনো স্ক্রিন লক প্রয়োজনীয়তা পূরণ করে)

ক্লাস 2 বায়োমেট্রিক বা স্ক্রিন লক

"মুখ ব্যবহার করুন"
(মুখ, আঙুলের ছাপ, এবং যেকোনো স্ক্রিন লক প্রয়োজনীয়তা পূরণ করে; মুখ নথিভুক্ত করা হয় এবং পিনকে ছাড়িয়ে যায়)

"চালিয়ে যেতে আপনার মুখ বা পিন ব্যবহার করুন"
(মুখ, আঙুলের ছাপ, এবং যেকোনো স্ক্রিন লক প্রয়োজনীয়তা পূরণ করে; মুখ এবং পিন নথিভুক্ত করা হয়েছে)

"বায়োমেট্রিক্স বা স্ক্রিন লক ব্যবহার করুন"
(মুখ, আঙুলের ছাপ, এবং যেকোনো স্ক্রিন লক প্রয়োজনীয়তা পূরণ করে)

বৈধতা

আপনার বায়োমেট্রিক বাস্তবায়ন নিম্নলিখিত পরীক্ষা পাস করতে হবে:

এছাড়াও, যদি আপনার ডিভাইসটি একটি AOSP HIDL ( আঙ্গুলের ছাপ @ 2.1 , আঙ্গুলের ছাপ @ 2.2 , face1.0 ) আছে এমন একটি বায়োমেট্রিক সমর্থন করে, তবে এটি অবশ্যই তার প্রাসঙ্গিক VTS পরীক্ষায় উত্তীর্ণ হবে ( আঙ্গুলের ছাপ , মুখ )