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 kecepatan Trusted Execution Environment (TEE) atau Secure Element (SE) untuk memperlambat, dan jika diberi cukup percobaan, memblokir penyerang yang melakukan serangan brute force pada LSKF. CDD 9.11 menentukan persyaratan dan rekomendasi keamanan minimum untuk pembatas kecepatan LSKF. Android 16 QPR2 dan yang lebih tinggi menerapkan kebijakan pembatasan kecepatan yang jauh lebih kuat daripada versi Android yang lebih rendah. Untuk mengetahui detail selengkapnya, lihat Kebijakan pembatasan kecepatan default yang lebih kuat di Android 16 QPR2 dan yang lebih tinggi.
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 kecepatan dari awal.
Pembatas kecepatan utama di TEE atau SE, salah satu dari Gatekeeper
atau Weaver, menerapkan pembatasan kecepatan untuk
LSKF aktif. LockSettingsService lebih memilih Weaver jika implementasi tersedia.
Data pengguna yang dilindungi hanya dibuka kuncinya jika LSKF yang benar diberikan ke pembatas kecepatan utama. Jika LSKF salah, pembatas kecepatan akan menambah penghitung kegagalan dan menerapkan waktu tunggu setelah jumlah kegagalan tertentu. Selama waktu tunggu, pembatas kecepatan akan menolak semua tebakan dan memberikan waktu tunggu yang tersisa.
Kebijakan pembatasan kecepatan default yang lebih kuat di Android 16 QPR2 dan yang lebih tinggi
CDD 9.11 mewajibkan pembatasan kecepatan LSKF di Android 6 dan yang lebih tinggi. Secara historis, kebijakan pembatasan kecepatan yang diperlukan cukup longgar. Misalnya, implementasi yang memenuhi persyaratan minimum Android 16 memungkinkan hingga 10 tebakan dalam satu menit pertama, 20 dalam 6 menit, 50 dalam 25 menit, 110 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 tingkat 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 kecepatan LSKF default yang lebih kuat. Kebijakan ini memungkinkan hingga 6 tebakan dalam satu menit pertama, 7 dalam 6 menit, 8 dalam 25 menit, 12 dalam 24 jam, dan 19 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 | 36 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 kecepatan yang diperbarui
Android 16 QPR2 dan yang lebih tinggi menyertakan implementasi Gatekeeper dan Weaver yang diperbarui yang menerapkan kebijakan pembatasan kecepatan dalam tabel.
Pembatas kecepatan software
Android 16 QPR2 dan yang lebih tinggi menyertakan pembatas kecepatan sekunder opsional, SoftwareRateLimiter.
Pembatas kecepatan ini diimplementasikan di server sistem dan memungkinkan perangkat menawarkan kebijakan pembatasan kecepatan 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 kecepatannya secara bersamaan dengan pembatas kecepatan utama. Untuk jumlah tebakan salah tertentu, waktu tunggu adalah waktu tunggu yang lebih lama dari yang diperlukan oleh pembatas kecepatan utama dan yang diperlukan oleh SoftwareRateLimiter.
Dalam mode non-penerapan, SoftwareRateLimiter meneruskan semua permintaan verifikasi ke pembatas kecepatan utama tanpa menerapkan kebijakan pembatasan kecepatan sekunder.
Deteksi tebakan duplikat
Untuk meningkatkan kegunaan dan memungkinkan penggunaan kebijakan pembatasan kecepatan yang lebih kuat, Android 16 QPR2 dan yang lebih tinggi mendukung deteksi tebakan duplikat. Jika diaktifkan, pengguna tidak akan dikenai sanksi karena memasukkan LSKF yang salah yang sama beberapa kali.
Pengguna yang sah terkadang salah memasukkan LSKF yang 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 kecepatan yang lebih kuat diterapkan. Pengguna yang sah cenderung tidak 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, implementasi 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 kecepatan utama.
Pengimplementasi Weaver dapat memilih untuk mendukung deteksi tebakan duplikat dalam implementasi Weaver.