מידע ביומטרי

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

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

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

מקור

12 ‏Android

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

Android 11

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

Android 10

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

Android 9

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

הטמעה

כדי להבטיח למשתמשים ולמפתחים חוויה ביומטרית חלקה, כדאי לשלב את סטאק הביומטריה עם ממשקי ה-API של BiometricPrompt,‏ BiometricManager ו-ACTION_BIOMETRIC_ENROLL. מכשירים עם חיישנים ביומטריים חייבים לעמוד בדרישות החוזק האלה.בנוסף, כל ההטמעה חייבים לעבור את מודול ה-CTS של CtsBiometricsTestCases.

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

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

הנחיות להטמעת HAL

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

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

התאמה אישית

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

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

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


שיטה

מטרת המחרוזת

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

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

getButtonLabel()

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

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

צריך להשתמש במחרוזת ביומטרית בלבד (כמו 'שימוש בטביעת אצבע')

getPromptMessage()

הודעה שמוצגת ב-BiometricPrompt במהלך האימות

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

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

getSettingName()

השם של הגדרה שמאפשרת לבצע אימות באמצעות ביולוגיה

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

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

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


הרשאות אימות מותרות

getButtonLabel()

getPromptMessage()

getSettingName()

מידע ביומטרי ברמה 3 (BIOMETRIC_STRONG)

'שימוש בטביעת אצבע'
(רק טביעת אצבע עומדת בדרישות של מאמת)

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

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

ביומטריה מסוג 2 (BIOMETRIC_WEAK)

'שימוש בפנים'
(זיהוי הפנים וטביעת האצבע עומדים בדרישות, רק זיהוי הפנים נרשם)

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

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

נעילת מסך (DEVICE_CREDENTIAL)

'שימוש בקוד אימות'
(כל נעילת מסך עומדת בדרישות, קוד האימות רשום)

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

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

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

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

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

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

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

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

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

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

אימות

ההטמעה הביומטרית צריכה לעבור את הבדיקות הבאות:

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

בנוסף, אם המכשיר תומך באימות ביומטרי עם AOSP HIDL‏ (fingerprint@2.1,‏ fingerprint@2.2,‏ face1.0), הוא חייב לעבור את בדיקת ה-VTS הרלוונטית (fingerprint,‏ face).