Android melindungi data pengguna, termasuk penyimpanan yang dienkripsi dengan kredensial dan kunci Keystore yang terikat autentikasi dengan faktor pengetahuan layar kunci (LSKF) yang dikonfigurasi pengguna seperti PIN, pola, dan sandi. LSKF biasanya merupakan nilai entropi rendah seperti PIN 4 atau 6 digit, sehingga perlindungan dari serangan brute force diperlukan.
Android menggunakan pembatas frekuensi Trusted Execution Environment (TEE) atau Secure Element (SE) untuk memperlambat, dan jika upaya yang diberikan cukup, memblokir penyerang yang melakukan serangan brute force pada LSKF. CDD 9.11 menentukan persyaratan dan rekomendasi keamanan minimum untuk pembatas frekuensi LSKF. Android 16 QPR2 dan yang lebih tinggi menerapkan kebijakan pembatasan frekuensi yang jauh lebih kuat daripada versi Android yang lebih rendah. Untuk mengetahui detail selengkapnya, lihat Kebijakan pembatasan frekuensi default yang lebih kuat di Android 16 QPR2 dan yang lebih tinggi.
Android 17 dan yang lebih tinggi menggunakan pembatasan frekuensi layar kunci default yang lebih kuat daripada versi yang lebih rendah. Pengguna dapat mengalami waktu tunggu layar kunci yang lama dalam kasus yang jarang terjadi, sehingga Android 17 dan yang lebih tinggi memberikan masukan pengguna yang ditingkatkan berikut di layar kunci.
- Format waktu yang ditingkatkan: Layar kunci menampilkan waktu tunggu yang berlangsung selama satu menit atau lebih menggunakan unit waktu yang lebih besar untuk keterbacaan yang lebih baik, seperti Coba lagi dalam 30 menit , bukan Coba lagi dalam 1800 detik.
- Shortlink pemulihan: Layar kunci menampilkan shortlink
(defaultnya adalah g.co/android/unlock) untuk membantu pengguna menemukan
opsi pemulihan di perangkat lain. Link ini dapat dikonfigurasi melalui resource
config_lockscreenLockoutShortlink. - Masukan upaya duplikat: Di perangkat dengan penerapan Weaver sistem menampilkan pesan unik saat tebakan salah duplikat dimasukkan. Masukan khusus ini tidak tersedia di perangkat khusus Gatekeeper karena tidak memberikan kode respons terpisah untuk tebakan salah dan kegagalan verifikasi lainnya.
- Pengelolaan entri kredensial yang konsisten: Layar kunci menonaktifkan panel entri PIN jika perangkat menggunakan kredensial PIN, mirip dengan entri kredensial sandi dan pola.
Metode LockPatternUtils#getLockoutAttemptDeadline(int) diganti namanya menjadi LockPatternUtils#getLockoutEndTime(int) dan memberikan waktu berakhir penguncian dari cache yang dikelola sistem. Update ini mengatasi masalah saat cache hanya di-cache per instance LockPatternUtils, yang secara keliru tidak menampilkan waktu tunggu aktif jika dipicu menggunakan instance lain. Developer perintah kredensial sistem seperti layar kunci dan aktivitas setelan harus memperbaruinya untuk memverifikasi waktu tunggu yang ada sebelum mengizinkan upaya lebih lanjut.
Membuka kunci data pengguna yang dilindungi dengan LSKF
LockSettingsService
mengelola penyimpanan dan verifikasi LSKF. Pengguna hanya memiliki satu LSKF aktif dalam satu waktu. Menetapkan LSKF baru akan membatalkan LSKF sebelumnya dan memulai kebijakan pembatasan frekuensi dari awal.
Pembatas frekuensi utama di TEE atau SE, salah satu dari Gatekeeper
atau Weaver, menerapkan pembatasan frekuensi untuk
LSKF aktif. LockSettingsService lebih memilih Weaver jika penerapan tersedia.
Data pengguna yang dilindungi hanya dibuka kuncinya jika LSKF yang benar diberikan ke pembatas frekuensi utama. Jika LSKF salah, pembatas frekuensi akan menambah penghitung kegagalan dan menerapkan waktu tunggu setelah jumlah kegagalan tertentu. Selama waktu tunggu, pembatas frekuensi akan menolak semua tebakan dan memberikan waktu tunggu yang tersisa.
Kebijakan pembatasan frekuensi default yang lebih kuat di Android 16 QPR2 dan yang lebih tinggi
CDD 9.11 mewajibkan pembatasan frekuensi LSKF di Android 6 dan yang lebih tinggi. Secara historis, kebijakan pembatasan frekuensi yang diperlukan cukup longgar. Misalnya, penerapan yang memenuhi persyaratan minimum Android 16 memungkinkan hingga 10 tebakan pada menit pertama, 20 tebakan dalam 6 menit, 50 tebakan dalam 25 menit, 110 tebakan dalam 24 jam, dan 1.800 tebakan dalam 5 tahun.
Meskipun kebijakan ini cukup aman untuk LSKF yang dipilih secara acak, dalam praktiknya pengguna tidak memilih LSKF secara acak. Beberapa LSKF jauh lebih sering muncul daripada yang lain. Penyerang dapat mencapai tingkat keberhasilan yang signifikan dengan mencoba LSKF dalam urutan frekuensi yang menurun.
Misalnya, studi This PIN Can Be Easily Guessed menemukan rasio keberhasilan 16,2% untuk menebak PIN dunia nyata setelah 100 tebakan dan 35,5% untuk pola. Penyerang yang mengetahui informasi khusus pengguna seperti tanggal lahir dapat mencapai tingkat keberhasilan yang lebih tinggi.
Oleh karena itu, Android 16 QPR2 dan yang lebih tinggi menyediakan kebijakan pembatasan frekuensi LSKF default yang lebih kuat. Kebijakan ini memungkinkan hingga 6 tebakan pada menit pertama, 7 tebakan dalam 6 menit, 8 tebakan dalam 25 menit, 12 tebakan dalam 24 jam, dan 19 tebakan dalam 5 tahun. Tidak ada tebakan lebih lanjut yang diizinkan setelah 20 tebakan salah. Jadwal waktu tunggu lengkap ditampilkan dalam tabel berikut. Jadwal ini dapat berubah pada versi Android mendatang.
| Jumlah tebakan salah | Waktu tunggu setelah tebakan salah |
|---|---|
| 0 | Tidak berlaku |
| 1-4 | 0 detik |
| 5 | 1 menit |
| 6 | 5 menit |
| 7 | 15 menit |
| 8 | 30 menit |
| 9 | 90 menit |
| 10 | 4 jam |
| 11 | 12 jam |
| 12 | 24 jam |
| 13 | 4 hari |
| 14 | 13 hari |
| 15 | 41 hari |
| 16 | 123 hari |
| 17 | 1 tahun |
| 18 | 3 tahun |
| 19 | 9 tahun |
| 20+ | Tidak ada tebakan lagi yang diizinkan |
Pembatas frekuensi yang diperbarui
Android 16 QPR2 dan yang lebih tinggi menyertakan penerapan Gatekeeper dan Weaver yang diperbarui yang menerapkan kebijakan pembatasan frekuensi dalam tabel.
Pembatas frekuensi software
Android 16 QPR2 dan yang lebih tinggi menyertakan pembatas frekuensi sekunder opsional, SoftwareRateLimiter.
Pembatas frekuensi ini diterapkan di server sistem dan memungkinkan perangkat menawarkan kebijakan pembatasan frekuensi yang lebih kuat saat
TEE atau SE tidak dapat diupdate.
Konfigurasi SoftwareRateLimiter dalam mode penerapan melalui nilai konfigurasi config_softwareLskfRateLimiterEnforcing. Dalam mode penerapan, SoftwareRateLimiter menerapkan kebijakan pembatasan frekuensinya secara bersamaan dengan pembatas frekuensi utama. Untuk jumlah tebakan salah tertentu, waktu tunggu adalah waktu tunggu yang lebih lama dari yang diperlukan oleh pembatas frekuensi utama dan yang diperlukan oleh SoftwareRateLimiter.
Dalam mode non-penerapan, SoftwareRateLimiter meneruskan semua permintaan verifikasi ke pembatas frekuensi utama tanpa menerapkan kebijakan pembatasan frekuensi sekunder.
Deteksi tebakan duplikat
Untuk meningkatkan kegunaan dan memungkinkan penggunaan kebijakan pembatasan frekuensi yang lebih kuat, Android 16 QPR2 dan yang lebih tinggi mendukung deteksi tebakan duplikat. Jika diaktifkan, pengguna tidak akan dikenai sanksi karena memasukkan LSKF salah yang sama beberapa kali.
Pengguna yang sah terkadang salah memasukkan LSKF salah yang sama beberapa kali. Hal ini akan menyebabkan waktu tunggu yang tidak perlu jika dihitung sebagai beberapa tebakan. Penyerang yang kompeten tidak mencoba LSKF tertentu lebih dari satu kali. Kebijakan yang tidak menghitung tebakan duplikat meningkatkan kegunaan entri LSKF untuk pengguna yang sah tanpa mempermudah penyerang yang kompeten untuk menebak LSKF, sehingga memungkinkan kebijakan pembatasan frekuensi yang lebih kuat diterapkan. Pengguna yang sah cenderung tidak akan mengalami waktu tunggu, karena pengguna harus memasukkan 5 tebakan salah yang unik, bukan 5 tebakan salah termasuk duplikat.
Di perangkat dengan Android 16 QPR2 dan yang lebih tinggi, penerapan Weaver, dan SoftwareRateLimiter yang dikonfigurasi dalam mode penerapan, tebakan duplikat akan terdeteksi dan ditolak sebelum diteruskan ke Weaver. Penolakan tersebut tidak meningkatkan jumlah tebakan salah. Hingga 5 tebakan salah yang unik dilacak dalam memori. Jika pelacak penuh, tebakan yang paling lama akan dihapus untuk memberi ruang. Semua tebakan yang dilacak akan dihapus 5 menit setelah tebakan salah yang tidak dilacak terakhir dibuat.
Gatekeeper tidak memisahkan tebakan salah dari kegagalan verifikasi lainnya, sehingga SoftwareRateLimiter tidak mendukung deteksi tebakan duplikat saat Gatekeeper adalah pembatas frekuensi utama.
Penerap Weaver dapat memilih untuk mendukung deteksi tebakan duplikat dalam penerapan Weaver.