ข้อมูลไบโอเมตริก

ข้อมูลไบโอเมตริกเป็นวิธีที่สะดวกกว่า แต่อาจปลอดภัยน้อยกว่าในการยืนยันตัวตนด้วยอุปกรณ์ ในโมเดลการตรวจสอบสิทธิ์แบบเป็นชั้น การตรวจสอบสิทธิ์หลัก (ซึ่งเป็นรูปแบบที่อิงตามปัจจัยที่ทราบ เช่น PIN, รูปแบบ และรหัสผ่าน) จะมอบความปลอดภัยในระดับสูงสุด ข้อมูลไบโอเมตริกอยู่ในระดับการตรวจสอบสิทธิ์รอง ซึ่งให้ความสะดวกสบายและความปลอดภัยอย่างสมดุล CDD ของ Android กำหนดระดับความปลอดภัยของข้อมูลไบโอเมตริกออกเป็น 3 ระดับ ได้แก่ ระดับ 3 (เดิมคือ "ปลอดภัย") ระดับ 2 (เดิมคือ "ไม่ปลอดภัย") และระดับ 1 (เดิมคือ "สะดวก") แต่ละคลาสจะมีชุดข้อกําหนดเบื้องต้น สิทธิ์ และข้อจํากัด โปรดดูรายละเอียดเพิ่มเติมใน CDD ด้านบน คลาสทั้ง 3 คลาสได้รับอนุญาตให้ผสานรวมกับหน้าจอล็อก แต่อนุญาตให้ผสานรวมกับ API android.hardware.biometrics เฉพาะตัวตรวจสอบสิทธิ์ที่รัดกุมและที่รัดกุมน้อยเท่านั้น ตารางนี้อธิบายเกี่ยวกับโปรแกรมตรวจสอบสิทธิ์แต่ละรายการและฟังก์ชันการทำงานที่รองรับ

Authenticator หน้าจอล็อก การผสานรวม BiometricPrompt คีย์สโตร์ (คีย์ตามเวลา) คีย์สโตร์ (คีย์ที่อิงตามการดำเนินการ)
BIOMETRIC_STRONG (ระดับ 3) ใช่ ได้ ได้ ใช่
BIOMETRIC_WEAK (ระดับ 2) ใช่ ได้ ไม่ได้ ไม่
BIOMETRIC_CONVENIENCE
(ระดับ 1)
ใช่ ไม่ได้ ไม่ได้ ไม่
DEVICE_CREDENTIAL ใช่ ได้ ได้ ใช่

เฟรมเวิร์ก Android รองรับการตรวจสอบสิทธิ์ด้วยข้อมูลไบโอเมตริกของใบหน้าและลายนิ้วมือ Android สามารถปรับแต่งให้รองรับรูปแบบข้อมูลไบโอเมตริกอื่นๆ ได้ (เช่น ม่านตา) อย่างไรก็ตาม การผสานรวมข้อมูลไบโอเมตริกจะขึ้นอยู่กับความปลอดภัยด้านไบโอเมตริก ไม่ใช่รูปแบบ ดูรายละเอียดเพิ่มเติมเกี่ยวกับข้อกำหนดเฉพาะด้านความปลอดภัยไบโอเมตริกได้ที่การวัดความปลอดภัยการปลดล็อกด้วยข้อมูลไบโอเมตริก

แหล่งที่มา

Android 12

  • เปิดตัว BiometricManager.Strings API ซึ่งให้สตริงที่แปลแล้วสำหรับแอปที่ใช้ BiometricPrompt เพื่อตรวจสอบสิทธิ์ สตริงเหล่านี้มีไว้เพื่อรับรู้อุปกรณ์และให้ข้อมูลเฉพาะเจาะจงมากขึ้นเกี่ยวกับประเภทการตรวจสอบสิทธิ์ที่อาจใช้
  • รวมถึงรองรับเซ็นเซอร์ลายนิ้วมือใต้จอแสดงผล (UDFPS)

