Manajemen kunci kriptografi dengan Sistem Keystore Android

  • Perlindungan materi kriptografi melalui penyimpanan pada perangkat keras yang aman seperti TEE dan StrongBox.
  • Penerapan pembatasan penggunaan berdasarkan otentikasi pengguna dan waktu validitas.
  • Perbedaan teknis antara API KeyChain untuk kredensial global dan penyedia Android Keystore untuk aplikasi individual.
  • Evolusi arsitektur sistem dari Keymaster hingga implementasi KeyMint pada versi Android terbaru.

Manajemen kunci kriptografi dengan Sistem Keystore Android

Saat ini, perangkat seluler kita praktis menjadi buku harian tempat kita menyimpan segalanya: mulai dari foto-foto pribadi hingga detail kartu kredit kita. Itulah mengapa kita tidak bisa menyerahkan keamanan begitu saja. Dalam hal melindungi data sensitif di Android, Sistem Keystore Android menjadi alat utama untuk mencegah pelaku jahat mencuri kunci kriptografi kita, menjadikannya pilar fundamental keamanan Android.

Pada dasarnya, sistem ini bertindak seperti brankas digital. Alih-alih menyimpan kunci sebagai file teks sederhana di penyimpanan ponsel (yang akan menjadi bencana keamanan), sistem ini menguncinya dalam wadah yang aman . Yang terbaik dari semuanya, setelah kunci berada di dalam, Anda dapat menggunakannya untuk mengenkripsi atau menandatangani sesuatu, tetapi kunci tersebut tidak akan pernah dapat diekstraksi dari perangkat, bahkan jika sistem operasinya telah diretas.

Bagaimana cara kerja keamanan di inti sistem?

Keystore tidak main-main dan melindungi data kunci dengan dua cara yang sangat jelas. Pertama, ia mencegah siapa pun dari luar perangkat untuk mencuri data kunci, karena ia memblokir ekstraksi dari proses aplikasi. Kedua, ia memastikan bahwa bahkan jika seseorang berhasil mendapatkan akses ke sistem, mereka tidak dapat menggunakan kunci tersebut untuk apa pun yang mereka inginkan; aplikasi harus mendefinisikan penggunaan yang diizinkan yang secara ketat ditegakkan oleh sistem.

Untuk membuat sistem ini benar-benar andal, Android mengandalkan perangkat keras. Data kunci tidak melewati proses aplikasi; ketika Anda perlu melakukan suatu operasi, data dikirim ke proses sistem khusus . Lebih lanjut, jika ponselnya modern, kunci tersebut terhubung ke Trusted Execution Environment (TEE) atau Secure Element (SE). Jika Anda memiliki perangkat dengan StrongBox , keamanan ditingkatkan ke level berikutnya, karena modul ini memiliki CPU sendiri, penyimpanan yang aman, dan generator angka acak sungguhan, sehingga tahan bahkan terhadap serangan fisik.

Untuk menentukan apakah sebuah kunci benar-benar dilindungi oleh perangkat keras, pengembang dapat menggunakan `getSecurityLevel()` di Android 10 dan versi yang lebih tinggi. Jika hasilnya adalah `TRUSTED_ENVIRONMENT` atau `STRONGBOX` , kita dapat yakin bahwa kunci tersebut berada di area yang terisolasi dari prosesor utama.

Apa itu Android System Key Verifier-5?
Artikel terkait:
Android System Key Verifier: Apa itu, apa fungsinya, dan bagaimana pengaruhnya terhadap keamanan Android Anda.

Kontrol akses dan otorisasi penggunaan

Salah satu fitur terbaik dari sistem ini adalah Anda dapat menetapkan "aturan" untuk setiap kunci saat membuatnya. Aturan ini tidak dapat diubah; setelah ditetapkan, aturan tersebut tidak dapat diubah . Misalnya, Anda dapat membatasi kunci agar hanya berfungsi dengan algoritma tertentu , seperti AES atau RSA, atau menentukan jangka waktu yang tepat di mana kunci tersebut valid.

Namun hal yang paling ampuh adalah... otentikasi penggunaAnda dapat mengkonfigurasi kunci agar hanya berfungsi jika pengguna baru-baru ini melakukan autentikasi menggunakan PIN, pola, atau biometrik (sidik jari atau wajah)), mengingat bahwa Pembukaan kunci wajah 2D vs 3D Sistem ini menawarkan berbagai tingkat perlindungan. Terdapat dua mode: satu yang mengotorisasi semua kunci untuk jangka waktu tertentu setelah otentikasi, dan mode lain yang lebih ketat di mana setiap operasi kripto harus diotorisasi secara individual melalui BiometricPrompt.

