واجهة 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. مخطط حالة المصادقة بالوجه