على الأجهزة المزوّدة بمستشعر بصمة الإصبع، يمكن للمستخدمين تسجيل بصمة إصبع واحدة أو أكثر واستخدامها لفتح قفل الجهاز وتنفيذ مهام أخرى. يستخدم نظام التشغيل Android لغة تعريف واجهة أجهزة بصمة الإصبع (HIDL) للربط بمكتبة خاصة بالمورّد وأجهزة بصمة الإصبع (مثل كاميرا بصمة الإصبع).
لتنفيذ واجهة HIDL لنظام البصمة، يجب تنفيذ IBiometricsFingerprint.hal
في مكتبة خاصة بالمورّد.
مطابقة بصمة الإصبع
يكون مستشعر بصمة الإصبع في الجهاز غير نشط بشكل عام. ومع ذلك، استجابةً لتلقّي مكالمة على authenticate
أو enroll
، يستمع
مستشعر بصمة الإصبع إلى أي لمسة (قد يتم أيضًا تنشيط الشاشة عندما يلمس أحد المستخدمين
مستشعر بصمة الإصبع). تشمل العملية الشاملة لمطابقة الملفات المرجعية
الخطوات التالية:
- يضع المستخدم إصبعه على أداة استشعار بصمة الإصبع.
- تحدِّد المكتبة الخاصة بالمورّد ما إذا كان هناك تطابق بين بصمة الإصبع في المجموعة الحالية من نماذج بصمة الإصبع المسجَّلة.
- يتمّ تمرير النتائج المطابقة إلى
FingerprintService
.
تفترض هذه العملية أنّه سبق أن تم تسجيل بصمة على الجهاز، أي أنّه سجّلت المكتبة الخاصة بالمورّد نموذجًا للبصمة. لمزيد من التفاصيل، يُرجى الاطّلاع على المصادقة.
هندسة معمارية
يتفاعل واجهة برمجة التطبيقات لنظام التحكّم في بصمة الإصبع مع المكونات التالية:
- يتفاعل
BiometricManager
مباشرةً مع أحد التطبيقات في عملية التطبيق. يحتوي كل تطبيق على مثيل منIBiometricsFingerprint.hal
. - يعمل
FingerprintService
في عملية النظام التي تعالج الاتصال بواجهة HAL الخاصة بمستشعر بصمة الإصبع. - واجهة HAL لبصمة الإصبع هي واجهة HIDL لـ IDEBiometricsFingerprint تم تنفيذها باستخدام C/C++. يحتوي هذا القسم على المكتبة الخاصة بالمورِّد التي تتواصل مع الأجهزة الخاصة بالجهاز.
- توفّر مكوّنات Keystore API وKeymaster تقنية التشفير المستندة إلى الأجهزة لتخزين المفاتيح بأمان في بيئة آمنة، مثل Trusted Execution Environment (TEE).

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

