نظرة عامة
تتيح ميزة "التعرّف على الوجه" للمستخدمين فتح قفل أجهزتهم بمجرّد النظر إلى الجزء الأمامي من الجهاز. يتيح نظام التشغيل 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: تسلسل حالات المصادقة بالوجه