Bcrypt là một hàm băm mật khẩu được thiết kế để chậm và tốn kém về mặt tính toán, khiến nó chống lại các cuộc tấn công brute-force. Đây là tiêu chuẩn ngành để lưu trữ mật khẩu an toàn.
Bcrypt hoạt động như thế nào
Bcrypt sử dụng mật mã Blowfish với salt và hệ số chi phí. Hệ số chi phí (vòng) xác định thuật toán thực hiện bao nhiêu lần lặp - mỗi lần tăng đều làm tăng gấp đôi thời gian tính toán, khiến các cuộc tấn công khó hơn theo cấp số nhân.
Tại sao sử dụng Bcrypt?
Không giống như MD5/SHA nhanh (xấu cho mật khẩu), bcrypt được thiết kế cố ý chậm. Điều này làm cho các cuộc tấn công brute-force trở nên không thực tế. Chi phí 10 nghĩa là 2^10 (1.024) lần lặp, mất ~100ms để băm - không đáng kể cho đăng nhập nhưng tàn phá cho kẻ tấn công thử hàng tỷ mật khẩu.
Thực hành bảo mật tốt nhất
Sử dụng chi phí 10-12 cho hầu hết các ứng dụng. Chi phí 10 là mức tối thiểu được khuyến nghị hiện tại. Không bao giờ sử dụng MD5 hoặc SHA-1 cho mật khẩu - chúng đã bị phá vỡ. Không bao giờ lưu trữ mật khẩu văn bản thuần túy. Luôn sử dụng bcrypt, Argon2 hoặc scrypt để băm mật khẩu.