Mengapa bukan sekadar SHA-256?
Cincangan kriptografi biasa seperti ialah alat yang betul untuk integriti, tetapi alat yang salah untuk menyimpan kata laluan, dan sebabnya ialah justru sifat yang menjadikannya baik di tempat lain: ia pantas. Penyerang yang mencuri pangkalan data cincangan SHA-256 kata laluan boleh mencuba berbilion tekaan sesaat pada perkakasan biasa, kerana setiap tekaan hanyalah satu cincangan pantas. Kata laluan biasa tumbang hampir serta-merta. Kepantasan, kebaikan cincangan tujuan umum, ialah liabiliti di sini.
Penyimpanan kata laluan memerlukan cincangan yang sengaja perlahan dan tahan terhadap perkakasan khusus. Tiga blok binaan menjadikannya berfungsi: penggaraman, faktor kerja boleh laras, dan kekerasan memori.
Penggaraman: mengalahkan prakiraan
Garam (salt) ialah nilai rawak unik yang disimpan di sebelah setiap cincangan kata laluan dan dicampur ke dalam pencincangan. Tanpa garam, kata laluan serupa menghasilkan cincangan serupa, jadi penyerang boleh prakira jadual gergasi cincangan kata laluan biasa sekali sahaja ("rainbow table") dan mencari setiap padanan serta-merta. Garam unik bagi setiap kata laluan menjadikan prakiraan itu tidak bernilai: penyerang mesti menyerang setiap cincangan secara individu, dan kata laluan yang sama mencincang secara berbeza bagi setiap pengguna. Fungsi pencincangan kata laluan moden menjana dan menyimpan garam untuk anda.
Faktor kerja: menjadikan setiap tekaan mahal
Faktor kerja (atau parameter kos) mengawal berapa banyak pengiraan yang diambil setiap cincangan. Tetapkannya supaya satu cincangan cukup perlahan untuk tidak disedari bagi log masuk yang sah (beberapa ratus milisaat) tetapi menghukum pada skala. Kerana ia satu parameter, anda boleh menaikkannya sepanjang tahun apabila perkakasan menjadi lebih pantas, mengekalkan kos meneka lebih kurang malar. Inilah tombol yang cincangan tujuan umum sememangnya tidak ada.
Tiga pilihan piawai
- bcrypt ialah pilihan lama yang difahami dengan baik, dibina atas sifer Blowfish dengan faktor kos boleh konfigur. Lalai selamat di mana ia tersedia.
- scrypt menambah kekerasan memori: ia sengaja menggunakan jumlah memori yang boleh laras, yang menumpulkan penyerang yang menggunakan GPU dan cip tersuai, kerana ini menskala pengiraan jauh lebih murah daripada memori.
- Argon2 memenangi Password Hashing Competition pada 2015 dan ialah saranan semasa untuk sistem baharu. Ia keras memori dengan tombol berasingan untuk memori, masa, dan keselarian; varian Argon2id ialah pilihan biasa.
Mana-mana daripada ini ialah pilihan munasabah; peraturan utama ialah menggunakan salah satu daripadanya, jangan sekali-kali cincangan pantas telanjang, dan jangan sekali-kali mencipta skema anda sendiri.
Intinya
Guna SHA-256 (dalam alat Cincangan) untuk hasil semak dan integriti, di mana kepantasan ialah satu ciri. Untuk kata laluan, capai bcrypt, scrypt atau Argon2, di mana kelambatan dan kos memori ialah keseluruhan tujuan. Kedua-dua tugas kelihatan serupa dan menuntut alat yang bertentangan.