إرشادات التنفيذ
تم تصميم إرشادات واجهة برمجة التطبيقات لنظام Fingerprint HAL التالية لضمان عدم تسرُّب بيانات بصمة الإصبع وإزالتها عند إزالة مستخدم من جهاز:
- يجب ألا يكون بالإمكان أبدًا الوصول إلى بيانات بصمة الإصبع الأولية أو مشتقاتها (مثل النماذج) من خارج برنامج تشغيل أداة الاستشعار أو بيئة التنفيذ الموثوقة (TEE). إذا كان الجهاز متوافقًا مع وحدة TEE، يجب اقتصار إمكانية الوصول إلى الجهاز على TEE فقط وحمايته بموجب سياسة SELinux. يجب ألا يتمكّن سوى TEE من الوصول إلى قناة Serial Peripheral Interface (SPI)، ويجب أن تكون هناك سياسة SELinux صريحة على جميع ملفات الجهاز.
- يجب أن تتم عملية الحصول على بصمة الإصبع وتسجيلها والتعرّف عليها داخل بيئة التنفيذ الموثوق بها (TEE).
- لا يتم تخزين بيانات بصمة الإصبع على نظام الملفات إلا بشكل مشفّر حتى وإن كان نظام الملفات نفسه قد تم تشفيره.
- يجب توقيع نماذج بصمة الإصبع باستخدام مفتاح خاص خاص بالجهاز. بالنسبة إلى "مقاييس التشفير المتقدمة" (AES)، يجب على الأقل توقيع النموذج باستخدام مسار نظام الملفات المطلق والمجموعة ورقم تعريف الإصبع، بحيث لا يمكن تشغيل ملفات النماذج على جهاز آخر أو لأي مستخدم آخر غير المستخدم الذي سجّلها على الجهاز نفسه. على سبيل المثال، يجب ألا ينجح تنفيذ عملية نسخ بيانات بصمة الإصبع من مستخدم آخر على نفس الجهاز أو من جهاز آخر.
- يجب أن تستخدم عمليات التنفيذ مسار نظام الملفات المقدَّم من خلال الدالة
setActiveGroup()
أو أن تقدّم طريقة لمحو جميع بيانات ملف التنسيق لمستخدم معيّن عند إزالته. ننصح بشدة بأن يتم تخزين ملفات نماذج بصمة الإصبع مشفّرة في المسار المقدَّم. إذا كان ذلك غير ممكن بسبب متطلبات مساحة التخزين في TEE، على مُنفِّذ التطبيق إضافة عناصر ربط لضمان إزالة البيانات عند إزالة المستخدم.
طرق استخدام بصمة الإصبع
تحتوي واجهة HIDL لجهاز استشعار بصمة الإصبع على الطرق الرئيسية التالية في
IBiometricsFingerprint.hal
.
الطريقة | الوصف |
---|---|
enroll() |
تبديل آلة حالة HAL لبدء جمع نموذج بصمة الإصبع وتخزينه عند اكتمال عملية التسجيل، أو بعد انتهاء مهلة، تعود آلة حالة HAL إلى الحالة غير النشطة. |
preEnroll() |
تُنشئ رمزًا مميزًا للإشارة إلى بدء تسجيل بصمة إصبع. يوفّر رمز مميّزًا للدالة enroll لمحاولة
التأكّد من إجراء مصادقة سابقة، مثلاً باستخدام كلمة مرور. لمنع
التلاعب، يتم لف الرمز المميّز بعد تأكيد
بيانات اعتماد الجهاز. يجب التحقّق من الرمز المميّز أثناء التسجيل للتأكّد
من أنّه لا يزال صالحًا. |
getAuthenticatorId() |
لعرض رمز مميّز مرتبط بمجموعة بصمة الإصبع الحالية. |
cancel() |
تُلغي عمليات التسجيل أو المصادقة التي في انتظار المراجعة. تتم إعادة آلة حالة HAL إلى حالة الخمول. |
enumerate() |
طلب متزامن لتعداد جميع نماذج بصمات الأصابع المعروفة |
remove() |
لحذف نموذج بصمة إصبع |
setActiveGroup() |
تقييد عملية HAL بمجموعة من ملفات مرجعية تنتمي إلى مجموعة محدّدة، يتم تحديدها من خلال معرّف مجموعة (GID) |
authenticate() |
تُستخدم للمصادقة على عملية ذات صلة ببصمة الإصبع (يتم تحديدها من خلال رقم تعريف العملية). |
setNotify() |
تسجِّل دالة مستخدم تتلقّى إشعارات من HAL. إذا كانت آلة حالة HAL في حالة مشغول، يتم حظر الدالة إلى أن تغادر HAL الحالة المشغولة. |
postEnroll() |
تُنهي عملية التسجيل وتبطل
preEnroll() التحدي الذي تم إنشاؤه. يجب استدعاء هذه الوظيفة في نهاية
جلسة تسجيل متعددة الأصابع للإشارة إلى أنّه لا يمكن إضافة المزيد من الأصابع. |
لمزيد من التفاصيل حول هذه الإعدادات، يُرجى الاطّلاع على التعليقات في IBiometricsFingerprint.hal
.