মুখের প্রমাণীকরণ HIDL

সংক্ষিপ্ত বিবরণ

ফেস অথেনটিকেশন ব্যবহারকারীদের কেবল তাদের ডিভাইসের সামনের দিকে তাকিয়েই তাদের ডিভাইস আনলক করতে দেয়। অ্যান্ড্রয়েড ১০ একটি নতুন ফেস অথেনটিকেশন স্ট্যাকের জন্য সমর্থন যোগ করে যা ক্যামেরা ফ্রেমগুলিকে নিরাপদে প্রক্রিয়া করতে পারে, সমর্থিত হার্ডওয়্যারে ফেস অথেনটিকেশনের সময় সুরক্ষা এবং গোপনীয়তা রক্ষা করে। অ্যান্ড্রয়েড ১০ অনলাইন ব্যাংকিং বা অন্যান্য পরিষেবার মতো লেনদেনের জন্য অ্যাপ্লিকেশন ইন্টিগ্রেশন সক্ষম করার জন্য সুরক্ষা সম্মত বাস্তবায়নের জন্য একটি সহজ উপায়ও প্রদান করে।

অ্যান্ড্রয়েড ফেস অথেনটিকেশন স্ট্যাক হল অ্যান্ড্রয়েড ১০-এর একটি নতুন বাস্তবায়ন। নতুন বাস্তবায়নে IBiometricsFace.hal , IBiometricsFaceClientCallback.hal এবং types.hal ইন্টারফেসগুলি প্রবর্তন করা হয়েছে।

স্থাপত্য

বায়োমেট্রিকপ্রম্পট এপিআই-তে মুখ, আঙুল এবং আইরিস সহ সমস্ত বায়োমেট্রিক প্রমাণীকরণ অন্তর্ভুক্ত থাকে। ফেস এইচএএল নিম্নলিখিত উপাদানগুলির সাথে ইন্টারঅ্যাক্ট করে।

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

চিত্র ১. বায়োমেট্রিক স্ট্যাক।

ফেস ম্যানেজার

FaceManager হল একটি ব্যক্তিগত ইন্টারফেস যা FaceService এর সাথে সংযোগ বজায় রাখে। Keyguard এটি একটি কাস্টম UI এর মাধ্যমে ফেস প্রমাণীকরণ অ্যাক্সেস করতে ব্যবহার করে। অ্যাপগুলির FaceManager অ্যাক্সেস নেই এবং পরিবর্তে তাদের BiometricPrompt ব্যবহার করতে হবে।

ফেস সার্ভিস

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

মুখোমুখি

এটি একটি লিনাক্স এক্সিকিউটেবল যা FaceService দ্বারা ব্যবহৃত Face 1.0 HIDL ইন্টারফেস প্রয়োগ করে। এটি নিজেকে [email protected] হিসাবে নিবন্ধিত করে যাতে FaceService এটি খুঁজে পেতে পারে।

বাস্তবায়ন

মুখ HIDL

ফেস এইচআইডিএল বাস্তবায়নের জন্য, আপনাকে একটি বিক্রেতা-নির্দিষ্ট লাইব্রেরিতে IBiometricsFace.hal এর সমস্ত পদ্ধতি বাস্তবায়ন করতে হবে।

ত্রুটি বার্তা

ত্রুটি বার্তাগুলি একটি কলব্যাকের মাধ্যমে পাঠানো হয় এবং পাঠানোর পরে স্টেট মেশিনটিকে নিষ্ক্রিয় অবস্থায় ফিরিয়ে দেয়। বেশিরভাগ বার্তায় ব্যবহারকারীকে ত্রুটি সম্পর্কে অবহিত করার জন্য একটি সংশ্লিষ্ট ব্যবহারকারী-মুখী স্ট্রিং থাকে, তবে সমস্ত ত্রুটিতে এই ব্যবহারকারী-মুখী স্ট্রিং থাকে না। ত্রুটি বার্তা সম্পর্কে আরও তথ্যের জন্য, types.hal দেখুন। সমস্ত ত্রুটি বার্তা একটি টার্মিনাল অবস্থা উপস্থাপন করে, যার অর্থ ফ্রেমওয়ার্ক ধরে নেয় যে HAL একটি ত্রুটি বার্তা পাঠানোর পরে একটি নিষ্ক্রিয় অবস্থায় ফিরে আসে।

অধিগ্রহণের বার্তা