Android 11

  • แนะนำอินเทอร์เฟซ BiometricManager.Authenticators ซึ่งมีค่าคงที่ที่นักพัฒนาแอปสามารถใช้เพื่อระบุประเภทการตรวจสอบสิทธิ์ที่แอปยอมรับ
  • เพิ่ม ACTION_BIOMETRIC_ENROLL intent action ซึ่งนักพัฒนาแอปสามารถใช้เพื่อนำผู้ใช้ไปยังการลงทะเบียนวิธีตรวจสอบสิทธิ์ที่เป็นไปตามข้อกำหนดของแอป
  • เพิ่มAuthenticationResult#getAuthenticationType() method ซึ่งนักพัฒนาแอปสามารถใช้เพื่อตรวจสอบว่าผู้ใช้ตรวจสอบสิทธิ์โดยใช้ข้อมูลประจำตัวไบโอเมตริกหรือข้อมูลประจำตัวของอุปกรณ์
  • รองรับคีย์ auth-per-use เพิ่มเติมภายในคลาส BiometricPrompt

Android 10

  • แนะนำ BiometricManager class ที่นักพัฒนาแอปสามารถใช้เพื่อค้นหาความพร้อมให้บริการของการตรวจสอบสิทธิ์ด้วยข้อมูลไบโอเมตริก
  • รวมถึงการผสานรวมการตรวจสอบสิทธิ์ด้วยลายนิ้วมือและใบหน้าสำหรับ BiometricPrompt

Android 9

  • รวมการผสานรวมลายนิ้วมือสำหรับ BiometricPrompt เท่านั้น
  • เลิกใช้งานคลาส FingerprintManager หากแอปที่รวมไว้และแอประบบใช้คลาสนี้ ให้อัปเดตแอปเหล่านั้นให้ใช้ BiometricPrompt และ BiometricManager แทน
  • อัปเดตการทดสอบโปรแกรมตรวจสอบ CTS ของ FingerprintManager เพื่อทดสอบ BiometricPrompt โดยใช้ BiometricPromptBoundKeysTest

การใช้งาน

ผสานรวมสแต็กข้อมูลไบโอเมตริกกับ BiometricPrompt, BiometricManager และ ACTION_BIOMETRIC_ENROLL API เพื่อให้ผู้ใช้และนักพัฒนาแอปได้รับประสบการณ์การใช้งานข้อมูลไบโอเมตริกที่ราบรื่น อุปกรณ์ที่มีเซ็นเซอร์ไบโอเมตริกต้องเป็นไปตามข้อกำหนดด้านความปลอดภัยเหล่านี้ นอกจากนี้ การติดตั้งใช้งานทั้งหมดต้องผ่านข้อบังคับของ CtsBiometricsTestCases CTS

วิธีผสานรวมสแต็กข้อมูลไบโอเมตริกกับ ACTION_BIOMETRIC_ENROLL API

  1. แก้ไข BiometricEnrollActivity เพื่อแสดงขั้นตอนการลงทะเบียน โปรดทราบว่าคุณจะแสดงข้อมูลไบโอเมตริกได้ก็ต่อเมื่อข้อมูลดังกล่าวเป็นไปตามระดับความแข็งแกร่งที่ขอ หากอุปกรณ์รองรับมากกว่า 1 รายการ การดำเนินการนี้จะแสดงรายการที่ผู้ใช้เลือกได้
สถาปัตยกรรมของ BiometricPrompt
รูปที่ 1 สถาปัตยกรรมของ BiometricPrompt

หลักเกณฑ์การติดตั้งใช้งาน HAL

