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