Bài viết "Cách lưu trữ mật khẩu an toàn" của Coda Hale tuyên bố rằng:
bcrypt có muối tích hợp để ngăn chặn các cuộc tấn công bảng cầu vồng.
Ông trích dẫn bài báo này , trong đó nói rằng trong triển khai OpenBSD về bcrypt
:
OpenBSD tạo ra muối bcrypt 128 bit từ luồng khóa arcfour (arc4random (3)), được gieo bằng dữ liệu ngẫu nhiên mà nhân thu thập từ thời gian của thiết bị.
Tôi không hiểu làm thế nào điều này có thể làm việc. Theo quan niệm của tôi về một loại muối:
- Nó cần phải khác nhau cho mỗi mật khẩu được lưu trữ, để tạo một bảng cầu vồng riêng biệt cho mỗi mật khẩu
- Nó cần được lưu trữ ở một nơi nào đó để có thể lặp lại: khi người dùng cố gắng đăng nhập, chúng tôi sẽ thử mật khẩu của họ, lặp lại quy trình muối và băm giống như khi chúng tôi lưu trữ mật khẩu ban đầu và so sánh
Khi tôi đang sử dụng Devise (trình quản lý đăng nhập Rails) với bcrypt, không có cột muối trong cơ sở dữ liệu, vì vậy tôi bối rối. Nếu muối là ngẫu nhiên và không được lưu trữ ở bất cứ đâu, làm thế nào chúng ta có thể lặp lại đáng tin cậy quá trình băm?
Nói tóm lại, làm thế nào bcrypt có thể tích hợp muối ?