ปฏิบัติตามหลักเกณฑ์ HAL เกี่ยวกับข้อมูลไบโอเมตริกต่อไปนี้เพื่อให้มั่นใจว่าข้อมูลไบโอเมตริกจะไม่รั่วไหลและถูกนำออกเมื่อนำผู้ใช้ออกจากอุปกรณ์

  • ตรวจสอบว่าข้อมูลไบโอเมตริกดิบหรือข้อมูลอนุพันธ์ (เช่น เทมเพลต) ไม่สามารถเข้าถึงได้จากภายนอกสภาพแวดล้อมที่แยกและปลอดภัย (เช่น TEE หรือองค์ประกอบที่ปลอดภัย) ข้อมูลที่จัดเก็บทั้งหมดต้องได้รับการเข้ารหัสด้วยคีย์เฉพาะอุปกรณ์ที่ TEE (Trusted Execution Environment) เท่านั้นที่ทราบ หากฮาร์ดแวร์รองรับ ให้จำกัดการเข้าถึงฮาร์ดแวร์ไปยังสภาพแวดล้อมที่แยกออกมาอย่างปลอดภัยและปกป้องด้วยนโยบาย SELinux ทำให้ช่องทางการสื่อสาร (เช่น SPI, I2C) เข้าถึงได้เฉพาะในสภาพแวดล้อมที่แยกส่วนอย่างปลอดภัยซึ่งมีนโยบาย SELinux ที่ชัดเจนในไฟล์ทั้งหมดของอุปกรณ์
  • การเก็บรวบรวม การลงทะเบียน และการจดจำข้อมูลไบโอเมตริกต้องเกิดขึ้นภายในสภาพแวดล้อมที่แยกส่วนและปลอดภัยเพื่อป้องกันการละเมิดข้อมูลและการโจมตีอื่นๆ ข้อกำหนดนี้มีผลกับข้อมูลไบโอเมตริกคลาส 3 (เดิมคือ "แข็งแกร่ง") และคลาส 2 (เดิมคือ "อ่อนแอ") เท่านั้น
  • ลงนามเทมเพลตข้อมูลไบโอเมตริกด้วยคีย์ส่วนตัวสำหรับอุปกรณ์โดยเฉพาะเพื่อป้องกันการโจมตีด้วยการเล่นซ้ำ สำหรับมาตรฐานการเข้ารหัสขั้นสูง (AES) ขั้นต่ำให้ลงชื่อเทมเพลตด้วยเส้นทางระบบไฟล์แบบสัมบูรณ์ กลุ่ม และรหัสข้อมูลไบโอเมตริกเพื่อให้ไฟล์เทมเพลตใช้งานไม่ได้ในอุปกรณ์อื่นหรือสำหรับบุคคลอื่นที่ไม่ใช่ผู้ใช้ที่ลงทะเบียนเทมเพลตในอุปกรณ์เดียวกัน เช่น ป้องกันไม่ให้คัดลอกข้อมูลไบโอเมตริกจากผู้ใช้รายอื่นในอุปกรณ์เดียวกันหรือจากอุปกรณ์อื่น
  • หากต้องการจัดเก็บข้อมูลนอก TEE ให้ใช้เส้นทางระบบไฟล์ที่ setActiveUser() HIDL method ระบุไว้ หรือระบุวิธีอื่นเพื่อลบข้อมูลเทมเพลตผู้ใช้ทั้งหมดเมื่อนำผู้ใช้ออก เหตุผลคือเพื่อปกป้องการรั่วไหลของข้อมูลผู้ใช้ อุปกรณ์ที่ไม่ได้ใช้เส้นทางนี้ต้องล้างข้อมูลหลังจากนำผู้ใช้ออก CDD กำหนดให้จัดเก็บข้อมูลไบโอเมตริกและไฟล์อนุพันธ์ที่มีการเข้ารหัส โดยเฉพาะหากไม่ได้อยู่ใน TEE หากดำเนินการนี้ไม่สามารถทำได้เนื่องจากข้อกำหนดด้านพื้นที่เก็บข้อมูลของสภาพแวดล้อมที่แยกส่วนอย่างปลอดภัย ให้เพิ่มฮุกเพื่อให้มั่นใจว่าระบบจะนำข้อมูลออกเมื่อนำผู้ใช้ออกหรือล้างข้อมูลในอุปกรณ์ ดู LockSettingsService.removeBiometricsForUser()

การปรับแต่ง

หากอุปกรณ์รองรับข้อมูลไบโอเมตริกหลายรายการ ผู้ใช้ควรระบุค่าเริ่มต้นในการตั้งค่าได้ BiometricPromptการใช้งานของคุณควรใช้ข้อมูลไบโอเมตริกระดับ 3 (เดิมคือ "ระดับสูง") เป็นค่าเริ่มต้น เว้นแต่ผู้ใช้จะลบล้างข้อมูลดังกล่าวอย่างชัดเจน ในกรณีนี้ระบบจะต้องแสดงข้อความเตือนที่อธิบายถึงความเสี่ยงที่เกี่ยวข้องกับข้อมูลไบโอเมตริก (เช่น รูปภาพของคุณอาจปลดล็อกอุปกรณ์ได้)

