it-swarm-id.com

Bagaimana cara menggunakan kata sandi hash dengan aman?

Jika saya hash kata sandi sebelum menyimpannya di database saya, apakah itu cukup untuk mencegahnya dipulihkan oleh siapa pun?

Saya harus menunjukkan bahwa ini hanya berkaitan dengan pengambilan langsung dari database, dan bukan jenis serangan lain, seperti bruteforcing halaman login aplikasi, keylogger pada klien, dan tentu saja rubberhose cryptanalysis (atau saat ini kita harus menyebutnya " Cryptanalysis Chocolate ").

Tentu saja segala bentuk hash tidak akan mencegah serangan-serangan itu.

850
AviD

bcrypt dikatakan lebih lambat pada GPU, yang membuat brute-forcing lebih lambat. Namun, dengan perangkat keras komputer yang terus berkembang, kita seharusnya tidak hanya mengandalkan pada kesulitan menerapkan algoritma hashing tertentu pada perangkat keras tertentu.

Sebaliknya, Anda dapat secara sewenang-wenang meningkatkan biaya bruteforcing hash dengan menggunakan "variabel kerja/faktor biaya" (kadang-kadang juga disebut "putaran") yang didukung beberapa fungsi hash. Di antara mereka adalah bcrypt dan SHA-512.

Fungsi crypt() Glibc memungkinkan spesifikasi putaran untuk beberapa algoritma hash. Misalnya, faktor biaya 100000 untuk SHA-512 membuat generasi (dan karenanya brute-forcing) dari hash sekitar 4 kali lebih lambat daripada faktor biaya 08 untuk bcrypt. Ini dapat dikonfirmasi dengan menggunakan program pemecahan hash seperti hashcat.

Jika Anda berasumsi bahwa pada suatu saat kata sandi Anda hashes dan garam akan dicuri dan penyerang akan menggunakan perangkat keras ASIC untuk memaksa mereka, Anda cukup meningkatkan faktor kerja untuk tetap membuatnya terlalu mahal bagi mereka, sementara tidak membebani CPU server Anda dengan otentikasi pengguna biasa.

Pentingnya kata sandi yang panjang dan acak tetap berlaku.

Saya baru saja menulis posting blog tentang detailnya.

0
Michael Franzl