Ini adalah pertanyaan klasik yang sering muncul di benak pengguna internet: "Apakah developer atau pemilik website tempat saya mendaftar tahu kata sandi saya?"
Jawabannya, di situs modern yang menerapkan praktik keamanan yang baik, seharusnya adalah TIDAK. Mereka tidak menyimpan kata sandi Anda apa adanya. Alat andalan yang membuat hal ini mungkin adalah fungsi hashing yang disebut Bcrypt, didukung oleh teknik Salt.
Memahami Dasar Hashing: Proses Satu Arah
Secara sederhana, hashing adalah proses mengubah data input (kata sandi asli) menjadi string karakter acak dengan panjang tetap (hash value).
Sifat kunci dari hashing yang aman adalah proses satu arah. Artinya, tidak mungkin mengembalikan hash menjadi kata sandi aslinya. Server hanya menyimpan hash, bukan kata sandi mentah. Ini seperti melihat bubur dan mencoba menebak resep adonan awalnya—sangat sulit, bahkan mustahil.
Bcrypt yang Sengaja Dibuat Lambat
Bcrypt adalah algoritma hashing kata sandi yang dikembangkan pada tahun 1999. Keunggulannya bukan pada kecepatan, melainkan pada kelambatan yang disengaja.
⚙️ Mekanisme Work Factor
Kekuatan Bcrypt berasal dari faktor biaya (cost factor). Faktor ini memungkinkan pembuat website untuk mengatur berapa banyak iterasi (pengulangan) yang harus dilakukan oleh algoritma saat membuat hash.
- Tujuan: Dengan sengaja memperlambat proses hashing, Bcrypt berhasil menggagalkan serangan coba-coba otomatis (brute-force). Peretas yang mencoba miliaran kata sandi per detik akan menghabiskan waktu dan sumber daya yang sangat besar, membuat serangan menjadi tidak praktis.
- Adaptif: Jika komputer menjadi lebih cepat, faktor biaya Bcrypt dapat ditingkatkan. Peningkatan satu tingkat ini secara eksponensial melipatgandakan waktu yang dibutuhkan peretas, menjaga keamanan tetap relevan.
🧂Salt
Meskipun Bcrypt kuat, ia harus bekerja berpasangan dengan Salt agar sempurna. Salt adalah string data acak yang unik, dihasilkan untuk setiap kata sandi secara terpisah.
🧂 Mengapa Salt Penting?
Tanpa salt, jika dua pengguna memiliki kata sandi yang sama (123456), hash yang dihasilkan Bcrypt akan identik. Peretas dapat membuat "kamus" (Rainbow Table) yang berisi hash dari kata sandi umum dan mencocokkan hash curian secara massal.
🛡️ Bagaimana Salt Bekerja?
Dengan salting, sebelum kata sandi di-hash, kata sandi tersebut digabungkan dengan salt acak yang unik milik pengguna tersebut.
Karena salt berbeda untuk setiap pengguna, meskipun dua pengguna menggunakan kata sandi yang sama, hash akhirnya akan berbeda sepenuhnya. Hal ini menyebabkan:
- Rainbow Table menjadi tidak berguna.
- Peretas harus menyerang setiap hash satu per satu, yang membutuhkan waktu jutaan kali lebih lama.
Integrasi Bcrypt dan Salt dalam Framework Laravel
Dalam framework populer seperti Laravel, penggunaan Bcrypt dan Salt sudah terintegrasi penuh.
- Ketika Anda mendaftar, Laravel secara otomatis membuat salt yang unik dan menjalankannya melalui Bcrypt.
- Hash akhir yang dihasilkan oleh Bcrypt (yang sudah menyertakan salt dan cost factor di dalamnya) disimpan di database.
Berkat Bcrypt dan Salt, pemilik website modern tidak mengetahui kata sandi mentah Anda. Mereka hanya menyimpan string acak yang tidak dapat diuraikan.