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

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

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

Android 11

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

Android 10

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

Android 9

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

การใช้งาน

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

หากต้องการผสานรวมสแต็กไบโอเมตริกกับ ACTION_BIOMETRIC_ENROLL API ให้ทำดังนี้

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

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

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

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

การปรับแต่ง

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

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

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


เมธอด

String purpose

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

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

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)

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

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

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

  • BiometricManager ของ CTS
  • CTS BiometricPrompt (sanity, in-depth testing relies on verifier)
  • ส่วนการทดสอบไบโอเมตริกของ CtsVerifier ต้องผ่านการทดสอบแต่ละรายการด้วยรูปแบบที่อุปกรณ์รองรับ

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