ביומטריה

ביומטריה מציעה דרך נוחה יותר, אך עשויה להיות פחות בטוחה, לאשר את זהותך באמצעות מכשיר. תחת מודל האימות המדורג, אימות ראשי (כלומר, אופנים מבוססי גורמי ידע כגון PIN, דפוס וסיסמה) מספק את רמת האבטחה הגבוהה ביותר. ביומטריה נמצאת ברובד המשני של אימות, ומציעה איזון של נוחות ואבטחה. ה- CDD של אנדרואיד מגדיר שלושה מחלקות של חוזק ביומטרי: Class 3 (לשעבר חזק), Class 2 (לשעבר חלש) ו-Class 1 (לשעבר Convenience). לכל מחלקה יש קבוצה של דרישות מוקדמות, הרשאות ואילוצים - אנא עיין ב-CDD לעיל לפרטים נוספים. כל שלושת המחלקות רשאיות להשתלב עם מסך נעילה, אך רק מאמתים חזקים וחלשים מורשים להשתלב עם ממשקי ה-API של android.hardware.biometrics. טבלה זו מתארת ​​כל מאמת ואת הפונקציונליות שבה הוא תומך.

מאמת מסך נעילה אינטגרציה ביומטרית מאגר מפתחות (מפתח מבוסס זמן) מאגר מפתחות (מפתח מבוסס תפעול)
BIOMETRIC_STRONG (מחלקה 3) כן כן כן כן
BIOMETRIC_WEAK (מחלקה 2) כן כן לא לא
BIOMETRIC_CONVENIENCE
(כיתה 1)
כן לא לא לא
DEVICE_CREDENTIAL כן כן כן כן (1)
  1. פונקציונליות זו נוספה באנדרואיד 11, ראה זאת לפרטים

מסגרת האנדרואיד כוללת תמיכה באימות ביומטרי של פנים וטביעות אצבע. ניתן להתאים אישית את אנדרואיד לתמיכה באופנים ביומטריים אחרים (כגון איריס). עם זאת, אינטגרציה ביומטרית תהיה תלויה באבטחה ביומטרית, לא במודאליות. לפרטים נוספים על מפרטי אבטחה ביומטריים, ראה מדידת אבטחת נעילה ביומטרית .

מָקוֹר

אנדרואיד 11

  • מציג את ממשק BiometricManager.Authenticators , המספק קבועים שבהם מפתחים יכולים להשתמש כדי לציין את סוגי האימות המקובלים על האפליקציות שלהם.
  • מוסיף אתפעולת הכוונה ACTION_BIOMETRIC_ENROLL , שבה מפתחים יכולים להשתמש כדי לכוון את המשתמש לרשום שיטת אימות העונה על הדרישות של האפליקציות שלהם.
  • מוסיף את שיטת AuthenticationResult #getAuthenticationType () , שבה מפתחים יכולים להשתמש כדי לבדוק אם המשתמש אומת באמצעות אישור ביומטרי או אישור מכשיר.
  • מספק תמיכה נוספת למפתחות אישור לפי שימוש במסגרת מחלקה BiometricPrompt.

אנדרואיד 10

  • מציג את המחלקה BiometricManager שמפתחים יכולים להשתמש בה כדי לשאול את הזמינות של אימות ביומטרי.
  • כולל שילוב טביעת אצבע ואימות פנים עבור BiometricPrompt

אנדרואיד 9

  • כולל שילוב טביעות אצבע רק עבור BiometricPrompt .
  • מבטל את המחלקה FingerprintManager. אם אפליקציות החבילות והמערכת שלך משתמשות במחלקה זו, עדכן אותן כדי להשתמש ב- BiometricPrompt וב- BiometricManager במקום זאת.
  • עדכן את בדיקות האימות של FingerprintManager CTS לבדיקת BiometricPrompt באמצעות BiometricPromptBoundKeysTest .

יישום

כדי להבטיח שלמשתמשים ומפתחים תהיה חוויה ביומטרית חלקה, שלב את הערימה הביומטרית שלך עם ממשקי API של BiometricPrompt , BiometricManager ו- ACTION_BIOMETRIC_ENROLL . מכשירים עם חיישנים ביומטריים חייבים לעמוד בדרישות החוזק הללו.
כדי לשלב את הערימה הביומטרית שלך עם BiometricManager APIs BiometricPrompt BiometricManager:

  1. ודא <Modality>Service שלך רשום כהלכה עם BiometricService באמצעות שיטת IBiometricService#registerAuthenticator ומיישם את ממשק IBiometricAuthenticator . שיטות נפוצות (טביעת אצבע, פנים) משתרעות ממעמד -על משותף. אם אתה צריך לשלב אופציה לא נתמכת, עקוב אחר דוגמה של טביעת אצבע / פנים והנחיות CDD לביומטריה.
  2. ודא שהאופן החדש שלך נתמך כראוי ב- SystemUI . ישנם ממשקי משתמש BiometricPrompt המוגדרים כברירת מחדל עבור טביעת אצבע ופנים. זה צריך לכלול כל שינוי בפריסה או ערכת נושא הנדרשים עבור המכשיר שלך. כלומר שינויים מתאימים בפריסה עבור חיישן טביעות אצבע בתצוגה.

