Tulisan ini dibuat untuk mengkritik para developer yang sering menganggap bahwa implementasi enkripsi adalah solusi utama untuk menyelesaikan masalah keamanan dalam aplikasi mereka. Pandangan ini sering kali salah kaprah, karena enkripsi saja tidak akan mampu melindungi sistem jika celah-celah keamanan utama dibiarkan terbuka. Fokus yang berlebihan pada implementasi enkripsi tanpa memahami resiko dan kebutuhan sebenarnya hanya akan membuang waktu dan tenaga, serta meninggalkan potensi serangan lain yang lebih berbahaya.
Logika Salah Kaprah tentang Encryption ๐
Bayangkan sebuah rumah di dalamnya ada brankas super kuat yang dilengkapi dengan kunci kombinasi, tetapi dengan pintu rumah depan yang terbuka lebar. Apakah brangkas tersebut aman? Tentu tidak. Jika penyerang bisa masuk melalui pintu yang terbuka, mereka tetap punya waktu untuk mencoba membongkar atau memindahkan brankas itu.
Begitu pula dengan enkripsi. Banyak developer berpikir bahwa dengan mengenkripsi data, maka data itu sepenuhnya aman. Padahal, jika sistem tidak dirancang dengan baik atau celah utama seperti validasi data, otentikasi, atau kontrol akses tidak diperketat/dibiarkan, maka enkripsi hanya akan menjadi tameng yang lemah. Karena berkaitan dengan encryption ini hanyalah masalah waktu dan effort yang lebih besar bagi penyerang untuk membongkarnya.
Apa Tujuan Encryption? ๐
Enkripsi dirancang untuk melindungi data dalam situasi tertentu, seperti:
- Melindungi data saat transit yakni mencegah data disadap selama perjalanan dari satu titik ke titik lainnya (misalnya melalui HTTPS).
- Melindungi data saat disimpan yakni mencegah data yang tersimpan di perangkat atau server diakses oleh pihak yang tidak berwenang.
Namun, enkripsi tidak dirancang untuk:
- Menggantikan validasi data di server karena data yang terenkripsi tetap harus divalidasi saat diterima di server.
- Mencegah serangan terhadap sistem lain karena enkripsi tidak bisa melindungi dari serangan yang mengeksploitasi celah lain, seperti SQL Injection atau kelemahan otentikasi.
- Mengamankan sistem yang sudah diretas karena jika penyerang sudah mendapatkan akses penuh ke sistem, enkripsi tidak akan banyak membantu.
Kenapa Encryption Saja Tidak Cukup? ๐
Kebanyakan kasus seorang developer yang mungkin terlalu fokus pada enkripsi untuk mengatasi masalah kemanan malah melupakan langkah-langkah penting yang seharusnya diatasi. Beberapa contoh kelemahan yang mendasar ketika hanya mengandalkan enkripsi tanpa memperhatikan keamanan menyeluruh:
Kunci yang Rentan Dicuri
Enkripsi membutuhkan kunci, dan jika kunci ini tidak dikelola dengan aman, maka seluruh lapisan enkripsi menjadi tidak berguna. Salah satu kesalahan besar yang sering dilakukan adalah penerapan Client-Side Encryption (CSE) tanpa pemahaman yang memadai. Kunci yang disimpan di aplikasi client, misalnya, dapat dengan mudah diakses oleh penyerang melalui reverse engineering.Tidak Menutup Celah Utama
Serangan terhadap aplikasi sering kali terjadi melalui celah seperti SQL Injection, Cross-Site Scripting (XSS), atau konfigurasi server yang lemah. Enkripsi tidak dapat melindungi sistem dari jenis serangan ini.Kesalahan Implementasi
Banyak developer yang mengimplementasikan enkripsi dengan cara yang salah, seperti menggunakan algoritma yang sudah usang (contohnya, MD5 atau DES), salah mengelola kunci, atau menyimpan data terenkripsi di lokasi yang tidak aman.
Kasus Developer Ngawur dengan Encryption ๐
Ada banyak kasus dimana developer salah memahami fungsi enkripsi, seperti:
- Menganggap bahwa data yang sudah dienkripsi tidak bisa dimodifikasi. Faktanya, data terenkripsi tetap bisa diubah, meskipun hasilnya mungkin tidak valid.
- Menganggap bahwa data yang dikirim melalui koneksi terenkripsi (HTTPS) sudah aman tanpa perlu validasi tambahan. Padahal, data yang sampai di server tetap harus divalidasi untuk mencegah eksploitasi.
- Menggunakan enkripsi sebagai alasan untuk menghindari masalah pengamanan di level lain, contohnya seperti masalah autentikasi yang lemah atau otorisasi yang tidak tepat.
Kesalahan yang Sering Dilakukan Developer ๐
Mengabaikan Keamanan Dasar
Developer terlalu sibuk mengimplementasikan enkripsi, tetapi lupa memperbaiki celah yang dasar seperti password yang lemah, API yang terbuka/bebas diakses, atau validasi input yang buruk.Menganggap Enkripsi sebagai Solusi Segalanya
Beberapa developer berpikir bahwa enkripsi dapat menggantikan masalah keamanan yang lain, seperti Broken Access Control (BAC), server misconfiguration, atau proteksi terhadap serangan injeksi.Salah dalam Pemilihan atau Pengelolaan Algoritma
Menggunakan algoritma yang tidak aman atau tidak sesuai dengan kebutuhan (seperti memakai enkripsi simetris untuk data yang perlu dibagikan secara rahasia ke pihak lain) dapat menimbulkan resiko tambahan.
Fokus pada Celah Utama, Bukan Hanya Encryption ๐
Keamanan aplikasi tidak hanya bergantung pada enkripsi. Developer perlu memastikan bahwa celah utama berikut ini ditutup:
- Validasi Input dengan memastikan semua data yang diterima dari client telah divalidasi untuk mencegah SQL Injection, XSS, atau serangan yang serupa.
- Kontrol Akses yang Ketat dengan membatasi akses ke data sensitif berdasarkan role dari user.
- Hardening Server dengan memastikan server menggunakan konfigurasi yang aman dan minim resiko eksploitasi.
- Monitoring dan Logging dengan selalu memantau aktivitas mencurigakan pada sistem dan catat semua akses serta perubahan data.
Penutup ๐
Tulisan ini dibuat untuk mengingatkan para developer agar tidak terjebak dalam mitos bahwa enkripsi adalah solusi utama keamanan. Enkripsi memang penting, tetapi hanya sebagai bagian dari strategi keamanan yang lebih besar. Mengabaikan celah utama dalam sistem hanya akan membuat enkripsi menjadi tidak berarti.
Enkripsi yang baik harus diimplementasikan dengan benar, namun tidak boleh menjadi satu-satunya mekanisme perlindungan. Lebih baik berfokus pada penutupan celah keamanan yang lebih mendasar, seperti validasi input, kontrol akses, dan hardening sistem. Jangan sampai kita sibuk memasang brankas di dalam rumah, tetapi lupa mengunci pintu depan.
Tulisan ini sepenuhnya terinspirasi dari artikel milik Pak Yohanes mengenai “SSL Pinning dan Pentester Ngawur” https://blog.compactbyte.com/2021/03/26/ssl-pinning-dan-pentester-ngawur/