Sinh trắc học

Sinh trắc học cung cấp một cách thuận tiện hơn nhưng có thể kém an toàn hơn để xác nhận danh tính của bạn bằng một thiết bị. Theo mô hình xác thực theo cấp độ, xác thực chính (tức là các phương thức dựa trên yếu tố tri thức như mã PIN, mẫu và mật khẩu) cung cấp mức độ bảo mật cao nhất. Sinh trắc học nằm ở tầng xác thực thứ cấp, mang lại sự cân bằng giữa sự thuận tiện và bảo mật. CDD Android xác định ba loại sức mạnh sinh trắc học: Loại 3 (trước đây là Mạnh), Loại 2 (trước đây là Yếu) và Loại 1 (trước đây là Tiện lợi). Mỗi lớp có một tập hợp các điều kiện tiên quyết, đặc quyền và ràng buộc - vui lòng xem CDD ở trên để biết thêm chi tiết. Tất cả ba lớp đều được phép tích hợp với màn hình khóa, nhưng chỉ các trình xác thực Mạnh và Yếu mới được phép tích hợp với API android.hardware.biometrics. Bảng này mô tả từng trình xác thực và chức năng mà chúng hỗ trợ.

Trình xác thực Màn hình khóa Tích hợp nhắc nhở sinh trắc học Kho khóa (khóa dựa trên thời gian) Kho khóa (khóa dựa trên hoạt động)
BIOMETRIC_strong (Lớp 3) Đúng Đúng Đúng Đúng
BIOMETRIC_WEAK (Lớp 2) Đúng Đúng KHÔNG KHÔNG
BIOMETRIC_TIỆN LỢI
(Lớp 1)
Đúng KHÔNG KHÔNG KHÔNG
DEVICE_CREDENTIAL Đúng Đúng Đúng Đúng

Khung Android bao gồm hỗ trợ xác thực sinh trắc học khuôn mặt và dấu vân tay. Android có thể được tùy chỉnh để hỗ trợ các phương thức sinh trắc học khác (chẳng hạn như Iris). Tuy nhiên, việc tích hợp sinh trắc học sẽ phụ thuộc vào bảo mật sinh trắc học chứ không phải phương thức. Để biết thêm chi tiết về thông số bảo mật sinh trắc học, hãy xem Đo bảo mật mở khóa sinh trắc học .

Nguồn

Android 12

  • Giới thiệu API BiometricManager.Strings , cung cấp các chuỗi được bản địa hóa cho các ứng dụng sử dụng BiometricPrompt để xác thực. Các chuỗi này nhằm mục đích nhận biết thiết bị và cung cấp thông tin cụ thể hơn về (các) loại xác thực nào có thể được sử dụng.
  • Bao gồm hỗ trợ cảm biến vân tay dưới màn hình (UDFPS).

Android 11

  • Giới thiệu giao diện BiometricManager.Authenticators , cung cấp các hằng số mà nhà phát triển có thể sử dụng để chỉ định các loại xác thực được ứng dụng của họ chấp nhận.
  • Thêmhành động có ý định ACTION_BIOMETRIC_ENROLL mà nhà phát triển có thể sử dụng để hướng dẫn người dùng đăng ký một phương thức xác thực đáp ứng các yêu cầu của ứng dụng của họ.
  • Thêm phương thức AuthenticationResult #getAuthenticationType () mà nhà phát triển có thể sử dụng để kiểm tra xem người dùng đã xác thực bằng thông tin xác thực sinh trắc học hay thông tin xác thực thiết bị.
  • Cung cấp hỗ trợ bổ sung cho các khóa xác thực cho mỗi lần sử dụng trong lớp BiometricPrompt.

Android 10

  • Giới thiệu lớp BiometricManager mà nhà phát triển có thể sử dụng để truy vấn tính khả dụng của xác thực sinh trắc học.
  • Bao gồm tích hợp xác thực dấu vân tay và khuôn mặt cho BiometricPrompt

Android 9

  • Chỉ bao gồm tích hợp dấu vân tay cho BiometricPrompt .
  • Không dùng lớp Vân tay quản lý. Nếu các ứng dụng hệ thống và gói đi kèm của bạn sử dụng lớp này, hãy cập nhật chúng để sử dụng BiometricPromptBiometricManager thay thế.
  • Đã cập nhật các bài kiểm tra trình xác minh CTS của FingerprintManager để kiểm tra BiometricPrompt bằng cách sử dụng BiometricPromptBoundKeysTest .

Thực hiện

Để đảm bảo rằng người dùng và nhà phát triển có trải nghiệm sinh trắc học liền mạch, hãy tích hợp ngăn xếp sinh trắc học của bạn với các API BiometricPrompt , BiometricManagerACTION_BIOMETRIC_ENROLL . Các thiết bị có cảm biến sinh trắc học phải tuân thủ các yêu cầu về cường độ này. Ngoài ra, tất cả quá trình triển khai đều phải vượt qua mô-đun CTSCtsBiometricsTestCases.

