CategoriesAndroidProgramming

Mengamankan Local Database Room di Android

Kita kadang butuh menyimpan data secara lokal untuk mempercepat load aplikasi dan menghemat bandwidth server. lalu bagaimana jika data yang kita simpan di lokal merupakan data yang penting dan sensitif ? kita memerlukan enkripsi untuk mengamankan data tersebut. user biasa memang tidak bisa mengakses file database di aplikasi kita, namun jika user tersebut tau bagaimana cara mendapatkan database nya maka semua data yang ada di database dapat dengan mudah terbaca karena tidak ada enkripsi yang dilakukan.

sebelumnya di sini kita telah belajar membuat database local di android menggunakan room, sekarang kita coba mengenkripsi database yang sudah kita buat. coba unduh database di android dengan menggunakan Device File Explorer. lalu masuk ke folder data/data/nama.package.aplikasi/databases. maka akan muncul file database room kita. unduh file dengan postfix -wal

setelah terunduh, coba lihat isinya dengan hexdump menggunakan command dari terminal. command nya adalah

hexdump -C namafile

maka data yang ada di dalam database akan dengan mudah dibaca.

lalu bagaimana caranya agar data tersebut terenkripsi sehingga tidak mudah terbaca ? kita membutuhkan library khusus untuk enkripsi SQL yaitu SQLChipper. SQL Chipper menggunakan algoritma AES-256 untuk mengenkripsi data yang ada di dalam database SQL.

Praktek

langkah pertama untuk meng enkripsi database room adalah menambahkan library SQL Chipper ke build.gradle (:app)

implementation 'net.zetetic:android-database-sqlcipher:4.5.0@aar'

setelah itu edit file AppDatabase.kt
pada method getDatabase, tambahkan satu variable yang berisi Key untuk enkripsi database nya lalu tambahkan variabel tersebut ke openHelperFactory pada konfigurasi room. sehingga menjadi seperti berikut

“PassPhrase” merupakan String key dari enkripsi SQLChipper. bisa diganti sesuai yang diinginkan.

setelah itu coba run aplikasi, lalu coba run, tambahkan beberapa data dan unduh database local nya lagi.

coba tampilkan menggunakan hexdump lagi dan kini data yang berada di dalam database tidak bisa dibaca lagi karena sudah terenkripsi.

untuk mempelajari lebih lanjut tentang SQLChipper bisa menuju websitenya dibawah ini

https://www.zetetic.net/sqlcipher/

Published by Ahmad Saifur Ridlo

Android Developer at Algostudio.net

Leave a Reply

Your email address will not be published.