Hashing kata sandi adalah aspek mendasar dalam mengamankan kata sandi, mengubah lanskap penyimpanan kata sandi dari teks biasa menjadi hash terenkripsi. Artikel ini mengeksplorasi evolusi hashing kata sandi, dari algoritma awal seperti MD5 dan SHA-1 hingga metode yang lebih aman yang direkomendasikan saat ini, dan diakhiri dengan pentingnya menggunakan kata sandi acak untuk setiap situs web.
Sebelum mendalami lebih jauh sejarah dan evolusi hashing kata sandi, penting untuk memahami apa itu hashing. Fungsi hash, metode yang melakukan hashing, dirancang untuk mengambil string data apa pun, atau "input," dan menghasilkan string byte berukuran tetap, yang biasanya dikenal sebagai "hash." Proses ini memiliki beberapa karakteristik penting yang menjadikannya sangat berguna untuk tujuan keamanan.
Salah satu fitur penting dari fungsi hash adalah kepekaan mereka terhadap perubahan input. Ini dikenal sebagai efek avalanche. Bahkan perubahan kecil dalam input — seperti mengubah satu karakter dalam kata sandi — akan menghasilkan hash yang sepenuhnya berbeda. Sebagai contoh, hash untuk string "password1" dan "password2" akan terlihat sangat berbeda, meskipun perbedaan antara kedua input tersebut hanya pada karakter terakhir. Karakteristik ini sangat penting untuk menjaga integritas data, karena hampir tidak mungkin untuk menebak input asli hanya dari hash saja.
Selain itu, fungsi hash adalah fungsi satu arah. Artinya, mereka dirancang agar secara komputasional tidak dapat dibalik. Output (hash) tidak menyimpan detail spesifik tentang input yang memungkinkan seseorang merekonstruksi data asli tanpa upaya komputasi luar biasa. Satu-satunya cara yang mungkin untuk "membalikkan" hash adalah melalui metode yang disebut brute-forcing, di mana setiap kemungkinan kombinasi dari data asli di-hash ulang hingga ditemukan hash yang cocok.
Pada hari-hari awal keamanan digital, MD5 (Message-Digest Algorithm 5) dan SHA-1 (Secure Hash Algorithm 1) banyak digunakan untuk hashing kata sandi. Dikembangkan pada awal tahun '90-an, algoritma ini mengubah kata sandi teks biasa menjadi nilai hash berukuran tetap. Meskipun awalnya aman, kerentanan seperti ketahanan terhadap serangan tabrakan segera menjadikannya usang untuk aplikasi yang aman.
Sementara fungsi hash dirancang untuk cepat dan efisien, fitur ini dapat merugikan ketika datang pada keamanan kata sandi karena membuat serangan brute-force lebih mudah. Fungsi Derivasi Kunci Berbasis Kata Sandi (Password-Based Key Derivation Functions/PBKDFs), seperti PBKDF2, bcrypt, dan scrypt, dirancang untuk melawan serangan ini dengan memasukkan salt (untuk melindungi dari serangan tabel pelangi) dan menggunakan teknik yang dikenal sebagai key stretching. Key stretching sengaja memperlambat proses hashing, yang dapat secara signifikan menghalangi upaya akses tidak sah.
Seiring kemajuan keamanan siber, ketidakcukupan algoritma hashing awal seperti MD5 dan SHA-1 semakin jelas, mendorong pengembangan algoritma yang khusus dirancang untuk keamanan kata sandi, seperti bcrypt, scrypt, dan Argon2 atau yang disebut Fungsi Derivasi Kunci Berbasis Kata Sandi (PBKDFs).
Menurut OWASP, algoritma yang direkomendasikan untuk hashing kata sandi adalah bcrypt, scrypt, dan Argon2. Algoritma ini lebih disukai karena pertahanan yang kuat terhadap serangan brute-force dan mekanisme bawaan untuk salt dan key stretching.
bcrypt adalah fungsi hashing kata sandi yang diturunkan dari Blowfish cipher. Ini memasukkan salt untuk melindungi terhadap serangan tabel pelangi dan menggunakan parameter biaya untuk meningkatkan waktu komputasi (dan dengan demikian kesulitan) dalam menghasilkan hash. Faktor biaya ini dapat disesuaikan, memungkinkan algoritma untuk diskalakan dengan peningkatan perangkat keras.
Parameter Utama:
OWASP merekomendasikan menggunakan faktor kerja 10 atau lebih dengan batas kata sandi 72 byte.
scrypt dirancang untuk memerlukan memori dan waktu yang intesif untuk menahan serangan perangkat keras khusus skala besar. Ini dapat dikonfigurasi untuk memerlukan jumlah memori tertentu, dan juga termasuk salt dan jumlah iterasi, mirip dengan PBKDF2.
Parameter Utama:
OWASP merekomendasikan penggunaan nilai minimum parameter biaya CPU/memori (2^17), ukuran blok minimum 8 (1024 byte), dan parameter paralelisasi 1.
Argon2, pemenang Kompetisi Hashing Kata Sandi pada 2015, hadir dalam dua varian: Argon2d dan Argon2i. Argon2d dioptimalkan untuk lingkungan di mana ancaman dari serangan saluran samping rendah, sementara Argon2i dioptimalkan untuk menahan serangan saluran samping. Ini juga memasukkan fitur-fitur kunci dari bcrypt dan scrypt.
Parameter Utama:
OWASP merekomendasikan menggunakan Argon2id dengan konfigurasi minimum 19 MiB memori, jumlah iterasi 2, dan tingkat paralelisasi 1.
Mengingat sifat ancaman keamanan dan langkah-langkah penanggulangan yang selalu berkembang, sangat penting untuk tetap diperbarui dengan praktik terbaru dalam keamanan kata sandi. Untuk rekomendasi yang paling terkini dan komprehensif, silakan merujuk ke OWASP Password Storage Cheat Sheet di situs resmi OWASP. Pastikan untuk meninjau pedoman ini secara teratur agar sesuai dengan praktik terbaik dalam keamanan siber.
Sementara menerapkan algoritma hashing modern sangat penting, cara kata sandi dibuat dan dikelola juga memegang peranan penting dalam menjaga keamanan. Kata sandi acak untuk setiap situs web sangat penting karena beberapa faktor:
Dari MD5 dan SHA-1 hingga algoritma modern seperti bcrypt dan Argon2, hashing kata sandi telah mengalami transformasi signifikan. Seiring ancaman siber terus berkembang, adopsi algoritma hashing modern dan memastikan penggunaan kata sandi acak dan unik untuk setiap situs web adalah praktik penting untuk menjaga keamanan online. Strategi ini tidak hanya mencegah kompromi akun individu tetapi juga memperkuat postur keamanan secara keseluruhan terhadap serangan yang semakin canggih.