Android bảo vệ dữ liệu người dùng, bao gồm cả bộ nhớ được mã hoá bằng thông tin đăng nhập và các khoá Keystore được liên kết với quy trình xác thực bằng các yếu tố kiến thức về màn hình khoá (LSKF) do người dùng định cấu hình, chẳng hạn như mã PIN, hình mở khoá và mật khẩu. LSKF thường là các giá trị có entropy thấp, chẳng hạn như mã PIN gồm 4 hoặc 6 chữ số, vì vậy, bạn cần được bảo vệ khỏi các cuộc tấn công dò tìm mật khẩu.
Android sử dụng các bộ giới hạn tốc độ Môi trường thực thi đáng tin cậy (TEE) hoặc Phần tử bảo mật (SE) để làm chậm và nếu có đủ số lần thử, sẽ chặn kẻ tấn công thực hiện các cuộc tấn công dò tìm mật khẩu trên LSKF. CDD 9.11 chỉ định các yêu cầu và đề xuất bảo mật tối thiểu cho bộ giới hạn tốc độ LSKF. Android 16 QPR2 trở lên triển khai các chính sách giới hạn tốc độ mạnh hơn đáng kể so với các phiên bản Android thấp hơn. Để biết thêm chi tiết, hãy xem Chính sách giới hạn tốc độ mặc định mạnh hơn trong Android 16 QPR2 trở lên.
Android 17 trở lên sử dụng tính năng giới hạn tốc độ màn hình khoá mặc định mạnh hơn so với các phiên bản thấp hơn. Trong một số trường hợp hiếm gặp, người dùng có thể gặp phải tình trạng màn hình khoá hết thời gian chờ trong thời gian dài, vì vậy, Android 17 trở lên cung cấp ý kiến phản hồi nâng cao sau đây cho người dùng trên màn hình khoá.
- Cải thiện định dạng thời gian: Màn hình khoá hiển thị thời gian chờ kéo dài một phút trở lên bằng các đơn vị thời gian lớn hơn để dễ đọc hơn, chẳng hạn như Hãy thử lại sau 30 phút thay vì Hãy thử lại sau 1800 giây.
- Đường liên kết rút gọn để khôi phục: Màn hình khoá hiển thị một đường liên kết rút gọn
(mặc định là g.co/android/unlock) để giúp người dùng tìm thấy
các tùy chọn khôi phục trên một thiết bị khác. Bạn có thể định cấu hình đường liên kết này thông qua tài nguyên
config_lockscreenLockoutShortlink. - Ý kiến phản hồi về việc thử lại: Trên các thiết bị có cách triển khai Weaver, hệ thống sẽ hiển thị một thông báo riêng biệt khi bạn nhập một lần đoán không chính xác bị trùng lặp. Ý kiến phản hồi cụ thể này không có trên Gatekeeper-only devices vì các thiết bị này không cung cấp mã phản hồi riêng cho các lần đoán không chính xác và các lỗi xác minh khác.
- Quản lý nhất quán việc nhập thông tin đăng nhập: Màn hình khoá sẽ tắt bàn phím nhập mã PIN nếu thiết bị sử dụng thông tin đăng nhập bằng mã PIN, tương tự như việc nhập thông tin đăng nhập bằng mật khẩu và hình mở khoá.
Phương thức LockPatternUtils#getLockoutAttemptDeadline(int) được đổi tên thành LockPatternUtils#getLockoutEndTime(int) và cung cấp thời gian kết thúc thời gian chờ từ bộ nhớ đệm do hệ thống quản lý. Bản cập nhật này giải quyết vấn đề chỉ lưu vào bộ nhớ đệm cho mỗi thực thể LockPatternUtils, hiển thị sai rằng không có thời gian chờ đang hoạt động nếu một thời gian chờ được kích hoạt bằng một thực thể khác. Nhà phát triển lời nhắc thông tin đăng nhập hệ thống, chẳng hạn như màn hình khoá và các hoạt động cài đặt, phải cập nhật các lời nhắc này để xác minh thời gian chờ hiện có trước khi cho phép thử lại.
Mở khoá dữ liệu người dùng được bảo vệ bằng LSKF
LockSettingsService
quản lý việc lưu trữ và xác minh LSKF. Người dùng chỉ có một LSKF đang hoạt động tại một thời điểm. Việc chỉ định một LSKF mới sẽ làm mất hiệu lực LSKF trước đó và bắt đầu chính sách giới hạn tốc độ từ đầu.
Bộ giới hạn tốc độ chính trong TEE hoặc SE (một trong các bộ giới hạn tốc độ Gatekeeper
hoặc Weaver) sẽ thực thi việc giới hạn tốc độ cho
LSKF đang hoạt động. LockSettingsService ưu tiên Weaver khi có cách triển khai.
Dữ liệu người dùng được bảo vệ chỉ được mở khoá khi bạn cung cấp LSKF chính xác cho bộ giới hạn tốc độ chính. Nếu LSKF không chính xác, bộ giới hạn tốc độ sẽ tăng bộ đếm lỗi và thực thi thời gian chờ sau một số lần lỗi nhất định. Trong thời gian chờ, bộ giới hạn tốc độ sẽ từ chối tất cả các lần đoán và cung cấp thời gian chờ còn lại.
Chính sách giới hạn tốc độ mặc định mạnh hơn trong Android 16 QPR2 trở lên
CDD 9.11 yêu cầu giới hạn tốc độ LSKF trong Android 6 trở lên. Trước đây, chính sách giới hạn tốc độ bắt buộc khá linh hoạt. Ví dụ: một cách triển khai đáp ứng các yêu cầu tối thiểu của Android 16 cho phép tối đa 10 lần đoán trong phút đầu tiên, 20 lần trong 6 phút, 50 lần trong 25 phút, 110 lần trong 24 giờ và 1800 lần đoán trong 5 năm.
Mặc dù chính sách này khá an toàn đối với LSKF được chọn ngẫu nhiên một cách đồng nhất, nhưng trên thực tế, người dùng không chọn LSKF ngẫu nhiên một cách đồng nhất. Một số LSKF xuất hiện thường xuyên hơn nhiều so với các LSKF khác. Kẻ tấn công có thể đạt được tỷ lệ thành công đáng kể bằng cách thử LSKF theo thứ tự giảm dần tần suất.
Ví dụ: nghiên cứu Mã PIN này có thể dễ dàng đoán được cho thấy tỷ lệ thành công là 16,2% đối với việc đoán mã PIN trong thế giới thực sau 100 lần đoán và 35,5% đối với hình mở khoá. Kẻ tấn công biết thông tin cụ thể của người dùng, chẳng hạn như ngày sinh, có thể đạt được tỷ lệ thành công cao hơn nữa.
Do đó, Android 16 QPR2 trở lên cung cấp chính sách giới hạn tốc độ LSKF mặc định mạnh hơn. Chính sách này cho phép tối đa 6 lần đoán trong phút đầu tiên, 7 lần trong 6 phút, 8 lần trong 25 phút, 12 lần trong 24 giờ và 19 lần trong 5 năm. Bạn không được đoán thêm sau 20 lần đoán không chính xác. Lịch trình thời gian chờ đầy đủ được trình bày trong bảng sau. Lịch trình này có thể thay đổi trong các phiên bản Android sau này.
| Số lần đoán không chính xác | Thời gian chờ sau lần đoán không chính xác |
|---|---|
| 0 | Không áp dụng |
| 1-4 | 0 giây |
| 5 | 1 phút |
| 6 | 5 phút |
| 7 | 15 phút |
| 8 | 30 phút |
| 9 | 90 phút |
| 10 | 4 giờ |
| 11 | 12 giờ |
| 12 | 36 giờ |
| 13 | 4 ngày |
| 14 | 13 ngày |
| 15 | 41 ngày |
| 16 | 123 ngày |
| 17 | 1 năm |
| 18 | 3 năm |
| 19 | 9 năm |
| 20+ | Không được đoán thêm |
Bộ giới hạn tốc độ đã cập nhật
Android 16 QPR2 trở lên bao gồm các cách triển khai Gatekeeper và Weaver đã cập nhật, thực thi chính sách giới hạn tốc độ trong bảng.
Bộ giới hạn tốc độ phần mềm
Android 16 QPR2 trở lên bao gồm một bộ giới hạn tốc độ thứ cấp không bắt buộc, SoftwareRateLimiter.
Bộ giới hạn này được triển khai trong máy chủ hệ thống và cho phép các thiết bị cung cấp chính sách giới hạn tốc độ mạnh hơn khi
TEE hoặc SE không thể cập nhật.
Định cấu hình SoftwareRateLimiter ở chế độ thực thi thông qua giá trị cấu hình config_softwareLskfRateLimiterEnforcing. Ở chế độ thực thi, SoftwareRateLimiter áp dụng chính sách giới hạn tốc độ đồng thời với bộ giới hạn tốc độ chính. Đối với một số lần đoán không chính xác nhất định, thời gian chờ sẽ dài hơn thời gian chờ mà bộ giới hạn tốc độ chính yêu cầu và thời gian chờ mà SoftwareRateLimiter yêu cầu.
Ở chế độ không thực thi, SoftwareRateLimiter chuyển tất cả các yêu cầu xác minh đến bộ giới hạn tốc độ chính mà không áp dụng chính sách giới hạn tốc độ thứ cấp.
Phát hiện lần đoán trùng lặp
Để cải thiện khả năng sử dụng và cho phép sử dụng chính sách giới hạn tốc độ mạnh hơn, Android 16 QPR2 trở lên hỗ trợ tính năng phát hiện lần đoán trùng lặp. Khi bật tính năng này, người dùng sẽ không bị phạt khi nhập cùng một LSKF không chính xác nhiều lần.
Đôi khi, người dùng hợp pháp nhập sai cùng một LSKF không chính xác nhiều lần. Điều này dẫn đến thời gian chờ không cần thiết nếu được tính là nhiều lần đoán. Kẻ tấn công có khả năng không thử một LSKF nhất định nhiều lần. Một chính sách không tính các lần đoán trùng lặp sẽ cải thiện khả năng sử dụng tính năng nhập LSKF cho người dùng hợp pháp mà không giúp kẻ tấn công có khả năng đoán LSKF dễ dàng hơn, cho phép thực thi các chính sách giới hạn tốc độ mạnh hơn. Người dùng hợp pháp ít có khả năng gặp phải thời gian chờ hơn, vì người dùng phải nhập 5 lần đoán không chính xác riêng biệt thay vì 5 lần đoán không chính xác bao gồm cả các lần đoán trùng lặp.
Trên các thiết bị chạy Android 16 QPR2 trở lên, cách triển khai Weaver và SoftwareRateLimiter được định cấu hình ở chế độ thực thi, các lần đoán trùng lặp sẽ được phát hiện và từ chối trước khi được chuyển đến Weaver. Việc từ chối như vậy không làm tăng số lần đoán không chính xác. Hệ thống theo dõi tối đa 5 lần đoán không chính xác riêng biệt trong bộ nhớ. Nếu trình theo dõi đầy, lần đoán gần đây nhất sẽ bị loại bỏ để tạo chỗ trống. Tất cả các lần đoán được theo dõi sẽ bị loại bỏ 5 phút sau khi lần đoán không chính xác cuối cùng không được theo dõi.
Gatekeeper không tách các lần đoán sai khỏi các lỗi xác minh khác, vì vậy, SoftwareRateLimiter không hỗ trợ tính năng phát hiện lần đoán trùng lặp khi Gatekeeper là bộ giới hạn tốc độ chính.
Người triển khai Weaver có thể chọn hỗ trợ tính năng phát hiện lần đoán trùng lặp trong cách triển khai Weaver.