สตริงการตรวจสอบสิทธิ์เฉพาะอุปกรณ์

ตั้งแต่ Android 12 เป็นต้นไป สตริงการตรวจสอบสิทธิ์ตามบริบทจะพร้อมใช้งานสำหรับนักพัฒนาแอปผ่าน BiometricManager.Strings API คุณปรับแต่งค่าทรัพยากรที่ API นี้แสดงผลเพื่อใช้สตริงเฉพาะอุปกรณ์ได้ หากดำเนินการดังกล่าว โปรดตรวจสอบว่าสตริงใหม่ได้รับการแปลสำหรับภาษาทั้งหมดที่อุปกรณ์รองรับ นอกจากนี้ โปรดตรวจสอบว่าระบบเก็บรักษาพร็อพเพอร์ตี้ต่อไปนี้ไว้


วิธีการ

วัตถุประสงค์ของสตริง

ประเภทการตรวจสอบสิทธิ์ที่จะรวม

หากทั้งข้อมูลไบโอเมตริกและการล็อกหน้าจอเป็นไปได้

getButtonLabel()

ป้ายกำกับสำหรับปุ่มที่เรียกใช้ BiometricPrompt

ประเภทที่ลงทะเบียนเท่านั้น (หากเป็นไปได้) ที่เป็นไปตามข้อกำหนดของโปรแกรมตรวจสอบสิทธิ์

ใช้สตริงข้อมูลไบโอเมตริกเท่านั้น (เช่น "ใช้ลายนิ้วมือ")

getPromptMessage()

ข้อความที่แสดงใน BiometricPrompt ขณะตรวจสอบสิทธิ์

ประเภทที่ลงทะเบียนเท่านั้น (หากเป็นไปได้) ที่เป็นไปตามข้อกำหนดของโปรแกรมตรวจสอบสิทธิ์

ใช้สตริงการล็อกหน้าจอและข้อมูลไบโอเมตริกที่รวมกัน (เช่น "ใช้ลายนิ้วมือหรือ PIN เพื่อดำเนินการต่อ")

getSettingName()

ชื่อการตั้งค่าที่เปิดใช้ BiometricPrompt สำหรับการรับรอง

อุปกรณ์รองรับทุกประเภท (แม้ว่าจะไม่ได้ลงทะเบียน) ที่เป็นไปตามข้อกำหนดของโปรแกรมตรวจสอบสิทธิ์

ใช้สตริงข้อมูลไบโอเมตริกและการล็อกหน้าจอที่รวมกัน (เช่น "ใช้ลายนิ้วมือหรือการล็อกหน้าจอ")

ตัวอย่างเช่น อุปกรณ์ที่มีเซ็นเซอร์ใบหน้าระดับ 2 ที่มีใบหน้าที่ลงทะเบียน PIN ที่ลงทะเบียน และเซ็นเซอร์ลายนิ้วมือระดับ 3 ไม่มีลายนิ้วมือที่ลงทะเบียน ตารางต่อไปนี้แสดงสตริงตัวอย่างสำหรับชุดค่าผสมของโปรแกรมตรวจสอบสิทธิ์ที่อนุญาตแต่ละรายการ และวิธีการ BiometricManager.Strings ที่เรียกใช้


โปรแกรมตรวจสอบสิทธิ์ที่อนุญาต

getButtonLabel()

getPromptMessage()

getSettingName()

ไบโอเมตริกระดับ 3 (BIOMETRIC_STRONG)

"ใช้ลายนิ้วมือ"
(มีเพียงลายนิ้วมือเท่านั้นที่เป็นไปตามข้อกำหนดของโปรแกรมตรวจสอบสิทธิ์)

"ใช้ลายนิ้วมือเพื่อดำเนินการต่อ"
(มีเพียงลายนิ้วมือเท่านั้นที่เป็นไปตามข้อกำหนดของโปรแกรมตรวจสอบสิทธิ์)