Keychain vs. Penyedia Keystore Android

Terkadang Anda mungkin bertanya-tanya mana yang harus dipilih. API KeyChain adalah pilihan ideal ketika Anda membutuhkan kredensial di seluruh sistem. Di sini, pengguna memilih, melalui antarmuka sistem, kredensial mana yang ingin mereka bagikan dengan aplikasi. Ini sangat berguna untuk kredensial yang dibagikan antara beberapa aplikasi dengan persetujuan eksplisit dari pemilik perangkat seluler.

Kelola kata sandi di ponsel
Artikel terkait:
Panduan Utama untuk Mengelola dan Melindungi Kata Sandi di Android: Keamanan, Aplikasi, dan Tips Penting

Selain itu, Penyedia Keystore Android Ini dirancang sedemikian rupa sehingga setiap aplikasi mengelola kuncinya sendiri secara pribadi. Ini adalah pilihan yang lebih disukai ketika Anda menginginkan hanya aplikasi Anda memiliki akses ke rahasia mereka tanpa pengguna perlu memilih kunci secara manual dari sebuah daftar. Untuk mengimplementasikan hal ini, digunakan kelas-kelas Java standar, seperti KeyStore, KeyPairGenerator o KeyGenerator.

Implementasi Teknis: Enkripsi dan Tanda Tangan

Manajemen kunci kriptografi dengan Sistem Keystore Android

Untuk enkripsi data simetris, AES-GCM adalah metode yang paling direkomendasikan . Metode ini tidak hanya menjaga kerahasiaan tetapi juga menjamin integritas data dengan mendeteksi apakah byte yang dienkripsi telah diubah. Sangat penting untuk diingat bahwa setiap operasi menghasilkan Vektor Inisialisasi (IV) unik yang harus disimpan bersama dengan data yang dienkripsi agar operasi dapat dibalik.

Jika Anda memerlukan tanda tangan digital, cara terbaik adalah menggunakan RSA . Sepasang kunci (publik dan privat) dihasilkan di dalam keystore. Kunci privat tetap terkunci dalam perangkat keras yang aman untuk menandatangani informasi , sementara kunci publik dapat didistribusikan untuk memverifikasi bahwa pesan belum diubah dan berasal dari sumber aslinya.

massa
Artikel terkait:
Kerangka Kerja MobSF: Analisis Keamanan Komprehensif untuk Aplikasi Android, iOS, dan Windows Mobile

Arsitektur internal dan evolusi sistem

Secara teknis, sistem ini merupakan mesin yang kompleks. Toko Kunci Android Ini adalah tampilan luar aplikasi, tetapi ia berkomunikasi dengan daemon penyimpanan kunci melalui Binder. Daemon ini mengelola keyblobs (kunci terenkripsi) dan bergantung pada HAL dari KeyMint (sebelumnya Keymaster) untuk melakukan pekerjaan berat di dunia yang aman.

Perjalanan ini panjang: dari Android 6.0, yang memperkenalkan kontrol akses dan primitif AES/HMAC, melalui Android 7.0 dengan sertifikasi kunci dan penautan versi (untuk mencegah penyerang menurunkan versi OS ke versi yang rentan), hingga Android 12. Pada versi terbaru ini, daemon ditulis ulang dalam Rust untuk meningkatkan keamanan dan HAL KeyMint diperkenalkan, yang mendukung perjanjian kunci ECDH dan batasan penggunaan kunci.

Perspektif forensik dan risiko ekstraksi

Meskipun penyimpanan kunci sangat kuat, dalam dunia forensik komputer terdapat metode untuk mencoba mengekstrak informasi tersebut. Kunci disimpan dalam bentuk terenkripsi. /misc/keystore/ (atau dalam basis data SQLite sejak Android 12). Untuk melindunginya, sebuah Kunci Enkripsi (KEK) diperoleh dari nilai tetap perangkat keras yang aman.

Beberapa pakar forensik digital mencoba dekripsi offline dengan mengekstrak nilai perangkat keras melalui kerentanan khusus prosesor (seperti MTK atau Qualcomm). Jika mereka berhasil mendapatkan KEK (Keystore Key), mereka dapat mendekripsi kunci di dalam keystore dan selanjutnya mengakses basis data terenkripsi dari aplikasi seperti Signal atau Element , yang biasanya menggunakan keystore untuk melindungi kunci utama basis data Realm mereka.

Seluler Aman
Artikel terkait:
Aplikasi Keamanan Android Terbaik: Panduan Lengkap dan Terbaru

Tambahkan sebagai sumber pilihan di Google