ไบโอเมตริกซ์

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

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

แนวทางการดำเนินการ 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 )