ไบโอเมตริกซ์เป็นวิธีที่สะดวกกว่าแต่อาจปลอดภัยน้อยกว่าในการยืนยันตัวตนของคุณด้วยอุปกรณ์ ภายใต้โมเดลการตรวจสอบสิทธิ์แบบแบ่งชั้น การรับรองความถูกต้องหลัก (เช่น รูปแบบที่อิงจากปัจจัยความรู้ เช่น PIN รูปแบบ และรหัสผ่าน) ให้ระดับความปลอดภัยสูงสุด ไบโอเมตริกซ์อยู่ในระดับรองของการรับรองความถูกต้อง ซึ่งให้ความสมดุลระหว่างความสะดวกและความปลอดภัย Android CDD กำหนดระดับไบโอเมตริกซ์สามระดับ: คลาส 3 (เดิมคือ Strong), คลาส 2 (เดิมคือ Weak) และคลาส 1 (เดิมคือ Convenience) แต่ละชั้นเรียนมีข้อกำหนดเบื้องต้น สิทธิพิเศษ และข้อจำกัด - โปรดดู CDD ด้านบนสำหรับรายละเอียดเพิ่มเติม ทั้งสามคลาสได้รับอนุญาตให้รวมเข้ากับหน้าจอล็อก แต่อนุญาตให้มีเพียงผู้ตรวจสอบสิทธิ์ที่แข็งแกร่งและอ่อนแอเท่านั้นที่จะรวมเข้ากับ android.hardware.biometrics API ตารางนี้อธิบายแต่ละเครื่องยืนยันตัวตนและฟังก์ชันการทำงานที่สนับสนุน
ตัวตรวจสอบสิทธิ์ | ล็อกหน้าจอ | บูรณาการ BiometricPrompt | ที่เก็บคีย์ (คีย์ตามเวลา) | ที่เก็บคีย์ (คีย์ตามการดำเนินการ) |
---|---|---|---|---|
BIOMETRIC_STRONG (คลาส 3) | ใช่ | ใช่ | ใช่ | ใช่ |
BIOMETRIC_WEAK (คลาส 2) | ใช่ | ใช่ | ไม่ | ไม่ |
BIOMETRIC_CONVENIENCE (ชั้น 1) | ใช่ | ไม่ | ไม่ | ไม่ |
DEVICE_CREDENTIAL | ใช่ | ใช่ | ใช่ | ใช่ |
เฟรมเวิร์กของ Android รองรับการพิสูจน์ตัวตนด้วยใบหน้าและลายนิ้วมือ สามารถปรับแต่ง Android ให้สนับสนุนรูปแบบไบโอเมตริกซ์อื่นๆ (เช่น Iris) อย่างไรก็ตาม การรวมไบโอเมตริกซ์จะขึ้นอยู่กับการรักษาความปลอดภัยไบโอเมตริกซ์ ไม่ใช่กิริยาช่วย สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับข้อกำหนดด้านความปลอดภัยแบบไบโอเมตริก โปรดดูที่ การวัดความปลอดภัยในการปลดล็อกด้วยไบโอเมตริก
แหล่งที่มา
Android 12
- แนะนำ BiometricManager.Strings API ซึ่งจัดเตรียมสตริงที่แปลแล้วสำหรับแอปที่ใช้ BiometricPrompt สำหรับการตรวจสอบสิทธิ์ สตริงเหล่านี้มีจุดมุ่งหมายเพื่อให้ทราบถึงอุปกรณ์และให้ความจำเพาะเจาะจงมากขึ้นเกี่ยวกับประเภทการรับรองความถูกต้องที่อาจใช้
- รองรับเซ็นเซอร์ลายนิ้วมือใต้จอแสดงผล (UDFPS)
Android 11
- แนะนำ อินเทอร์เฟซ BiometricManager.Authenticators ซึ่งให้ค่าคงที่ที่นักพัฒนาสามารถใช้เพื่อระบุประเภทของการรับรองความถูกต้องที่แอปของตนยอมรับ
- เพิ่มการดำเนินการตามเจตนา
ACTION_BIOMETRIC_ENROLL
ซึ่งนักพัฒนาสามารถใช้เพื่อนำผู้ใช้ให้ลงทะเบียนวิธีการรับรองความถูกต้องที่ตรงตามข้อกำหนดของแอปของตน - เพิ่ม เมธอด
AuthenticationResult #getAuthenticationType ()
ซึ่งนักพัฒนาสามารถใช้ตรวจสอบว่าผู้ใช้รับรองความถูกต้องโดยใช้ข้อมูลรับรองไบโอเมตริกหรือข้อมูลรับรองอุปกรณ์ - ให้การสนับสนุนเพิ่มเติมสำหรับคีย์การตรวจสอบสิทธิ์ ต่อการใช้งาน ภายในคลาส BiometricPrompt
Android 10
- แนะนำคลาส
BiometricManager
ที่นักพัฒนาสามารถใช้เพื่อสอบถามความพร้อมใช้งานของการตรวจสอบไบโอเมตริกซ์ - รวมการบูรณาการการตรวจสอบลายนิ้วมือและใบหน้าสำหรับ
BiometricPrompt
Android 9
- รวมการรวมลายนิ้วมือสำหรับ
BiometricPrompt
เท่านั้น - เลิกใช้คลาส FingerprintManager หากแอประบบและชุดรวมของคุณใช้คลาสนี้ ให้อัปเดตแอปเพื่อใช้
BiometricPrompt
และBiometricManager
แทน - อัปเดตการทดสอบตัวตรวจสอบ CTS ด้วย
FingerprintManager
เพื่อทดสอบBiometricPrompt
โดยใช้BiometricPromptBoundKeysTest
การดำเนินการ
เพื่อให้แน่ใจว่าผู้ใช้และนักพัฒนาจะได้รับประสบการณ์ไบโอเมตริกซ์ที่ราบรื่น ให้ผสานรวมสแต็คไบโอเมตริกกับ BiometricPrompt
, BiometricManager
และ ACTION_BIOMETRIC_ENROLL
API อุปกรณ์ที่มีเซ็นเซอร์ไบโอเมตริกซ์ต้องเป็นไปตาม ข้อกำหนดด้านความแข็งแกร่ง เหล่านี้ นอกจากนี้ การใช้งานทั้งหมดต้องผ่านโมดูล CtsBiometricsTestCases CTS
ในการผสานรวมไบโอเมตริกซ์ของคุณกับ ACTION_BIOMETRIC_ENROLL API:
- แก้ไข BiometricEnrollActivity เพื่อนำเสนอขั้นตอนการลงทะเบียนของคุณ โปรดทราบว่าระบบจะแสดงข้อมูลไบโอเมตริกได้ก็ต่อเมื่อตรงตามระดับที่ต้องการเท่านั้น หากอุปกรณ์ของคุณรองรับมากกว่าหนึ่ง การกระทำนี้ควรแสดงรายการที่ผู้ใช้สามารถเลือกได้

