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

ข้อมูลไบโอเมตริกเป็นวิธีที่สะดวกกว่า แต่อาจปลอดภัยน้อยกว่าในการยืนยันตัวตนด้วยอุปกรณ์ ภายใต้โมเดลการตรวจสอบสิทธิ์แบบเป็นระดับชั้น การตรวจสอบสิทธิ์หลัก (เช่น 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

  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 (เดิมคือ 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)