তালিকাভুক্তি বা প্রমাণীকরণের সময় অধিগ্রহণ বার্তাগুলি সরবরাহ করা হয় এবং ব্যবহারকারীকে একটি সফল তালিকাভুক্তি বা প্রমাণীকরণের দিকে পরিচালিত করার জন্য তৈরি করা হয়। প্রতিটি অর্ডিনালে FaceAuthenticationManager.java ফাইল থেকে একটি সম্পর্কিত বার্তা থাকে। সংশ্লিষ্ট সহায়তা স্ট্রিংগুলি সরবরাহ করা থাকলে বিক্রেতা-নির্দিষ্ট বার্তাগুলি যোগ করা যেতে পারে। অধিগ্রহণ বার্তাগুলি নিজের মধ্যে এবং এর মধ্যে টার্মিনাল অবস্থা নয়; বর্তমান তালিকাভুক্তি বা প্রমাণীকরণ সম্পূর্ণ করার জন্য HAL যতটা প্রয়োজন ততগুলি পাঠাবে বলে আশা করা হচ্ছে। যদি একটি অধিগ্রহণ বার্তা এমন একটি টার্মিনাল অবস্থায় পরিণত হয় যেখানে কোনও অগ্রগতি করা যায় না, তাহলে HAL-এর অধিগ্রহণ বার্তাগুলির পরে একটি ত্রুটি বার্তা পাঠানো উচিত, উদাহরণস্বরূপ, যেখানে চিত্রটি খুব অন্ধকার এবং অগ্রগতি করার জন্য খুব অন্ধকার থাকে। এই ক্ষেত্রে, বেশ কয়েকটি প্রচেষ্টা করার পরেও আর কোনও অগ্রগতি করা না যাওয়ার পরে UNABLE_TO_PROCESS পাঠানো যুক্তিসঙ্গত।

হার্ডওয়্যার

অ্যান্ড্রয়েড ১০-এর জন্য শক্তিশালী বায়োমেট্রিক প্রয়োজনীয়তা পূরণের জন্য ডিভাইসগুলির অবশ্যই নিরাপদ হার্ডওয়্যার থাকতে হবে, যাতে ফেস ডেটার অখণ্ডতা এবং চূড়ান্ত প্রমাণীকরণ তুলনা নিশ্চিত করা যায়। অ্যান্ড্রয়েড কম্প্যাটিবিলিটি ডেফিনিশন ডকুমেন্ট (CDD) প্রয়োজনীয় নিরাপত্তার স্তর এবং গ্রহণযোগ্য স্পুফ গ্রহণযোগ্যতা হার (SAR) রূপরেখা দেয়। নিরাপদ প্রক্রিয়াকরণ এবং স্বীকৃতির জন্য একটি বিশ্বস্ত এক্সিকিউশন এনভায়রনমেন্ট (TEE) প্রয়োজন। অতিরিক্তভাবে, ফেস প্রমাণীকরণে ইনজেকশন আক্রমণ প্রতিরোধ করার জন্য সুরক্ষিত ক্যামেরা হার্ডওয়্যার প্রয়োজন। উদাহরণস্বরূপ, চিত্র ডেটার জন্য সংশ্লিষ্ট মেমরি পৃষ্ঠাগুলিকে বিশেষাধিকারযুক্ত এবং কেবল পঠনযোগ্য হিসাবে চিহ্নিত করা যেতে পারে যাতে কেবল ক্যামেরা হার্ডওয়্যারই সেগুলি আপডেট করতে পারে। আদর্শভাবে, TEE এবং হার্ডওয়্যার ছাড়া অন্য কোনও প্রক্রিয়ার অ্যাক্সেস থাকা উচিত নয়।

যেহেতু ফেস অথেনটিকেশন হার্ডওয়্যার যথেষ্ট পরিবর্তিত হয়, তাই নির্দিষ্ট ডিভাইস আর্কিটেকচারের উপর নির্ভর করে ফেস অথেনটিকেশন সক্ষম করার জন্য হার্ডওয়্যার-নির্দিষ্ট ড্রাইভার তৈরি করা প্রয়োজন। ফলে, faced জন্য কোনও রেফারেন্স বাস্তবায়ন নেই।

পদ্ধতি

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