Để tích hợp ngăn xếp sinh trắc học của bạn với API ACTION_BIOMETRIC_ENROLL:

  1. Sửa đổi BiometricEnrollActivity để trình bày quy trình đăng ký của bạn. Lưu ý rằng sinh trắc học của bạn chỉ có thể được hiển thị nếu nó đáp ứng được độ mạnh được yêu cầu. Nếu thiết bị của bạn hỗ trợ nhiều hơn một, hành động này sẽ hiển thị danh sách mà người dùng có thể chọn.
Kiến trúc BiometricPrompt
Hình 1. Kiến trúc BiometricPrompt

Hướng dẫn thực hiện HAL

Thực hiện theo các nguyên tắc HAL sinh trắc học sau để đảm bảo rằng dữ liệu sinh trắc học không bị rò rỉ và bị xóa khi người dùng bị xóa khỏi thiết bị:

  • Đảm bảo rằng dữ liệu sinh trắc học thô hoặc dữ liệu phái sinh (chẳng hạn như mẫu) không bao giờ có thể truy cập được từ bên ngoài môi trường cách ly an toàn (chẳng hạn như TEE hoặc Phần tử bảo mật). Tất cả dữ liệu được lưu trữ phải được mã hóa bằng khóa dành riêng cho thiết bị chỉ có TEE (Môi trường thực thi tin cậy) mới biết. Nếu phần cứng hỗ trợ nó, hãy hạn chế quyền truy cập phần cứng vào môi trường biệt lập an toàn và bảo vệ nó bằng chính sách SELinux. Làm cho kênh liên lạc (ví dụ: SPI, I2C) chỉ có thể truy cập được trong môi trường cách ly an toàn với chính sách SELinux rõ ràng trên tất cả các tệp thiết bị.
  • Việc thu thập, đăng ký và nhận dạng sinh trắc học phải diễn ra bên trong môi trường biệt lập an toàn để ngăn chặn vi phạm dữ liệu và các cuộc tấn công khác. Yêu cầu này chỉ áp dụng cho sinh trắc học Loại 3 (trước đây là Mạnh) và Loại 2 (trước đây là Yếu) .
  • Để bảo vệ khỏi các cuộc tấn công lặp lại, hãy ký các mẫu sinh trắc học bằng khóa riêng, dành riêng cho thiết bị. Đối với Tiêu chuẩn mã hóa nâng cao (AES), tối thiểu hãy ký một mẫu có đường dẫn tuyệt đối của hệ thống tệp, nhóm và ID sinh trắc học sao cho các tệp mẫu không thể hoạt động được trên một thiết bị khác hoặc cho bất kỳ ai khác ngoài người dùng đã đăng ký chúng trên cùng một thiết bị . Ví dụ: ngăn sao chép dữ liệu sinh trắc học từ một người dùng khác trên cùng một thiết bị hoặc từ một thiết bị khác.
  • Nếu bạn cần lưu trữ dữ liệu bên ngoài TEE, hãy sử dụng đường dẫn hệ thống tệp được cung cấp bởi setActiveUser() HIDL method hoặc cung cấp một cách khác để xóa tất cả dữ liệu mẫu của người dùng khi người dùng bị xóa. Lý do là để bảo vệ việc rò rỉ dữ liệu người dùng. Các thiết bị không sử dụng đường dẫn này phải dọn sạch sau khi xóa người dùng. CDD yêu cầu dữ liệu sinh trắc học và các tệp phái sinh phải được lưu trữ dưới dạng mã hóa - đặc biệt nếu không có trong TEE. Nếu điều này không khả thi do yêu cầu lưu trữ của môi trường cách ly an toàn, hãy thêm móc để đảm bảo xóa dữ liệu khi người dùng hoặc thiết bị bị xóa bị xóa sạch. Xem LockSettingsService.removeBiometricsForUser()

Tùy chỉnh

Nếu thiết bị của bạn hỗ trợ nhiều sinh trắc học, người dùng có thể chỉ định giá trị mặc định trong cài đặt. Việc triển khai BiometricPrompt của bạn phải ưu tiên sinh trắc học Loại 3 (trước đây là Mạnh) làm mặc định trừ khi người dùng ghi đè rõ ràng nó, sau đó cần hiển thị thông báo cảnh báo giải thích các rủi ro liên quan đến sinh trắc học (ví dụ: Ảnh của bạn có thể mở khóa thiết bị của mình )

Chuỗi xác thực dành riêng cho thiết bị

Bắt đầu từ Android 12, các chuỗi xác thực theo ngữ cảnh được cung cấp cho nhà phát triển thông qua API BiometricManager.Strings . Bạn có thể tùy chỉnh các giá trị tài nguyên được API này trả về để triển khai các chuỗi dành riêng cho thiết bị. Nếu bạn làm như vậy, hãy đảm bảo rằng mọi chuỗi mới đều được dịch cho tất cả các ngôn ngữ mà thiết bị hỗ trợ. Ngoài ra, hãy đảm bảo các thuộc tính sau được giữ nguyên:


