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. Theo 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 nằm ở 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. 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 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 Có (1)
  1. Chức năng này đã được thêm vào Android 11, hãy xem phần này để biết thêm chi tiết

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 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 () mà các 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 đi kèm và ứng dụng hệ thống 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.
Để tích hợp ngăn xếp sinh trắc học của bạn với BiometricManager APIs BiometricPrompt

  1. Đảm bảo rằng <Modality>Service của bạn được đăng ký chính xác với BiometricService thông qua phương thức IBiometricService # registerAuthenticator và triển khai giao diện IBiometricAuthenticator . Các phương thức phổ biến (vân tay, khuôn mặt) mở rộng từ một lớp cha chung. Nếu bạn cần tích hợp một phương thức không được hỗ trợ, hãy làm theo ví dụ về dấu vân tay / khuôn mặthướng dẫn của CDD về sinh trắc học.
  2. Đảm bảo rằng phương thức mới của bạn được hỗ trợ đúng cách trong SystemUI . Có giao diện người dùng BiometricPrompt mặc định cho dấu vân tay và khuôn mặt. Điều này sẽ bao gồm bất kỳ thay đổi bố cục hoặc chủ đề nào cần thiết cho thiết bị của bạn. Tức là các thay đổi bố cục tương ứng cho cảm biến vân tay trong màn hình.

Để 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 về sinh trắc học này để đả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 giới hạn 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ị.
  • 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 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 lưu trữ mã hóa - đặc biệt nếu không có 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 Lớp 3 (trước đây là Strong) làm mặc định trừ khi người dùng ghi đè rõ ràng nó, 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 )

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 )