Keamanan Kata Sandi: Cara Membuat, Menyimpan, dan Mengaudit Kata Sandi yang Kuat
Jawaban Cepat
Hasilkan kata sandi acak 16+ karakter dengan Pembuat Kata Sandi kami, jangan pernah menggunakannya kembali, dan simpan di pengelola kata sandi. Di server, hash dengan bcrypt (faktor kerja 12+), scrypt, atau Argon2id —tidak pernah MD5 atau SHA-256. Pelanggaran audit melalui k-anonimitas Have I Been Pwned API. Jangan pernah mengirimkan atau mencatat kata sandi teks biasa.
Perkenalan
Kata sandi yang lemah, digunakan kembali, dan disimpan secara tidak benar menyebabkan sebagian besar pengambilalihan akun. Panduan ini memecahkan empat masalah nyata: (1) menghasilkan kata sandi dengan entropi yang cukup untuk melawan kekerasan, (2) melakukan hashing kata sandi dengan KDF yang lambat dan bukan hash yang cepat, (3) menghindari penggunaan kembali di seluruh layanan, dan (4) mengaudit kredensial yang bocor. Setiap solusi dapat ditindaklanjuti dan didukung oleh alat.
Langkah demi Langkah
-
Hasilkan kata sandi dengan entropi tinggi
Gunakan Pembuat Kata Sandi untuk membuat kata sandi 16+ karakter yang menggabungkan huruf atas, bawah, angka, dan simbol. Entropi = log2(charsetSize^length); alfabet 16 karakter dengan 94 simbol menghasilkan ~105 bit, yang tidak dapat dilakukan secara brute force bahkan pada 10^12 tebakan/detik.
-
Jangan pernah menggunakan kembali kata sandi di seluruh layanan
Menggunakan kembali satu kata sandi berarti satu pelanggaran akan membahayakan setiap akun yang membagikannya. Hasilkan kata sandi unik per layanan dan simpan di pengelola kata sandi (Bitwarden, 1Password, KeePassXC). Kata sandi utama adalah satu-satunya kata sandi yang perlu Anda ingat—buatlah kata sandi yang panjang.
-
Hash kata sandi dengan KDF yang lambat di server
Jangan pernah menyimpan kata sandi dengan MD5, SHA-1, atau SHA-256 mentah — kata sandi tersebut terlalu cepat, dan GPU dapat mencoba miliaran per detik. Gunakan bcrypt dengan faktor kerja 12+, scrypt dengan N=2^17, atau Argon2id dengan memori 64MB. KDF ini sengaja dibuat lambat dan membutuhkan memori yang besar untuk mengalahkan serangan GPU/ASIC.
-
Gunakan garam untuk mengalahkan tabel pelangi
Salt adalah nilai acak unik per kata sandi, ditambahkan atau digabungkan sebelum hashing. Ini memastikan kata sandi yang identik menghasilkan hash yang berbeda, membuat tabel pelangi yang telah dihitung sebelumnya tidak berguna. bcrypt dan Argon2 menghasilkan dan menyematkan garam secara otomatis —jangan menggulungnya sendiri.
-
Audit untuk kata sandi yang dilanggar
Sebelum menerima kata sandi, periksa apakah saya sudah Pwned API menggunakan protokol k-anonymity: kirim hanya 5 karakter pertama dari hash SHA-1, terima daftar sufiks yang cocok, dan bandingkan secara lokal. Ini tidak pernah mengungkapkan kata sandi lengkap ke API.
Contoh
Kata sandi kuat yang dihasilkan (16 karakter, ~105 bit entropi)
Masukan: Panjangnya 16, semua kelas karakter
Keluaran: K9$mP2#vL7@nQ4!x (acak, unik, tidak pernah digunakan kembali)
Frasa sandi untuk kata sandi utama (mudah diingat + kuat)
Masukan: 4 kata umum acak
Keluaran: correct-horse-battery-staple (~44 bits but easy to remember; use 5-6 words for ~60+ bits)
bcrypt hash kata sandi (faktor kerja 12)
Masukan: kata sandi123 dengan biaya bcrypt 12
Keluaran: $2b$12$N9qo8uLOickgx2ZMRZoMy.MrqKQp7vqB4V1e5sTq7vqB4V1e5sTq (garam + biaya + hash tertanam)
Masalah Umum
- Menggunakan MD5 atau SHA-256 untuk hashing kata sandi: keduanya merupakan hash cepat. GPU modern menghitung ~10 miliar SHA-256/s, memecahkan kata sandi 8 karakter dalam hitungan menit. Selalu gunakan bcrypt, scrypt, atau Argon2id.
- Menggunakan kembali satu kata sandi di seluruh situs: pelanggaran di situs terlemah akan membocorkan kata sandi untuk setiap situs. Hasilkan kata sandi unik dan simpan di pengelola.
- Menyimpan kata sandi dalam teks biasa atau enkripsi yang dapat dibalik: jika basis data bocor, setiap akun akan langsung disusupi. Hashing bersifat satu arah dan tidak dapat diubah —bahkan server tidak dapat memulihkan yang asli.
- Faktor kerja rendah di bcrypt: biaya 4 baik-baik saja pada tahun 2002; pada tahun 2026 biaya penggunaan 12+ (kira-kira 4096 iterasi). Hash ulang saat login untuk mengupgrade hash lama tanpa memaksa pengaturan ulang kata sandi.
Kiat
- Targetkan setidaknya 100 bit entropi untuk akun bernilai tinggi —yaitu 16 karakter acak dari 94 simbol alfabet, atau 6 kata dadu acak.
- Aktifkan autentikasi dua faktor (TOTP atau kunci perangkat keras) untuk setiap akun yang mendukungnya — kata sandi yang kuat saja tidak cukup jika kata sandi tersebut terkena phishing.
- Gunakan opsi 'kecualikan karakter ambigu' dari Pembuat Kata Sandi kami (0/O, 1/l/I) ketika kata sandi akan dibacakan atau diketik dari cetakan.
- Putar kata sandi hanya setelah pelanggaran terkonfirmasi, bukan pada jadwal tetap —rotasi paksa mendorong pengguna ke pola yang dapat diprediksi seperti Musim Semi 2026!.