"ใช้ลายนิ้วมือ"
(มีเพียงลายนิ้วมือเท่านั้นที่เป็นไปตามข้อกำหนดของโปรแกรมตรวจสอบสิทธิ์)

ข้อมูลไบโอเมตริกระดับ 2 (BIOMETRIC_WEAK)

"ใช้ใบหน้า"
(ใบหน้าและลายนิ้วมือเป็นไปตามข้อกำหนด ระบบจะลงทะเบียนเฉพาะใบหน้า)

"ใช้ใบหน้าเพื่อดำเนินการต่อ"
(ใบหน้าและลายนิ้วมือตรงตามข้อกำหนด ลงทะเบียนไว้เฉพาะใบหน้า)

"ใช้ใบหน้าหรือลายนิ้วมือ"
(ใบหน้าและลายนิ้วมือเป็นไปตามข้อกำหนด อุปกรณ์รองรับทั้ง 2 อย่าง)

การล็อกหน้าจอ (DEVICE_CREDENTIAL)

"ใช้ PIN"
(การล็อกหน้าจอใดก็ได้ที่เป็นไปตามข้อกำหนด มีการลงทะเบียน PIN)

"ป้อน PIN เพื่อดำเนินการต่อ"
(การล็อกหน้าจอใดก็ได้ที่ตรงตามข้อกำหนด มีการลงทะเบียน PIN)

"ใช้ล็อกหน้าจอ"
(ล็อกหน้าจอใดก็ได้ที่ตรงตามข้อกำหนด)

การล็อกหน้าจอด้วยข้อมูลไบโอเมตริกระดับ 3 หรือ

"ใช้ PIN"
(ลายนิ้วมือและการล็อกหน้าจอใดๆ เป็นไปตามข้อกำหนด ลงทะเบียนเฉพาะ PIN)

"ป้อน PIN เพื่อดำเนินการต่อ"
(ลายนิ้วมือและการล็อกหน้าจอใดๆ เป็นไปตามข้อกำหนด ลงทะเบียนเฉพาะ PIN)

"ใช้ลายนิ้วมือหรือการล็อกหน้าจอ"
(ลายนิ้วมือและการล็อกหน้าจอใดก็ได้ที่เป็นไปตามข้อกำหนด)

การปลดล็อกด้วยไบโอเมตริกระดับ 2 หรือการล็อกหน้าจอ

"ใช้ใบหน้า"
(ใบหน้า ลายนิ้วมือ และการล็อกหน้าจอใดๆ ก็ตามต้องเป็นไปตามข้อกำหนด มีการลงทะเบียนใบหน้าและใบหน้าจะแทนที่ PIN)

"ใช้ใบหน้าหรือ PIN เพื่อดำเนินการต่อ"
(ใบหน้า ลายนิ้วมือ และการล็อกหน้าจอใดๆ เป็นไปตามข้อกำหนด มีการลงทะเบียนใบหน้าและ PIN)

"ใช้ข้อมูลไบโอเมตริกหรือการล็อกหน้าจอ"
(ใบหน้า ลายนิ้วมือ และการล็อกหน้าจอใดก็ได้ที่เป็นไปตามข้อกำหนด)

การตรวจสอบความถูกต้อง

การติดตั้งใช้งานข้อมูลไบโอเมตริกต้องผ่านการทดสอบต่อไปนี้

  • CTS BiometricManager
  • CTS BiometricPrompt (ความถูกต้อง การทดสอบเชิงลึกจะอาศัยโปรแกรมตรวจสอบ)
  • ส่วนการทดสอบข้อมูลไบโอเมตริกของ CtsVerifier: ต้องผ่านแต่ละรูปแบบที่อุปกรณ์รองรับ

นอกจากนี้ หากอุปกรณ์รองรับข้อมูลไบโอเมตริกที่มี AOSP HIDL (fingerprint@2.1, fingerprint@2.2, face1.0) อุปกรณ์จะต้องผ่านการทดสอบ VTS ที่เกี่ยวข้อง (fingerprint, face)