Evolusi Arsitektur Kriptografi Android Keystore
Android Keystore System menyediakan antarmuka terstandarisasi bagi pengembang aplikasi untuk membuat, menyimpan, dan menggunakan kunci kriptografis tanpa mengekspos material kunci biner mentah ke dalam ruang memori aplikasi. Pada sistem operasi seluler modern, keberadaan Keystore tidak lagi sekadar menjadi fitur perangkat lunak, melainkan fondasi integritas transaksi perbankan, otentikasi biometrik FIDO2, penyimpanan kredensial VPN, dan perlindungan enkripsi data partisi pengguna (FBE - File-Based Encryption).
Dalam implementasi legacy di era Android awal, materi kunci enkripsi disimpan terenkripsi di dalam filesystem perangkat lunak (Software Keystore). Pendekatan ini rentan terhadap eksploitasi jika penyerang berhasil memperoleh akses root penuh ke memori kernel Linux. Menanggapi ancaman ini, arsitektur Android modern mengamanatkan delegasi operasi kriptografi ke lingkungan terisolasi perangkat keras (Hardware-Backed Security Module).
Komponen Arsitektur: Android Keystore Daemon, HAL, dan TEE
Sistem Keystore Android dirancang berlapis untuk menjamin isolasi komputasi yang sempurna. Arsitektur ini mencakup interaksi antara user-space framework, daemon sistem, lapisan abstraksi perangkat keras, dan mikrokontroler aman independen.
Transisi dari Keymaster HIDL ke Keymint AIDL
Dimulai pada Android 12 (API level 31), arsitektur Keymaster berbasis HIDL secara resmi digantikan oleh Keymint yang memanfaatkan antarmuka AIDL stabil. Bersamaan dengan itu, implementasi daemon sistem ditulis ulang menggunakan bahasa pemrograman Rust (keystore2) untuk mengeliminasi potensi kerentanan keamanan memori (memory safety bugs) seperti buffer overflow dan use-after-free yang rentan terjadi pada kode C++.
| Karakteristik | Trusted Execution Environment (TEE) | StrongBox Keymaster (HSM Terpisah) |
|---|---|---|
| Lokasi Fisik | Dijalankan pada core CPU utama via ARM TrustZone. | Chip mikrokontroler aman fisik terpisah (Secure Element). |
| Sistem Operasi Terisolasi | Trusty OS, Qualcomm QSEE, Samsung TEE. | Java Card OS terverifikasi EAL5+ Common Criteria. |
| Ketahanan Side-Channel | Tinggi, tetapi rentan terhadap serangan bus sharing CPU. | Sangat Tinggi, tahan terhadap manipulasi clock dan power glitching. |
| Throughput Kriptografi | Sangat Cepat (menggunakan instruksi ARMv8 Crypto). | Terbatas (diutamakan untuk operasi kunci berfrekuensi rendah). |
| Perlindungan Tamper Fisik | Terbatas pada silikon SoC primer. | Lapisan pelindung pasif dan sensor deteksi intrusion fisik. |
Catatan Riset: Keabsahan Rantai Sertifikat Hardware Key Attestation
Fitur Key Attestation memungkinkan verifikator eksternal memastikan bahwa pasangan kunci RSA/EC di-generate langsung di dalam silikon TEE/StrongBox terdaftar, dan status bootloader perangkat saat kunci dibuat adalah Verified Boot: Locked.
Mekanisme Key Attestation dan Sertifikat X.509
Saat aplikasi membuat kunci dengan opsi setAttestationChallenge(), modul TEE menghasilkan rantai sertifikat X.509. Sertifikat terbawah (leaf certificate) memuat ekstensi ASN.1 dengan OID 1.3.6.1.4.1.11129.2.1.17 yang mendokumentasikan:
- Status versi patch keamanan sistem operasi dan kernel Android.
- Nilai hash dari kunci publik OEM yang menandatangani partisi vbmeta perangkat.
- Status kunci perangkat (Locked atau Unlocked).
- Level isolasi penyimpanan kunci (Software, TEE, atau StrongBox).
Integrasi Gatekeeper dan Otentikasi Biometrik Terikat Kunci (Auth-Bound Keys)
Android Keystore mendukung fitur keamanan mutakhir di mana sebuah kunci kriptografis hanya dapat digunakan jika pengguna baru saja berhasil melakukan verifikasi biometrik (sidik jari atau pengenalan wajah) atau memasukkan PIN/pola layar kunci. Mekanisme ini dikoordinasikan oleh daemon Gatekeeper yang beroperasi di dalam TrustZone TEE.
Ketika pengguna berhasil memverifikasi PIN atau sidik jari, Gatekeeper menghasilkan token otentikasi biner terstruktur (HardwareAuthToken). Token ini ditandatangani menggunakan kunci simetris rahasia berbasis HMAC-SHA256 yang hanya diketahui oleh modul TEE internal. Token otentikasi memuat cap waktu (timestamp) dan identifier unik pengguna (SID). Ketika aplikasi meminta Keystore untuk menandatangani data, daemon keystore2 meneruskan Auth Token tersebut ke Keymint HAL. Jika selisih waktu telah kedaluwarsa atau tanda tangan HMAC tidak cocok, Keymint menolak operasi kriptografi dengan kode galat KM_ERROR_KEY_USER_NOT_AUTHENTICATED.
Mekanisme Key Invalidation dan Keamanan Reset Kredensial LSKF
Untuk mencegah akses tidak sah apabila penyerang mendaftarkan sidik jari baru pada perangkat yang dicuri, Android mengimplementasikan kebijakan Key Invalidation on New Biometric Enrollment. Setiap kali biometrik baru ditambahkan ke sistem, Android Framework secara otomatis membatalkan seluruh kunci Keystore yang dikonfigurasi dengan flag setInvalidatedByBiometricEnrollment(true). Selain itu, kunci master penyimpanan pengguna dienkripsi menggunakan Synthetic Password yang dipecah dan diamankan oleh chip Weaver terpisah. Chip Weaver memberlakukan perlindungan anti-brute-force berbasis perangkat keras yang membatasi frekuensi percobaan tebakan PIN hingga interval penundaan berlipat ganda secara eksponensial.
# Menampilkan status daemon keystore2 dan log runtime binder
adb shell dumpsys android.security.keystore
# Memeriksa ada tidaknya fitur hardware StrongBox pada perangkat
adb shell pm list features | grep -i strongbox
Model Ancaman dan Mitigasi Ekstraksi Kunci Privat
Keunggulan mutlak dari Hardware-Backed Keystore terletak pada kenyataan bahwa kunci privat (private key) tidak pernah keluar dari memori secure enclave. Ketika aplikasi hendak menandatangani pesan atau mendekripsi data, data tersebut dikirimkan melalui binder IPC ke TEE. TEE melakukan komputasi matematis di lingkungan terisolasi dan hanya mengembalikan hasil tanda tangan digital kembali ke ruang pengguna.
Bahkan jika penyerang berhasil mendapatkan privilege kernel root penuh di lingkungan Linux normal (Normal World / Rich Execution Environment), penyerang tetap tidak memiliki kemampuan instruksional untuk membaca memori fisik TrustZone yang diproteksi oleh hardware Memory Management Unit (MMU) TrustZone Protection Controller (TZPC). Isolasi perangkat keras ini memastikan bahwa kredensial tingkat tinggi tetap terlindungi meskipun integritas sistem operasi pengguna terkompromi.
Kesimpulan Audit Keamanan Keystore
Pemisahan tegas antara ruang eksekusi umum (Rich OS) dan modul keamanan perangkat keras (TEE/StrongBox) menjadikan Android Keystore benteng paling kokoh dalam ekosistem perangkat seluler. Memahami arsitektur ini krusial bagi peneliti keamanan guna membedakan batasan kompromi sistem operasi umum dari kompromi material kriptografi hardware.