Phương pháp

Mục đích của chuỗi

(Các) loại xác thực cần bao gồm

Nếu (các) sinh trắc học và khóa màn hình đều có thể thực hiện được

getButtonLabel()

Nhãn cho nút kích hoạt BiometricPrompt

Chỉ những loại đã đăng ký (nếu có thể) đáp ứng yêu cầu của người xác thực

Sử dụng chuỗi chỉ sinh trắc học (chẳng hạn như "Sử dụng dấu vân tay")

getPromptMessage()

Thông báo hiển thị trên BiometricPrompt trong khi xác thực

Chỉ những loại đã đăng ký (nếu có thể) đáp ứng yêu cầu của người xác thực

Sử dụng chuỗi khóa màn hình và sinh trắc học kết hợp (ví dụ: "Sử dụng dấu vân tay hoặc mã PIN của bạn để tiếp tục")

getSettingName()

Tên của cài đặt cho phép BiometricPrompt xác thực

Tất cả các loại được thiết bị hỗ trợ (ngay cả khi chưa đăng ký) đáp ứng yêu cầu xác thực

Sử dụng chuỗi khóa màn hình và sinh trắc học kết hợp (chẳng hạn như "Sử dụng dấu vân tay hoặc khóa màn hình")

Ví dụ: hãy xem xét một thiết bị có cảm biến khuôn mặt Loại 2 với khuôn mặt đã đăng ký , mã PIN đã đăng ký và cảm biến vân tay Loại 3 không có dấu vân tay đã đăng ký . Bảng sau đây cung cấp các chuỗi mẫu cho từng tổ hợp trình xác thực được phép và phương thức BiometricManager.Strings được gọi:


Trình xác thực được phép

getButtonLabel()

getPromptMessage()

getSettingName()

Sinh trắc học lớp 3 ( BIOMETRIC_strong )

"Sử dụng dấu vân tay"
(Chỉ có dấu vân tay đáp ứng yêu cầu xác thực)

"Sử dụng dấu vân tay của bạn để tiếp tục"
(Chỉ có dấu vân tay đáp ứng yêu cầu xác thực)

"Sử dụng dấu vân tay"
(Chỉ có dấu vân tay đáp ứng yêu cầu xác thực)

Sinh trắc học loại 2 ( BIOMETRIC_WEAK )

"Dùng mặt"
(Khuôn mặt và vân tay đáp ứng yêu cầu; chỉ đăng ký khuôn mặt)

"Dùng khuôn mặt của bạn để tiếp tục"
(Khuôn mặt và vân tay đáp ứng yêu cầu; chỉ đăng ký khuôn mặt)

"Dùng khuôn mặt hoặc vân tay"
(Khuôn mặt và vân tay đáp ứng yêu cầu; thiết bị hỗ trợ cả hai)

Khóa màn hình ( DEVICE_CREDENTIAL )

"Sử dụng mã PIN"
(Mọi khóa màn hình đều đáp ứng yêu cầu; đã đăng ký mã PIN)

"Nhập mã PIN của bạn để tiếp tục"
(Mọi khóa màn hình đều đáp ứng yêu cầu; đã đăng ký mã PIN)

"Sử dụng khóa màn hình"
(Bất kỳ khóa màn hình nào đều đáp ứng yêu cầu)

Khóa màn hình HOẶC sinh trắc học lớp 3

"Sử dụng mã PIN"
(Vân tay và bất kỳ khóa màn hình nào đều đáp ứng yêu cầu; chỉ đăng ký mã PIN)

"Nhập mã PIN của bạn để tiếp tục"
(Vân tay và bất kỳ khóa màn hình nào đều đáp ứng yêu cầu; chỉ đăng ký mã PIN)

"Dùng vân tay hoặc khóa màn hình"
(Vân tay và bất kỳ khóa màn hình nào đều đáp ứng yêu cầu)

Khóa màn hình HOẶC sinh trắc học loại 2

"Dùng mặt"
(Khuôn mặt, vân tay và bất kỳ khóa màn hình nào đều đáp ứng yêu cầu; khuôn mặt được đăng ký và thay thế mã PIN)

"Sử dụng khuôn mặt hoặc mã PIN của bạn để tiếp tục"
(Khuôn mặt, vân tay và bất kỳ khóa màn hình nào đều đáp ứng yêu cầu; khuôn mặt và mã PIN đã được đăng ký)

"Sử dụng sinh trắc học hoặc khóa màn hình"
(Khuôn mặt, vân tay và bất kỳ khóa màn hình nào đều đáp ứng yêu cầu)

Thẩm định

Việc triển khai sinh trắc học của bạn phải vượt qua các bài kiểm tra sau:

Ngoài ra, nếu thiết bị của bạn hỗ trợ sinh trắc học có AOSP HIDL ( fingerprint@2.1 , fingerprint@2.2 , face1.0 ), thiết bị đó phải vượt qua bài kiểm tra VTS liên quan ( vân tay , khuôn mặt )