পদ্ধতি বিবরণ
setCallback() FaceService কর্তৃক সকল বার্তা নিজের কাছে ফিরিয়ে আনার জন্য আহ্বান জানানো হয়েছে।
setActiveUser() সক্রিয় ব্যবহারকারী সেট করে, যার উপর পরবর্তী সমস্ত HAL ক্রিয়াকলাপ প্রয়োগ করা হয়। এই পদ্ধতিটি আবার কল না করা পর্যন্ত প্রমাণীকরণ সর্বদা এই ব্যবহারকারীর জন্য থাকে।
revokeChallenge() generateChallenge() দ্বারা তৈরি চ্যালেঞ্জটি বাতিল করে নিরাপদ লেনদেন সম্পন্ন করে।
enroll() একজন ব্যবহারকারীর মুখ নথিভুক্ত করে।
cancel() বর্তমান ক্রিয়াকলাপ বাতিল করে (উদাহরণস্বরূপ, নথিভুক্ত করুন, প্রমাণীকরণ করুন, অপসারণ করুন, বা গণনা করুন) এবং নিষ্ক্রিয় অবস্থায় ফিরে faced
enumerate() সক্রিয় ব্যবহারকারীর সাথে সম্পর্কিত সমস্ত মুখের টেমপ্লেটের তালিকা তৈরি করে।
remove() একটি ফেস টেমপ্লেট অথবা সক্রিয় ব্যবহারকারীর সাথে সম্পর্কিত সমস্ত ফেস টেমপ্লেট সরিয়ে দেয়।
authenticate() সক্রিয় ব্যবহারকারীকে প্রমাণীকরণ করে।
userActivity() এই পদ্ধতিটি শুধুমাত্র তখনই ব্যবহার করা উচিত যখন HAL প্রমাণীকরণ বা স্ট্যান্ডবাই অবস্থায় থাকে। যখন HAL এই অবস্থাগুলির মধ্যে একটিতে না থাকে তখন এই পদ্ধতিটি ব্যবহার করলে OPERATION_NOT_SUPPORTED ফেরত আসে। HAL ইতিমধ্যে প্রমাণীকরণের সময় এই পদ্ধতিটি কল করলে সিস্টেমটি মুখের সন্ধানের সময় বাড়িয়ে দিতে পারে।
resetLockout() যখন অনেকগুলি ফেস প্রত্যাখ্যাত হয়, তখন faced একটি লকআউট অবস্থা ( LOCKOUT অথবা LOCKOUT_PERMANENT ) প্রবেশ করতে হয়। যখন এটি ঘটে, তখন অবশিষ্ট সময় ফ্রেমওয়ার্কে পাঠাতে হয় যাতে এটি ব্যবহারকারীর জন্য এটি প্রদর্শন করতে পারে। setFeature() এর মতো, এই পদ্ধতিতে অভ্যন্তরীণ অবস্থা নিরাপদে রিসেট করার জন্য একটি সক্রিয় হার্ডওয়্যার প্রমাণীকরণ টোকেন (HAT) প্রয়োজন। শুধুমাত্র বর্তমান ব্যবহারকারীর জন্য লকআউট রিসেট করে।

বাকি তিনটি পদ্ধতিই সিঙ্ক্রোনাস এবং ফ্রেমওয়ার্কটি স্থগিত না করার জন্য ন্যূনতম সময়ের জন্য ব্লক করা উচিত।

পদ্ধতি বিবরণ
generateChallenge() একটি অনন্য এবং ক্রিপ্টোগ্রাফিকভাবে সুরক্ষিত র্যান্ডম টোকেন তৈরি করে যা একটি নিরাপদ লেনদেনের শুরু নির্দেশ করতে ব্যবহৃত হয়।
setFeature() বর্তমান ব্যবহারকারীর জন্য একটি বৈশিষ্ট্য সক্রিয় বা নিষ্ক্রিয় করে। নিরাপত্তার কারণে, উপরের চ্যালেঞ্জের বিরুদ্ধে ব্যবহারকারীর পিন/প্যাটার্ন/পাসওয়ার্ড পরীক্ষা করার জন্য HAT প্রয়োজন।
getFeature() ডিফল্ট অথবা উপরে setFeature() এ কল করার মাধ্যমে নির্ধারিত বৈশিষ্ট্যটির বর্তমান সক্ষমতা অবস্থা পুনরুদ্ধার করে। যদি ফেস আইডিটি অবৈধ হয়, তাহলে বাস্তবায়নে ILLEGAL_ARGUMENT ফেরত দিতে হবে।
getAuthenticatorId() বর্তমান ফেস সেটের সাথে যুক্ত একটি আইডেন্টিফায়ার রিটার্ন করে। যখনই কোনও ফেস যোগ করা হবে তখন এই আইডেন্টিফায়ারটি অবশ্যই পরিবর্তন করতে হবে।

রাজ্য চিত্র

কাঠামোটি আশা করে যে faced নীচের অবস্থা চিত্রটি অনুসরণ করবে।

রাজ্য চিত্র

চিত্র ২। ফেস অথেনটিকেশন অবস্থা প্রবাহ।