ข้อมูลไบโอเมตริกเป็นวิธีที่สะดวกกว่า แต่อาจปลอดภัยน้อยกว่าในการยืนยันตัวตนด้วยอุปกรณ์ ภายใต้โมเดลการตรวจสอบสิทธิ์แบบเป็นระดับชั้น การตรวจสอบสิทธิ์หลัก (เช่น PIN, รูปแบบ และรหัสผ่าน) จะรักษาความปลอดภัยระดับสูงสุด ข้อมูลไบโอเมตริกอยู่ในระดับการตรวจสอบสิทธิ์รอง ซึ่งให้ความสะดวกสบายและความปลอดภัยอย่างสมดุล Android CDD กำหนดระดับความเข้มแข็งของข้อมูลไบโอเมตริกไว้ 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
- แก้ไข BiometricEnrollActivity เพื่อแสดงขั้นตอนการลงทะเบียน โปรดทราบว่าคุณจะแสดงข้อมูลไบโอเมตริกได้ก็ต่อเมื่อข้อมูลดังกล่าวเป็นไปตามระดับความปลอดภัยที่ขอ หากอุปกรณ์รองรับมากกว่า 1 รายการ การดำเนินการนี้จะแสดงรายการที่ผู้ใช้เลือกได้
หลักเกณฑ์การติดตั้งใช้งาน HAL
ปฏิบัติตามหลักเกณฑ์ HAL เกี่ยวกับข้อมูลไบโอเมตริกต่อไปนี้เพื่อให้มั่นใจว่าข้อมูลไบโอเมตริกจะไม่รั่วไหลและถูกนำออกเมื่อนำผู้ใช้ออกจากอุปกรณ์
- ตรวจสอบว่าข้อมูลไบโอเมตริกดิบหรือข้อมูลอนุพันธ์ (เช่น เทมเพลต) ไม่สามารถเข้าถึงได้จากภายนอกสภาพแวดล้อมที่แยกและปลอดภัย (เช่น TEE หรือองค์ประกอบที่ปลอดภัย) ข้อมูลที่จัดเก็บทั้งหมดต้องได้รับการเข้ารหัสด้วยคีย์เฉพาะอุปกรณ์ที่ TEE (Trusted Execution Environment) เท่านั้นที่ทราบ หากฮาร์ดแวร์รองรับ ให้จำกัดการเข้าถึงฮาร์ดแวร์ไปยังสภาพแวดล้อมที่แยกออกมาอย่างปลอดภัยและปกป้องด้วยนโยบาย SELinux ทำให้ช่องทางการสื่อสาร (เช่น SPI, I2C) สามารถเข้าถึงได้เฉพาะสภาพแวดล้อมที่แยกเพื่อความปลอดภัยด้วยนโยบาย SELinux ที่ชัดแจ้งในไฟล์ของอุปกรณ์ทุกไฟล์
- การได้มาซึ่งข้อมูลไบโอเมตริก การลงทะเบียน และการจดจำต้องเกิดขึ้นภายในสภาพแวดล้อมที่แยกจากกันซึ่งปลอดภัย เพื่อป้องกันการละเมิดข้อมูลและการโจมตีอื่นๆ ข้อกำหนดนี้ใช้กับข้อมูลไบโอเมตริกคลาส 3 (เดิมเรียกว่าขั้นสูง) และคลาส 2 (เดิมคือไม่รัดกุม) เท่านั้น
- ลงนามเทมเพลตข้อมูลไบโอเมตริกด้วยคีย์ส่วนตัวสำหรับอุปกรณ์โดยเฉพาะเพื่อป้องกันการโจมตีด้วยการบันทึกซ้ำ สำหรับมาตรฐานการเข้ารหัสขั้นสูง (AES) ขั้นต่ำให้ลงนามในเทมเพลตด้วยเส้นทางระบบไฟล์แบบสัมบูรณ์ กลุ่ม และรหัสข้อมูลไบโอเมตริกเพื่อให้ไฟล์เทมเพลตใช้งานไม่ได้ในอุปกรณ์อื่นหรือสำหรับบุคคลอื่นที่ไม่ใช่ผู้ใช้ที่ลงทะเบียนเทมเพลตในอุปกรณ์เดียวกัน เช่น ป้องกันการคัดลอกข้อมูลไบโอเมตริกจากผู้ใช้รายอื่นในอุปกรณ์เดียวกันหรือจากอุปกรณ์อื่น
- หากต้องการจัดเก็บข้อมูลนอก TEE ให้ใช้เส้นทางระบบไฟล์ที่
setActiveUser() HIDL method
ระบุไว้ หรือระบุวิธีอื่นเพื่อลบข้อมูลเทมเพลตผู้ใช้ทั้งหมดเมื่อนำผู้ใช้ออก เหตุผลก็คือเพื่อปกป้องการรั่วไหลของข้อมูลผู้ใช้ อุปกรณ์ที่ไม่ได้ใช้เส้นทางนี้ต้องล้างข้อมูลหลังจากนำผู้ใช้ออก CDD กำหนดให้ต้องเข้ารหัสข้อมูลไบโอเมตริกและไฟล์ลอกเลียนแบบ โดยเฉพาะอย่างยิ่งหากไม่อยู่ใน TEE หากดำเนินการดังกล่าวไม่ได้เนื่องจากข้อกำหนดด้านพื้นที่เก็บข้อมูลของสภาพแวดล้อมแบบแยกส่วนที่ปลอดภัย ให้เพิ่มฮุกเพื่อดูแลให้มีการนำข้อมูลออกเมื่อผู้ใช้ถูกนำออกหรือล้างข้อมูลอุปกรณ์ ดู LockSettingsService.removeBiometricsForUser()
การปรับแต่ง
หากอุปกรณ์รองรับข้อมูลไบโอเมตริกหลายรายการ ผู้ใช้ควรระบุค่าเริ่มต้นในการตั้งค่าได้ การใช้งาน BiometricPrompt
ของคุณควรใช้ข้อมูลไบโอเมตริกระดับ 3 (เดิมคือ Strong) เป็นค่าเริ่มต้น เว้นแต่ผู้ใช้จะลบล้างอย่างชัดแจ้ง จะต้องแสดงข้อความเตือนเพื่ออธิบายความเสี่ยงที่เกี่ยวข้องกับข้อมูลไบโอเมตริก (เช่น รูปภาพของคุณอาจปลดล็อกอุปกรณ์)
สตริงการตรวจสอบสิทธิ์เฉพาะอุปกรณ์
ตั้งแต่ Android 12 เป็นต้นไป สตริงการตรวจสอบสิทธิ์ตามบริบทจะพร้อมใช้งานสำหรับนักพัฒนาแอปผ่าน BiometricManager.Strings API คุณปรับแต่งค่าทรัพยากรที่ API นี้แสดงผลเพื่อใช้สตริงเฉพาะอุปกรณ์ได้ หากดำเนินการดังกล่าว โปรดตรวจสอบว่าสตริงใหม่ได้รับการแปลสำหรับภาษาทั้งหมดที่อุปกรณ์รองรับ นอกจากนี้ โปรดตรวจสอบว่าระบบเก็บรักษาพร็อพเพอร์ตี้ต่อไปนี้ไว้
วิธีการ |
วัตถุประสงค์ของสตริง |
ประเภทการตรวจสอบสิทธิ์ที่จะรวม |
หากทั้งข้อมูลไบโอเมตริกและการล็อกหน้าจอเป็นไปได้ |
---|---|---|---|
getButtonLabel() |
ป้ายกำกับสำหรับปุ่มที่เรียกใช้ BiometricPrompt |
มีเฉพาะประเภทลงทะเบียนแล้ว (หากเป็นไปได้) ซึ่งเป็นไปตามข้อกำหนดของ Authenticator |
ใช้สตริงข้อมูลไบโอเมตริกเท่านั้น (เช่น "ใช้ลายนิ้วมือ") |
getPromptMessage() |
ข้อความที่แสดงใน BiometricPrompt ขณะตรวจสอบสิทธิ์ |
ประเภทที่ลงทะเบียนเท่านั้น (หากเป็นไปได้) ที่เป็นไปตามข้อกำหนดของโปรแกรมตรวจสอบสิทธิ์ |
ใช้สตริงการล็อกหน้าจอและข้อมูลไบโอเมตริกที่รวมกัน (เช่น "ใช้ลายนิ้วมือหรือ PIN เพื่อดำเนินการต่อ") |
getSettingName() |
ชื่อการตั้งค่าที่เปิดใช้ BiometricPrompt สำหรับการรับรอง |
อุปกรณ์รองรับทุกประเภท (แม้ว่าจะไม่ได้ลงทะเบียน) ซึ่งเป็นไปตามข้อกำหนดของ Authenticator |
ใช้สตริงข้อมูลไบโอเมตริกและการล็อกหน้าจอแบบรวม (เช่น "ใช้ลายนิ้วมือหรือการล็อกหน้าจอ") |
ตัวอย่างเช่น ลองพิจารณาอุปกรณ์ที่มีเซ็นเซอร์ใบหน้าคลาส 2 ที่มีใบหน้าที่ลงทะเบียน PIN ที่ลงทะเบียนไว้ และเซ็นเซอร์ลายนิ้วมือคลาส 3 ที่ไม่มีลายนิ้วมือที่ลงทะเบียน ตารางต่อไปนี้แสดงสตริงตัวอย่างสำหรับชุดค่าผสมของโปรแกรมตรวจสอบสิทธิ์ที่อนุญาตแต่ละรายการ และวิธีการ BiometricManager.Strings ที่เรียกใช้
โปรแกรมตรวจสอบสิทธิ์ที่อนุญาต |
getButtonLabel() |
getPromptMessage() |
getSettingName() |
---|---|---|---|
ไบโอเมตริกระดับ 3 (BIOMETRIC_STRONG) |
"ใช้ลายนิ้วมือ" (มีเพียงลายนิ้วมือเท่านั้นที่เป็นไปตามข้อกำหนดของโปรแกรมตรวจสอบสิทธิ์) |
"ใช้ลายนิ้วมือเพื่อดำเนินการต่อ" (เฉพาะลายนิ้วมือตรงตามข้อกำหนดของ Authenticator) |
"ใช้ลายนิ้วมือ" (มีเพียงลายนิ้วมือเท่านั้นที่เป็นไปตามข้อกำหนดของโปรแกรมตรวจสอบสิทธิ์) |
ข้อมูลไบโอเมตริกระดับ 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)