ביומטריה

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

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

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

מָקוֹר

אנדרואיד 12

  • מציג את BiometricManager.Strings API, המספק מחרוזות מקומיות עבור אפליקציות המשתמשות ב-BiometricPrompt לאימות. מחרוזות אלו נועדו להיות מודעות למכשיר ולספק יותר ספציפיות לגבי סוגי האימות שניתן להשתמש בהם.
  • כולל תמיכה בחיישן טביעות אצבע מתחת לתצוגה (UDFPS).

אנדרואיד 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 . מכשירים עם חיישנים ביומטריים חייבים לעמוד בדרישות החוזק הללו. בנוסף, כל ההטמעות חייבות לעבור את מודול CtsBiometricsTestCases CTS.

כדי לשלב את הערימה הביומטרית שלך עם 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) כברירת המחדל, אלא אם המשתמש יעקוף אותו במפורש, ואז צריך להציג הודעת אזהרה המסבירה את הסיכונים הקשורים לביומטרי (לדוגמה, תמונה שלך עשויה לבטל את נעילת המכשיר שלך )

מחרוזות אימות ספציפיות למכשיר

החל מ-Android 12, מחרוזות אימות הקשר זמינות למפתחים דרך ה-API של BiometricManager.Strings . אתה יכול להתאים אישית את ערכי המשאבים המוחזרים על ידי API זה כדי ליישם מחרוזות ספציפיות למכשיר. אם כן, ודא שכל המחרוזות החדשות מתורגמות לכל המקומות שבהם המכשיר תומך. בנוסף, ודא שהמאפיינים הבאים נשמרים:


שיטה

מטרת מחרוזת

סוגי אימות שיש לכלול

אם ביומטריים וגם נעילת מסך אפשריים

getButtonLabel()

תווית ללחצן שמפעיל את BiometricPrompt

סוגים רשומים בלבד (אם אפשר) העומדים בדרישות המאמת

השתמש במחרוזת ביומטרית בלבד (כגון, "השתמש בטביעת אצבע")

getPromptMessage()

ההודעה מוצגת ב-BiometricPrompt בזמן האימות

סוגים רשומים בלבד (אם אפשר) העומדים בדרישות המאמת

השתמש במחרוזת משולבת ביומטרית ונעילת מסך (למשל "השתמש בטביעת האצבע או ב-PIN שלך כדי להמשיך")

getSettingName()

שם של הגדרה המאפשרת BiometricPrompt לאימות

כל הסוגים הנתמכים על ידי המכשיר (גם אם לא רשום) העומדים בדרישות המאמת

השתמש במחרוזת ביומטרית ונעילת מסך משולבת (כגון, "השתמש בטביעת אצבע או נעילת מסך")

לדוגמה, שקול מכשיר שיש לו חיישן פנים Class 2 עם פנים רשומות , PIN רשום וחיישן טביעות אצבע Class 3 ללא טביעות אצבע רשומות . הטבלה הבאה מספקת מחרוזות לדוגמה עבור כל שילוב של מאמתים מותרים ושיטת BiometricManager.Strings שהופעלה:


מאמתים מותרים

getButtonLabel()

getPromptMessage()

getSettingName()

מחלקה 3 ביומטרית ( BIOMETRIC_STRONG )

"השתמש בטביעת אצבע"
(רק טביעת אצבע עומדת בדרישות המאמת)

"השתמש בטביעת האצבע שלך כדי להמשיך"
(רק טביעת אצבע עומדת בדרישות המאמת)

"השתמש בטביעת אצבע"
(רק טביעת אצבע עומדת בדרישות המאמת)

Class 2 ביומטרי ( BIOMETRIC_WEAK )

"השתמש בפנים"
(פנים וטביעת אצבע עומדים בדרישות; רק פנים רשום)

"השתמש בפנים שלך כדי להמשיך"
(פנים וטביעת אצבע עומדים בדרישות; רק פנים רשום)

"השתמש בפנים או בטביעת אצבע"
(פנים וטביעת אצבע עומדים בדרישות; המכשיר תומך בשניהם)

נעילת מסך ( DEVICE_CREDENTIAL )

"השתמש ב-PIN"
(כל נעילת מסך עומדת בדרישות; PIN רשום)

"הזן את ה-PIN שלך כדי להמשיך"
(כל נעילת מסך עומדת בדרישות; PIN רשום)

"השתמש בנעילת מסך"
(כל נעילת מסך עומדת בדרישות)

נעילת מסך ביומטרית Class 3 או נעילת מסך

"השתמש ב-PIN"
(טביעת אצבע וכל נעילת מסך עומדים בדרישות; רק PIN רשום)

"הזן את ה-PIN שלך כדי להמשיך"
(טביעת אצבע וכל נעילת מסך עומדים בדרישות; רק PIN רשום)

"השתמש בטביעת אצבע או נעילת מסך"
(טביעת אצבע וכל נעילת מסך עומדים בדרישות)

נעילת מסך ביומטרית Class 2 או נעילת מסך

"השתמש בפנים"
(פנים, טביעת אצבע וכל נעילת מסך עומדים בדרישות; הפנים רשומות ומחליפות את ה-PIN)

"השתמש בפנים או ב-PIN שלך כדי להמשיך"
(פנים, טביעת אצבע וכל נעילת מסך עומדים בדרישות; פנים ו-PIN רשומים)

"השתמש ביומטריה או נעילת מסך"
(פנים, טביעת אצבע וכל נעילת מסך עומדים בדרישות)

מַתַן תוֹקֵף

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

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

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