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

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

เฟรมเวิร์กของ Android รองรับการพิสูจน์ตัวตนด้วยใบหน้าและลายนิ้วมือ สามารถปรับแต่ง Android ให้สนับสนุนรูปแบบไบโอเมตริกซ์อื่นๆ (เช่น Iris) อย่างไรก็ตาม การรวมไบโอเมตริกซ์จะขึ้นอยู่กับการรักษาความปลอดภัยไบโอเมตริกซ์ ไม่ใช่กิริยาช่วย สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับข้อกำหนดด้านความปลอดภัยแบบไบโอเมตริก โปรดดูที่ การวัดความปลอดภัยในการปลดล็อกด้วยไบโอเมตริก

แหล่งที่มา

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 อุปกรณ์ที่มีเซ็นเซอร์ไบโอเมตริกซ์ต้องเป็นไปตาม ข้อกำหนดด้านความแข็งแรง เหล่านี้
ในการผสานรวมไบโอเมตริกซ์ของคุณกับ BiometricPrompt และ BiometricManager APIs :

  1. ตรวจสอบให้แน่ใจว่า <Modality>Service ของคุณลงทะเบียนอย่างถูกต้องกับ BiometricService ผ่านวิธี IBiometricService#registerAuthenticator และใช้อินเทอร์เฟซ IBiometricAuthenticator รูปแบบทั่วไป (ลายนิ้วมือ ใบหน้า) ขยายจาก superclass ทั่วไป หากคุณต้องการผสานรวมกิริยาที่ไม่รองรับ ให้ทำตามตัวอย่าง ลายนิ้วมือ / ใบหน้า และ แนวทาง CDD สำหรับไบโอเมตริก
  2. ตรวจสอบให้แน่ใจว่ารูปแบบใหม่ของคุณได้รับการสนับสนุนอย่างเหมาะสมใน SystemUI มีอินเทอร์เฟซผู้ใช้ BiometricPrompt เริ่มต้นสำหรับลายนิ้วมือและใบหน้า ซึ่งควรรวมถึงการเปลี่ยนแปลงเลย์เอาต์หรือธีมที่จำเป็นสำหรับอุปกรณ์ของคุณ เช่น การเปลี่ยนแปลงเลย์เอาต์ที่สอดคล้องกันสำหรับเซ็นเซอร์ลายนิ้วมือบนหน้าจอ

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

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

การใช้งานไบโอเมตริกซ์ของคุณต้องผ่านการทดสอบต่อไปนี้:

  • CTS BiometricManager
  • CTS BiometricPrompt (สติ การทดสอบในเชิงลึกอาศัยผู้ตรวจสอบ)
  • ส่วน CtsVerifier Biometric Test : ต้องผ่านแต่ละโหมดที่อุปกรณ์รองรับ

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