واجهة HIDL لميزة "المصادقة بالوجه"

نظرة عامة

تتيح ميزة "التعرّف على الوجه" للمستخدمين فتح قفل أجهزتهم بمجرّد النظر إلى الجهة الأمامية من الجهاز. يتيح نظام التشغيل Android 10 استخدام حزمة جديدة لمصادقة الوجه يمكنها معالجة لقطات الكاميرا بأمان، مع الحفاظ على الأمان والخصوصية أثناء مصادقة الوجه على الأجهزة المتوافقة. يوفّر نظام التشغيل Android 10 أيضًا طريقة سهلة لتنفيذ عمليات متوافقة مع متطلبات الأمان من أجل تفعيل دمج التطبيقات لإجراء المعاملات، مثل الخدمات المصرفية على الإنترنت أو الخدمات الأخرى.

إنّ حزمة المصادقة للتعرّف على الوجه في Android هي عملية تنفيذ جديدة في Android 10. تتضمّن عملية التنفيذ الجديدة الواجهات IBiometricsFace.hal وIBiometricsFaceClientCallback.hal وtypes.hal.

البنية

تتضمّن واجهة برمجة التطبيقات BiometricPrompt جميع طرق المصادقة بالمقاييس الحيوية، بما في ذلك التعرّف على الوجه وبصمة الإصبع وقزحية العين. يتفاعل Face HAL مع المكوّنات التالية.

قائمة شبكات الإعلانات التي تستخدم المقاييس الحيوية

الشكل 1. حزمة المقاييس الحيوية

FaceManager

FaceManager هي واجهة خاصة تحافظ على اتصال مع FaceService. يستخدم Keyguard هذه الطريقة للوصول إلى ميزة "التعرّف على الوجه" باستخدام واجهة مستخدم مخصّصة. لا يمكن للتطبيقات الوصول إلى FaceManager، ويجب استخدام BiometricPrompt بدلاً من ذلك.

FaceService

هذا هو تنفيذ إطار العمل الذي يدير إمكانية الوصول إلى أجهزة التعرّف على الوجه. يحتوي على آلات حالة أساسية للتسجيل والمصادقة، بالإضافة إلى أدوات مساعدة أخرى متنوعة (مثل التعداد). بسبب المخاوف المتعلقة بالثبات والأمان، لا يُسمح بتنفيذ أي رمز خاص بمورِّد في هذه العملية. يمكن الوصول إلى جميع رموز المورّدين من خلال واجهة Face 1.0 HIDL.

واجه

هذا ملف تنفيذي لنظام التشغيل Linux ينفّذ واجهة Face 1.0 HIDL التي يستخدمها FaceService. ويتم تسجيله باسم IBiometricsFace@1.0 ليتمكّن FaceService من العثور عليه.

التنفيذ

واجهة Face HIDL

لتنفيذ Face HIDL، يجب تنفيذ جميع الطُرق في IBiometricsFace.hal في مكتبة خاصة بالمورّد.

رسائل الخطأ

يتم إرسال رسائل الخطأ من خلال دالة رد الاتصال، وتُعيد هذه الرسائل آلة الحالة إلى حالة الخمول بعد إرسالها. تحتوي معظم الرسائل على سلسلة مخصّصة للمستخدم لإبلاغه بالخطأ، ولكن لا تحتوي جميع الأخطاء على هذه السلسلة. لمزيد من المعلومات حول رسائل الخطأ، يُرجى الاطّلاع على types.hal. تمثّل جميع رسائل الخطأ حالة نهائية، ما يعني أنّ إطار العمل يفترض أنّ طبقة HAL تعود إلى حالة الخمول بعد إرسال رسالة خطأ.

رسائل اكتساب المستخدمين

يتم عرض رسائل الاكتساب أثناء التسجيل أو المصادقة، وهي تهدف إلى توجيه المستخدم نحو إكمال عملية التسجيل أو المصادقة بنجاح. يتضمّن كل ترتيب ترتيبي رسالة مرتبطة به من ملف FaceAuthenticationManager.java. يمكن إضافة رسائل خاصة بمورّد معيّن طالما تم توفير سلاسل المساعدة ذات الصلة. رسائل الاكتساب ليست حالات نهائية في حد ذاتها، ومن المتوقّع أن يرسل HAL أكبر عدد ممكن من هذه الرسائل حسب الحاجة لإكمال عملية التسجيل أو المصادقة الحالية. إذا أدّت رسالة اكتساب إلى حالة نهائية لا يمكن فيها إحراز أي تقدّم، على طبقة HAL أن تتبع رسائل الاكتساب برسالة خطأ، مثلاً، إذا كانت الصورة داكنة جدًا وظلت داكنة جدًا بحيث لا يمكن إحراز أي تقدّم. في هذه الحالة، من المعقول إرسال UNABLE_TO_PROCESS بعد إجراء عدة محاولات بدون إحراز أي تقدّم إضافي.

الأجهزة

لكي تتوافق الأجهزة مع متطلبات المقاييس الحيوية القوية في نظام التشغيل Android 10، يجب أن تتضمّن أجهزة آمنة لضمان سلامة بيانات الوجه والمقارنة النهائية للمصادقة. يحدّد "مستند تعريف التوافق مع Android" (CDD) مستوى الأمان المطلوب ونسبة القبول المقبولة للتزييف (SAR) المطلوبة. يجب توفّر بيئة تنفيذ موثوقة (TEE) لإجراء عمليات المعالجة والتعرّف بشكل آمن. بالإضافة إلى ذلك، يجب توفُّر أجهزة كاميرا آمنة لمنع هجمات الحقن على مصادقة الوجه. على سبيل المثال، يمكن أن تكون صفحات الذاكرة المرتبطة ببيانات الصور محمية ومحدّدة للقراءة فقط، وبالتالي لا يمكن إلا لأجهزة الكاميرا تعديلها. من المفترض ألا تتمكّن أي عملية من الوصول إلى الجهاز باستثناء TEE والأجهزة.

نظرًا لاختلاف أجهزة التعرّف على الوجه بشكل كبير، من الضروري تطوير برامج تشغيل خاصة بالأجهزة لتفعيل ميزة التعرّف على الوجه، وذلك حسب بنية الجهاز المحدّدة. وبالتالي، لا يتوفّر تنفيذ مرجعي لـ faced.

الطرق

جميع الطرق التالية غير متزامنة ويجب أن تعود على الفور إلى الإطار. سيؤدي عدم إجراء ذلك إلى بطء النظام وإعادة ضبط محتملة من خلال Watchdog. يُنصح بإنشاء قائمة انتظار رسائل تتضمّن سلاسل متعددة لتجنُّب حظر المتصل. يجب أن تخزّن جميع طلبات 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 مخطط الحالة أدناه.

مخطّط الحالة

الشكل 2. مخطط حالة المصادقة بالوجه