แนวทางการดำเนินการ HAL
ปฏิบัติตามแนวทางไบโอเมตริกซ์ HAL เพื่อให้แน่ใจว่าข้อมูลไบโอเมตริกซ์จะ ไม่รั่วไหล และจะ ถูกลบออก เมื่อผู้ใช้ถูกลบออกจากอุปกรณ์:
- ตรวจสอบให้แน่ใจว่าข้อมูลไบโอเมตริกซ์ดิบหรืออนุพันธ์ (เช่น เทมเพลต) ไม่สามารถเข้าถึงได้จากภายนอกสภาพแวดล้อมที่แยกได้อย่างปลอดภัย (เช่น TEE หรือองค์ประกอบที่ปลอดภัย) ข้อมูลที่เก็บไว้ทั้งหมดต้องเข้ารหัสด้วยคีย์ เฉพาะอุปกรณ์ ที่ TEE รู้จักเท่านั้น (Trusted Execution Environment) หากฮาร์ดแวร์รองรับ ให้จำกัดการเข้าถึงฮาร์ดแวร์ให้อยู่ในสภาพแวดล้อมแบบแยกส่วนที่ปลอดภัย และปกป้องด้วยนโยบาย SELinux ทำให้ช่องทางการสื่อสาร (เช่น SPI, I2C) สามารถเข้าถึงได้เฉพาะในสภาพแวดล้อมที่แยกได้อย่างปลอดภัยด้วยนโยบาย SELinux ที่ชัดเจนในไฟล์อุปกรณ์ทั้งหมด
- การได้มาซึ่งข้อมูลไบโอเมตริก การลงทะเบียน และการรับรู้จะต้องเกิดขึ้นในสภาพแวดล้อมที่แยกออกมาอย่างปลอดภัย เพื่อป้องกันการละเมิดข้อมูลและการโจมตีอื่นๆ ข้อกำหนดนี้ใช้กับไบโอเมตริกซ์ คลาส 3 (เดิมคือ Strong) และคลาส 2 (เดิมคือ Weak) เท่านั้น
- เพื่อป้องกันการโจมตีซ้ำ ให้ลงนามในเทมเพลตไบโอเมตริกซ์ด้วยคีย์ส่วนตัวเฉพาะอุปกรณ์ สำหรับ Advanced Encryption Standard (AES) อย่างน้อยให้เซ็นชื่อเทมเพลตด้วยพาธระบบไฟล์แบบสัมบูรณ์ กลุ่ม และไบโอเมตริกซ์ เพื่อให้ไฟล์เทมเพลตใช้งานไม่ได้ในอุปกรณ์อื่นหรือสำหรับใครก็ตามที่ไม่ใช่ผู้ใช้ที่ลงทะเบียนไว้ในอุปกรณ์เดียวกัน . ตัวอย่างเช่น ป้องกันการคัดลอกข้อมูลไบโอเมตริกซ์จากผู้ใช้อื่นในอุปกรณ์เดียวกันหรือจากอุปกรณ์อื่น
- หากคุณต้องการจัดเก็บข้อมูลภายนอก TEE ให้ใช้เส้นทางระบบไฟล์ที่จัดเตรียมโดย
setActiveUser() HIDL method
หรือระบุวิธีอื่นในการลบข้อมูลเทมเพลตของผู้ใช้ทั้งหมดเมื่อผู้ใช้ถูกลบ เหตุผลคือเพื่อป้องกันการรั่วไหลของข้อมูลผู้ใช้ อุปกรณ์ที่ไม่ได้ใช้เส้นทางนี้ จะต้อง ล้างข้อมูลหลังจากที่ผู้ใช้ถูกลบออก CDD กำหนดให้มีการเข้ารหัสข้อมูลไบโอเมตริกและไฟล์อนุพันธ์ - โดยเฉพาะอย่างยิ่งหากไม่ได้อยู่ใน TEE หากสิ่งนี้เป็นไปไม่ได้เนื่องจากข้อกำหนดด้านการจัดเก็บของสภาพแวดล้อมแบบแยกที่ปลอดภัย ให้เพิ่มเบ็ดเพื่อให้แน่ใจว่าลบข้อมูลเมื่อผู้ใช้ถูกลบออกหรืออุปกรณ์ ถูกเช็ด ดู LockSettingsService.removeBiometricsForUser()
การปรับแต่ง
หากอุปกรณ์ของคุณรองรับข้อมูลไบโอเมตริกหลายรายการ ผู้ใช้ควรจะสามารถระบุค่าเริ่มต้นได้ในการตั้งค่า การใช้งาน BiometricPrompt
ของคุณควรเลือกใช้ไบโอเมตริกซ์ Class 3 (เดิมคือ Strong) เป็นค่าเริ่มต้น เว้นแต่ผู้ใช้จะลบล้างข้อมูลดังกล่าวอย่างชัดแจ้ง จากนั้นต้องแสดงข้อความเตือนเพื่ออธิบายความเสี่ยงที่เกี่ยวข้องกับไบโอเมตริก (เช่น รูปภาพของคุณอาจปลดล็อกอุปกรณ์ได้ )
สตริงการพิสูจน์ตัวตนเฉพาะอุปกรณ์
เริ่มตั้งแต่ Android 12 เป็นต้นไป สตริงการตรวจสอบสิทธิ์ตามบริบทจะพร้อมใช้งานสำหรับนักพัฒนาผ่าน BiometricManager.Strings API คุณสามารถปรับแต่งค่าทรัพยากรที่ส่งกลับโดย API นี้เพื่อใช้สตริงเฉพาะอุปกรณ์ หากคุณทำเช่นนั้น ตรวจสอบให้แน่ใจว่าได้แปลสตริงใหม่ๆ สำหรับภาษาทั้งหมดที่อุปกรณ์รองรับ นอกจากนี้ ตรวจสอบให้แน่ใจว่าได้รักษาคุณสมบัติต่อไปนี้ไว้:
วิธี | วัตถุประสงค์ของสตริง | ประเภทการตรวจสอบความถูกต้องที่จะรวม | หากเป็นไปได้ทั้งไบโอเมตริกซ์และการล็อกหน้าจอ |
---|---|---|---|
getButtonLabel() | ป้ายกำกับสำหรับปุ่มที่เรียกใช้ BiometricPrompt | ประเภทการ ลงทะเบียน เท่านั้น (ถ้าเป็นไปได้) ที่ตรงตามข้อกำหนดของผู้รับรองความถูกต้อง | ใช้สตริง ไบโอเมตริกซ์เท่านั้น (เช่น "ใช้ลายนิ้วมือ") |
getPromptMessage() | ข้อความแสดงบน BiometricPrompt ขณะตรวจสอบสิทธิ์ | ประเภทการ ลงทะเบียน เท่านั้น (ถ้าเป็นไปได้) ที่ตรงตามข้อกำหนดของผู้รับรองความถูกต้อง | ใช้สตริงการล็อกหน้าจอและไบโอเมตริก ร่วมกัน (เช่น "ใช้ลายนิ้วมือหรือ PIN เพื่อดำเนินการต่อ") |
getSettingName() | ชื่อของการตั้งค่าที่เปิดใช้งาน BiometricPrompt สำหรับการตรวจสอบสิทธิ์ | อุปกรณ์ทุกประเภทที่ รองรับ (แม้ว่าจะไม่ได้ลงทะเบียน) ที่ตรงตามข้อกำหนดของตัวตรวจสอบสิทธิ์ | ใช้สตริงการล็อกหน้าจอและไบโอเมตริก ร่วมกัน (เช่น "ใช้ลายนิ้วมือหรือการล็อกหน้าจอ") |
ตัวอย่างเช่น พิจารณาอุปกรณ์ที่มี เซ็นเซอร์ใบหน้า Class 2 ที่มี ใบหน้า ที่ ลงทะเบียนแล้ว PIN ที่ลงทะเบียนไว้ และ เซ็นเซอร์ลายนิ้วมือ Class 3 ที่ ไม่มีลายนิ้วมือที่ลงทะเบียน ตารางต่อไปนี้แสดงสตริงตัวอย่างสำหรับชุดค่าผสมของตัวตรวจสอบสิทธิ์ที่อนุญาตและเมธอด BiometricManager.Strings ที่เรียกใช้:
ผู้ตรวจสอบสิทธิ์ที่ได้รับอนุญาต | getButtonLabel() | getPromptMessage() | getSettingName() |
---|---|---|---|
ไบโอเมตริกซ์คลาส 3 ( BIOMETRIC_STRONG ) | “ใช้ลายนิ้วมือ” (เฉพาะลายนิ้วมือเท่านั้นที่ตรงตามข้อกำหนดของตัวรับรองความถูกต้อง) | "ใช้ลายนิ้วมือของคุณเพื่อดำเนินการต่อ" (เฉพาะลายนิ้วมือเท่านั้นที่ตรงตามข้อกำหนดของตัวรับรองความถูกต้อง) | “ใช้ลายนิ้วมือ” (เฉพาะลายนิ้วมือเท่านั้นที่ตรงตามข้อกำหนดของตัวรับรองความถูกต้อง) |
ไบโอเมตริกซ์คลาส 2 ( BIOMETRIC_WEAK ) | “ใช้ใบหน้า” (ใบหน้าและลายนิ้วมือเป็นไปตามข้อกำหนด ลงทะเบียนเฉพาะใบหน้าเท่านั้น) | “ใช้ใบหน้าของคุณเพื่อดำเนินการต่อ” (ใบหน้าและลายนิ้วมือเป็นไปตามข้อกำหนด ลงทะเบียนเฉพาะใบหน้าเท่านั้น) | “ใช้ใบหน้าหรือลายนิ้วมือ” (ใบหน้าและลายนิ้วมือเป็นไปตามข้อกำหนด อุปกรณ์รองรับทั้งสองอย่าง) |
ล็อกหน้าจอ ( DEVICE_CREDENTIAL ) | "ใช้ PIN" (การล็อกหน้าจอเป็นไปตามข้อกำหนด มีการลงทะเบียน PIN แล้ว) | "ป้อน PIN ของคุณเพื่อดำเนินการต่อ" (การล็อกหน้าจอเป็นไปตามข้อกำหนด มีการลงทะเบียน PIN แล้ว) | "ใช้ล็อกหน้าจอ" (การล็อกหน้าจอใด ๆ ที่ตรงตามข้อกำหนด) |
ไบโอเมตริกซ์คลาส 3 หรือการ ล็อกหน้าจอ | "ใช้ PIN" (ลายนิ้วมือและการล็อกหน้าจอเป็นไปตามข้อกำหนด ลงทะเบียนเฉพาะ PIN เท่านั้น) | "ป้อน PIN ของคุณเพื่อดำเนินการต่อ" (ลายนิ้วมือและการล็อกหน้าจอเป็นไปตามข้อกำหนด ลงทะเบียนเฉพาะ PIN เท่านั้น) | "ใช้ลายนิ้วมือหรือล็อกหน้าจอ" (ลายนิ้วมือและการล็อกหน้าจอเป็นไปตามข้อกำหนด) |
ไบโอเมตริกซ์คลาส 2 หรือการ ล็อกหน้าจอ | “ใช้ใบหน้า” (ใบหน้า ลายนิ้วมือ และการล็อกหน้าจอเป็นไปตามข้อกำหนด มีการลงทะเบียนใบหน้าและใช้ PIN แทน) | "ใช้ใบหน้าหรือ PIN ของคุณเพื่อดำเนินการต่อ" (ใบหน้า ลายนิ้วมือ และการล็อกหน้าจอเป็นไปตามข้อกำหนด มีการลงทะเบียนใบหน้าและ PIN) | "ใช้ไบโอเมตริกซ์หรือล็อกหน้าจอ" (ใบหน้า ลายนิ้วมือ และการล็อกหน้าจอใดๆ เป็นไปตามข้อกำหนด) |
การตรวจสอบความถูกต้อง
การใช้งานไบโอเมตริกซ์ของคุณต้องผ่านการทดสอบต่อไปนี้:
- CTS BiometricManager
- CTS BiometricPrompt (สติ การทดสอบในเชิงลึกอาศัยผู้ตรวจสอบ)
- ส่วน CtsVerifier Biometric Test : ต้องผ่านแต่ละโหมดที่อุปกรณ์รองรับ
นอกจากนี้ หากอุปกรณ์ของคุณรองรับไบโอเมตริกซ์ที่มี AOSP HIDL ( fingerprint@2.1 , fingerprint@2.2 , face1.0 ) จะต้องผ่านการทดสอบ VTS ที่เกี่ยวข้อง ( fingerprint , face )