Google cam kết thúc đẩy công bằng chủng tộc cho Cộng đồng người da đen. Xem cách thực hiện.

Sinh trắc học

Sinh trắc học cung cấp một cách xác nhận danh tính của bạn bằng thiết bị thuận tiện hơn nhưng có khả năng kém an toàn hơn. Trong mô hình xác thực phân cấp, xác thực chính (nghĩa là các phương thức dựa trên yếu tố tri thức như mã PIN, hình mở khóa và mật khẩu) cung cấp mức độ bảo mật cao nhất. Sinh trắc học ở cấp độ xác thực thứ cấp, cung cấp sự cân bằng giữa sự tiện lợi và bảo mật. Android CDD xác định ba lớp sức mạnh sinh trắc học: Lớp 3 (trước đây là Mạnh), Lớp 2 (trước đây là Yếu) và Lớp 1 (trước đây là Thuận tiện). 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. 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 các 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 BiometricPrompt 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_CONVENIENCE
(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 bằng 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, tích hợp sinh trắc học sẽ phụ thuộc vào bảo mật sinh trắc học, không phải phương thức. Để biết thêm chi tiết về thông số kỹ thuật bảo mật sinh trắc học, hãy xem Đo lường 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 tính 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 ý đị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ý 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 () , phương thức 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 mỗi lần sử dụng trong lớp BiometricPrompt.

Android 10

  • Giới thiệu lớp BiometricManager mà các 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 bằng vân tay và khuôn mặt cho BiometricPrompt

Android 9

  • Bao gồm tích hợp dấu vân tay chỉ cho BiometricPrompt .
  • Không chấp nhận lớp FingerprintManager. Nếu các ứng dụng hệ thống và ứng dụng đ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 FingerprintManager CTS để kiểm tra BiometricPrompt bằ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 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ề độ bền này. Ngoài ra, tất cả các hoạt động triển khai phải vượt qua mô-đun CtsBiometricsTestCases CTS.

Để 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 xuất trình 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ị một 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 triển khai 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ỉ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 các dẫn xuất (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ô lập 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ị mà chỉ 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 của phần cứng vào môi trường cách ly an toàn và bảo vệ nó bằng chính sách SELinux. Làm cho kênh giao tiếp (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ị.
  • 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 cô 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 Lớp 3 (trước đây là Mạnh) và Lớp 2 (trước đây là Yếu) .
  • Để bảo vệ khỏi các cuộc tấn công phát lại, hãy ký vào các mẫu sinh trắc học bằng khóa riêng tư, 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 phải ký một mẫu bằng đường dẫn hệ thống tệp, nhóm và ID sinh trắc học tuyệt đối để các tệp mẫu không thể hoạt động 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 phương setActiveUser() HIDL method hoặc cung cấp một cách khác để xóa tất cả dữ liệu mẫu người dùng khi người dùng bị xóa. Lý do là để bảo vệ dữ liệu người dùng bị rò rỉ. Các thiết bị không sử dụng đường dẫn này phải dọn dẹp sau khi người dùng bị xóa. CDD yêu cầu dữ liệu sinh trắc học và các tệp phái sinh phải được mã hóa lưu trữ - đặc biệt nếu không phải trong TEE Nếu điều này là 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 các móc để đảm bảo xóa dữ liệu khi người dùng bị xóa hoặc thiết bị được xóa sạch. Xem LockSettingsService.removeBiometricsForUser ()

Tùy biến

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

Chuỗi xác thực thiết bị cụ thể

Bắt đầu từ Android 12, các chuỗi xác thực theo ngữ cảnh được cung cấp cho các 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 do 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 vậy, hãy đảm bảo rằng mọi chuỗi mới đượ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 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ể

getButtonLabel ()

Gắn nhãn cho một nút kích hoạt BiometricPrompt

Chỉ các loại đã đăng ký (nếu có thể) đáp ứng các yêu cầu của trình 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ỉ các loại đã đăng ký (nếu có thể) đáp ứng các yêu cầu của trình 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 một 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 các yêu cầu của trình 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 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 Lớp 2 với khuôn mặt đã đăng ký , mã PIN đã đăng ký và cảm biến vân tay Lớp 3 không có dấu vân tay đã đăng ký . Bảng sau 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 vân tay"
(Chỉ dấu vân tay đáp ứng các yêu cầu của trình xác thực)

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

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

Sinh trắc học lớp 2 ( BIOMETRIC_WEAK )

"Sử dụng khuôn mặt"
(Khuôn mặt và dấu vân tay đáp ứng các yêu cầu; chỉ có khuôn mặt được đăng ký)

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

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

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

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

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

"Sử dụng khóa màn hình"
(Bất kỳ khóa màn hình nào đá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 đáp ứng các yêu cầu; chỉ có mã PIN được đăng ký)

"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 đáp ứng các yêu cầu; chỉ có mã PIN được đăng ký)

"Sử 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 đáp ứng yêu cầu)

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

"Sử dụng khuôn mặt"
(Khuôn mặt, vân tay và bất kỳ khóa màn hình nào đáp ứng các 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 đáp ứng các 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 đáp ứng các 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:

  • CTS BiometricManager
  • CTS BiometricPrompt (sự tỉnh táo, kiểm tra chuyên sâu dựa vào trình xác minh)
  • Phần Kiểm tra Sinh trắc học CtsVerifier: Phải vượt qua từng chế độ riêng lẻ mà thiết bị hỗ trợ

Ngoài ra, nếu thiết bị của bạn hỗ trợ sinh trắc học có AOSP HIDL ( vân tay@2.1, vân tay@2.2, khuôn mặt1.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 )