Android bảo vệ dữ liệu người dùng, bao gồm cả bộ nhớ được mã hoá dành cho 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 phải bảo vệ khỏi các cuộc tấn công brute force.
Android sử dụng bộ giới hạn tốc độ Môi trường thực thi đáng tin cậy (TEE) hoặc Secure Element (SE) để làm chậm và chặn kẻ tấn công thực hiện các cuộc tấn công giả mạo trên LSKF nếu có đủ số lần thử. CDD 9.11 nêu rõ các yêu cầu và đề xuất tối thiểu về bảo mật đối với bộ hạn chế 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 mẽ hơn đáng kể so với các phiên bản Android thấp hơn. Để biết thêm thông tin chi tiết, hãy xem bài viết Chính sách mặc định về việc giới hạn tốc độ chặt chẽ hơn trong Android 16 QPR2 trở lên.
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. Mỗi lần, người dùng chỉ có một LSKF đang hoạt động. Việc chỉ định một LSKF mới sẽ vô hiệu hoá LSKF trước đó và bắt đầu chính sách giới hạn tốc độ từ đầu.
Một bộ giới hạn tốc độ chính trong TEE hoặc SE, một trong 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ó một phương thức triển khai.
Dữ liệu người dùng được bảo vệ chỉ được mở khoá khi LSKF chính xác được cung cấp 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 đếm lỗi nhất định. Trong thời gian chờ, nó sẽ từ chối tất cả các lượt đoán và cung cấp thời gian chờ còn lại.
Chính sách mặc định về giới hạn tốc độ chặt chẽ 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 quy trình 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à 1.800 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 đều, 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 đều. Một số LSKF xuất hiện thường xuyên hơn nhiều so với những 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ệ đoán đúng mã PIN ngoài đời thực là 16,2% sau 100 lần đoán và 35,5% đối với các mẫu hình. 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, thì 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 mặc định mạnh mẽ hơn về việc giới hạn tốc độ LSKF. 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 khi đoán sai 20 lần. Bạn có thể xem toàn bộ lịch trình hết thời gian chờ trong bảng sau. Nội dung 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 khi đoán sai |
|---|---|
| 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 |
Đã cập nhật bộ giới hạn tốc độ
Android 16 QPR2 trở lên 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 có một bộ hạn chế tốc độ thứ cấp không bắt buộc, SoftwareRateLimiter.. Bộ hạn chế 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 hạn chế tốc độ mạnh mẽ hơn khi không thể cập nhật TEE hoặc SE.
Đị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 sẽ á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ờ là thời gian dài hơn giữa thời gian cần thiết theo bộ hạn chế tốc độ chính và thời gian cần thiết theo SoftwareRateLimiter.
Ở chế độ không thực thi, SoftwareRateLimiter sẽ 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 độ phụ.
Phát hiện lượt đ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ượt đoán trùng lặp. Khi được bật, 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 lệ nhập sai cùng một LSKF 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ượt đoán. Kẻ tấn công có khả năng sẽ 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ượt đoán trùng lặp sẽ cải thiện khả năng sử dụng mục 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 mẽ hơn. Người dùng hợp pháp ít có khả năng gặp phải tình trạng hết thời gian chờ, vì người dùng phải nhập 5 lần đoán sai riêng biệt thay vì 5 lần đoán sai 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, một phương thức triển khai Weaver và SoftwareRateLimiter được định cấu hình ở chế độ thực thi, các lượt đoán trùng lặp sẽ được phát hiện và từ chối trước khi được chuyển đến Weaver. Những lượt từ chối như vậy không làm tăng số lượt đoán sai. Hệ thống sẽ theo dõi tối đa 5 lần đoán sai riêng biệt trong bộ nhớ. Nếu thiết bị định vị đầy bộ nhớ, thiết bị định vị gần đây nhất sẽ bị loại bỏ để giải phóng bộ nhớ. Tất cả các lượt đoán được theo dõi sẽ bị loại bỏ sau 5 phút kể từ khi lượt đoán không chính xác không được theo dõi gần đây nhất được thực hiện.
Gatekeeper không tách biệt các lượt đoán sai vớ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ượt đ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 thông tin trùng lặp trong quá trình triển khai Weaver.