Ditulis oleh: Ahmad Nur Hasyri (Ethic Ninja’s Pentester)
Halo friends, kali ini kita akan bahas SSL Pinning pada aplikasi mobile, dari pengertian, manfaat hingga implementasi SSL Pinning. Check it out!
Apa itu SSL/Certificate Pinning ?
SSL/Certificate pinning adalah suatu teknik keamanan aplikasi yang dilakukan untuk memastikan bahwa koneksi SSLyang dilakukan antara aplikasi dengan server aman dan sesuai dengan yang diharapkan oleh aplikasi tanpa ada interupsi dari pihak yang tidak berwenang. Yaitu dengan cara memvalidasi SSL CertificatePin atau Public Key Pin milik server yang dituju oleh aplikasi sesuai dengan Pin yang telah didefinisikan pada aplikasi.
Bagaimana Implementasi SSL/Certificate Pinning ?
Sebelum mengimplementasikan SSL pinning kita harus menentukan certificate mana yang akan digunakan untuk pinning, ada tiga certificate yang dapat digunakan untuk pinning yaitu:
- Leaf Certificate
Pinning dengan menggunakan leaf certificate lebih menjamin bahwa ini adalah sertifikat server yang kita miliki. Namun leaf certificate cenderung memiliki waktu expired yang singkat dan saat certificate tersebut telah expired aplikasi tidak akan bisa terkoneksi ke server, sehingga kita perlu melakukan update pada aplikasi untuk mengganti pin leaf certificate dengan yang baru
- Intermediate Certificate
Pinning dengan menggunakan intermediate certificate, kita mempercayai otoritas intermediate certificate tersebut untuk tidak salah menerbitkan certificate untuk server kita. Ini juga memiliki keuntungan bahwa selama kita tetap menggunakan penyedia certificate yang sama, aplikasi tetap dapat terkoneksi ke server walaupun ada perubahan pada leaf certificate, sehingga kita tidak perlu melakukan update aplikasi saat leaf certificate berubah.
- Root Certificate
Pinning dengan menggunakan Root certificate, kita mempercayai otoritas root certificate serta perantara yang mereka percaya untuk tidak salah menerbitkan sertifikat. Seringkali root certificate dan intermediate adalah perusahaan yang sama dalam hal ini tidak banyak perbedaan.
Dari ketiga certificate tersebut semakin mendekati root certificate maka semakin rendah tingkat keamanan yang kita miliki karena lebih banyak certificate yang kita percayai. Kita bisa menggunakan lebih dari satu certificate dalam pinning.
Berikut ini adalah contoh implementasi SSL Pinning pada aplikasi android menggunakan OkHttp versi 4.8.1.
Pertama kita harus mencari tahu certificate pin yang akan digunakan dalam pinning, salah satu cara untuk mengetahuinya adalah dengan melihat pesan error saat certificate pin server yang kita akses tidak sesuai dengan certificate pin yang sudah kita tentukan dalam aplikasi, seperti contoh kode di bawah ini.
Setelah mengetahui certificate pin, langkah selanjutnya adalah menggunakan certificate pin tersebut dalam kode aplikasi
Contoh sebelum pinning dan sesudah pinning
Jika aplikasi belum menggunakan pinning, request yang dikirim oleh aplikasi ke server akan terlihat pada aplikasi intercept request seperti burp suite, seperti gambar di bawah ini.
Jika aplikasi telah menggunakan pinning, pada aplikasi intercept request seperti burp suite, request tidak akan terlihat, karena aplikasi tidak akan mengirimkan request saat certificate pin milik burp suite tidak sesuai dengan certificate pin dalam aplikasi, seperti gambar di bawah ini.
Manfaat Pinning
Manfaat dari ssl pinning di antaranya adalah
- Menghindari serangan Man In The Middle Attack apabila perangkat pengguna dapat disusupi dengan sertifikat ssl milik hacker yang dipasang di perangkat tersebut melalui social enginering.
- Mempersulit client yang memiliki maksud tidak baik (seperti mencari celah keamanan) dalam memantau request dan response yang dikirim dan diterima aplikasi.
Nah, jadi sudah tahukan pentingnya SSL Pinning, silahkan dicoba ya friends!
Comments 1
Makasih min, saya jadi lebih mengerti