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

ข้อมูลไบโอเมตริกซ์เป็นวิธีที่สะดวกกว่าแต่อาจปลอดภัยน้อยกว่าในการยืนยันตัวตนของคุณด้วยอุปกรณ์ ภายใต้โมเดลการรับรองความถูกต้องแบบเป็นชั้น การรับรองความถูกต้องหลัก (เช่น รูปแบบตามปัจจัยความรู้ เช่น PIN รูปแบบ และรหัสผ่าน) ให้การรักษาความปลอดภัยระดับสูงสุด ข้อมูลชีวภาพอยู่ในระดับรองของการรับรองความถูกต้อง ซึ่งให้ความสมดุลระหว่างความสะดวกสบายและความปลอดภัย Android CDD กำหนดความแข็งแกร่งของไบโอเมตริกสามคลาส: คลาส 3 (เดิมเรียกว่า Strong), คลาส 2 (เดิมเรียกว่า Weak) และคลาส 1 (เดิมเรียกว่า Convenience) แต่ละคลาสมีชุดข้อกำหนดเบื้องต้น สิทธิพิเศษ และข้อจำกัด โปรดดู CDD ด้านบนสำหรับรายละเอียดเพิ่มเติม ทั้งสามคลาสได้รับอนุญาตให้รวมเข้ากับหน้าจอล็อคได้ แต่มีเพียงผู้ตรวจสอบสิทธิ์ที่แข็งแกร่งและอ่อนแอเท่านั้นที่อนุญาตให้รวมเข้ากับ android.hardware.biometrics API ตารางนี้อธิบายตัวตรวจสอบความถูกต้องแต่ละตัวและฟังก์ชันการทำงานที่รองรับ

ตัวรับรองความถูกต้อง ล็อกหน้าจอ บูรณาการ BiometricPrompt ที่เก็บคีย์ (คีย์ตามเวลา) ที่เก็บคีย์ (คีย์ตามการดำเนินการ)
ไบโอเมตริก_สตรอง (คลาส 3) ใช่ ใช่ ใช่ ใช่
BIOMETRIC_WEAK (ชั้น 2) ใช่ ใช่ เลขที่ เลขที่
ไบโอเมตริก_ความสะดวกสบาย
(รุ่นที่ 1)
ใช่ เลขที่ เลขที่ เลขที่
DEVICE_CREDENTIAL ใช่ ใช่ ใช่ ใช่

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

แหล่งที่มา

แอนดรอยด์ 12

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

แอนดรอยด์ 11

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

แอนดรอยด์ 10

  • แนะนำคลาส BiometricManager ที่นักพัฒนาสามารถใช้เพื่อสอบถามความพร้อมใช้งานของการรับรองความถูกต้องทางชีวภาพ
  • รวมการบูรณาการการตรวจสอบลายนิ้วมือและใบหน้าสำหรับ BiometricPrompt

แอนดรอยด์ 9

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

การนำไปปฏิบัติ

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

หากต้องการรวมสแต็กไบโอเมตริกซ์ของคุณเข้ากับ ACTION_BIOMETRIC_ENROLL API:

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

แนวทางการดำเนินงาน HAL

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

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

การปรับแต่ง

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

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

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


วิธี

วัตถุประสงค์ของสตริง

ประเภทการตรวจสอบความถูกต้องที่จะรวมไว้

หากเป็นไปได้ทั้งไบโอเมตริกและการล็อคหน้าจอ

getButtonLabel()

ป้ายกำกับสำหรับปุ่มที่ทริกเกอร์ BiometricPrompt

ประเภท ที่ลงทะเบียน เท่านั้น (ถ้าเป็นไปได้) ที่ตรงตามข้อกำหนดของผู้ตรวจสอบความถูกต้อง

ใช้สตริง ไบโอเมตริกซ์เท่านั้น (เช่น "ใช้ลายนิ้วมือ")

getPromptMessage()

ข้อความที่แสดงบน BiometricPrompt ขณะตรวจสอบสิทธิ์

ประเภท ที่ลงทะเบียน เท่านั้น (ถ้าเป็นไปได้) ที่ตรงตามข้อกำหนดของผู้ตรวจสอบความถูกต้อง

ใช้ไบโอเมตริกซ์และการล็อกหน้าจอ รวมกัน (เช่น "ใช้ลายนิ้วมือหรือ PIN เพื่อดำเนินการต่อ")

getSettingName()

ชื่อของการตั้งค่าที่เปิดใช้งาน BiometricPrompt สำหรับการตรวจสอบสิทธิ์

อุปกรณ์ทุกประเภท รองรับ (แม้ว่าจะไม่ได้ลงทะเบียนก็ตาม) ซึ่งเป็นไปตามข้อกำหนดของผู้ตรวจสอบความถูกต้อง

ใช้สตริงการล็อกหน้าจอและไบโอเมตริกซ์ รวมกัน (เช่น "ใช้ลายนิ้วมือหรือการล็อกหน้าจอ")

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

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