כדי לשלב את הערימה הביומטרית שלך עם ACTION_BIOMETRIC_ENROLL API:

  1. שנה את BiometricEnrollActivity כדי להציג את זרימת ההרשמה שלך. שימו לב שניתן להציג את הביומטרי שלכם רק אם הוא עומד בחוזק המבוקש. אם המכשיר שלך תומך ביותר מאחד, פעולה זו אמורה להציג רשימה שהמשתמש יכול לבחור ממנה.
ארכיטקטורת BiometricPrompt
איור 1. ארכיטקטורת BiometricPrompt

הנחיות יישום HAL

עקוב אחר הנחיות HAL ביומטריות אלה כדי להבטיח שהנתונים הביומטריים לא יודלפו ויוסרו כאשר משתמש מוסר מהמכשיר:

  • ודא שלעולם לא תהיה גישה לנתונים ביומטריים גולמיים או נגזרות (כגון תבניות) מחוץ לסביבה המבודדת המאובטחת (כגון TEE או Secure Element). כל הנתונים המאוחסנים חייבים להיות מוצפנים עם מפתח ספציפי למכשיר הידוע רק ל-TEE (סביבת ביצוע מהימנה). אם החומרה תומכת בזה, הגבל את גישת החומרה לסביבה המבודדת המאובטחת והגן עליה באמצעות מדיניות SELinux. הפוך את ערוץ התקשורת (לדוגמה, SPI, I2C) לנגיש רק לסביבה המבודדת המאובטחת עם מדיניות SELinux מפורשת על כל קבצי המכשיר.
  • רכישה, רישום וזיהוי ביומטריים חייבים להתרחש בתוך הסביבה המבודדת המאובטחת כדי למנוע פרצות נתונים והתקפות אחרות. דרישה זו חלה רק על ביומטריה של Class 3 (לשעבר חזק) ו- Class 2 (לשעבר חלש) .
  • כדי להגן מפני התקפות שידור חוזר, חתום על תבניות ביומטריות עם מפתח פרטי ספציפי למכשיר. עבור תקן הצפנה מתקדם (AES), לפחות חתום על תבנית עם נתיב מערכת הקבצים המוחלט, קבוצה ומזהה ביומטרי כך שקובצי תבנית אינם ניתנים להפעלה במכשיר אחר או עבור כל אדם אחר מלבד המשתמש שרשם אותם באותו מכשיר . לדוגמה, למנוע העתקת נתונים ביומטריים ממשתמש אחר באותו מכשיר או ממכשיר אחר.
  • אם אתה צריך לאחסן נתונים מחוץ ל-TEE, השתמש בנתיב מערכת הקבצים שסופק על ידי שיטת setActiveUser() HIDL method או ספק דרך אחרת למחוק את כל נתוני תבניות המשתמש כאשר המשתמש מוסר. הסיבה היא להגן על דליפה של נתוני משתמש. מכשירים שאינם משתמשים בנתיב זה חייבים לנקות לאחר הסרת המשתמש. נדרש על ידי CDD שנתונים ביומטריים וקבצים נגזרות יאוחסנו מוצפנים - במיוחד אם לא ב-TEE אם זה בלתי אפשרי עקב דרישות האחסון של הסביבה המבודדת המאובטחת, הוסף ווים כדי להבטיח הסרה של הנתונים כאשר המשתמש מוסר או המכשיר. נמחק. ראה LockSettingsService.removeBiometricsForUser()

התאמה אישית

אם המכשיר שלך תומך במספר ביומטריות, המשתמש אמור להיות מסוגל לציין ברירת מחדל בהגדרות. היישום של BiometricPrompt שלך צריך להעדיף את הביומטרי Class 3 (לשעבר Strong) כברירת המחדל, אלא אם המשתמש יעקוף אותו במפורש, ואז צריך להציג הודעת אזהרה המסבירה את הסיכונים הקשורים לביומטרי (לדוגמה, תמונה שלך עשויה לבטל את נעילת המכשיר שלך )

מַתַן תוֹקֵף

היישום הביומטרי שלך חייב לעבור את המבחנים הבאים:

  • CTS BiometricManager
  • CTS BiometricPrompt (שפיות, בדיקה מעמיקה מסתמכת על מאמת)
  • CtsVerifier מבחן ביומטרי : חייב לעבור בנפרד עם כל אופציה שבה המכשיר תומך

בנוסף, אם המכשיר שלך תומך ביומטרי בעל AOSP HIDL (אצבע@2.1, טביעת אצבע@2.2 , פנים1.0 ), עליו לעבור את מבחן ה-VTS הרלוונטי שלו ( טביעת אצבע , פנים )