Hãy nhớ rằng giá trị được lưu trữ trong mật khẩu: $2a$(2 chars work)$(22 chars salt)(31 chars hash)
. Nó không phải là một giá trị cố định.
Nếu bạn thấy tải quá cao, bạn chỉ cần tải nó vào lần đăng nhập tiếp theo, bạn crypt vào thứ gì đó nhanh hơn để tính toán. Tương tự, khi thời gian trôi qua và bạn nhận được các máy chủ tốt hơn, nếu tải không phải là vấn đề, bạn có thể nâng cấp sức mạnh của mã băm khi họ đăng nhập.
Bí quyết là giữ cho nó mất khoảng thời gian tương tự mãi mãi trong tương lai cùng với Định luật Moore. Số là log2, vì vậy mỗi khi máy tính tăng gấp đôi tốc độ, hãy thêm 1 vào số mặc định.
Quyết định khoảng thời gian bạn muốn thực hiện để tăng sức mạnh mật khẩu của người dùng. Ví dụ: đối với một số từ điển phổ biến, việc tạo tài khoản của bạn có thể đã cảnh báo rằng mật khẩu của họ yếu. Nếu đó là một trong 1000 từ phổ biến, giả sử, và phải mất một kẻ tấn công 0.1s để kiểm tra mỗi, mua chúng 100 (tốt, một số từ phổ biến hơn ...). Nếu người dùng chọn 'từ điển phổ biến' + 2 số, thì đó là hơn hai giờ. Nếu cơ sở dữ liệu mật khẩu của bạn bị xâm nhập và kẻ tấn công chỉ có thể nhận được vài trăm mật khẩu mỗi ngày, bạn đã mua hầu hết người dùng của bạn hàng giờ hoặc ngày để thay đổi mật khẩu của họ một cách an toàn. Đó là vấn đề mua thời gian của họ.
http://www.postgresql.org/docs/8.3/static/pgcrypto.html có một số lần để bẻ mật khẩu để bạn xem xét. Tất nhiên, mật khẩu mà họ liệt kê có các chữ cái ngẫu nhiên. Từ điển ... Thực tế bạn không thể lưu người có mật khẩu là 12345.
Chi phí ngăn chặn các cuộc tấn công ngoại tuyến. Khi "trực tuyến", bạn có thể sử dụng độ trễ tối thiểu giữa các lần thử (ví dụ: 5 giây) để ngăn chặn tấn công từ chối dịch vụ. –
Nhân đôi trên InformationSecurity: [Đề nghị # của vòng cho bcrypt] (http://security.stackexchange.com/q/17207/46416) –
Đối với bất cứ ai quan tâm, tôi chỉ viết một công cụ Java CLI nhỏ để kiểm tra hiệu suất bcrypt trên máy chủ (điều này rõ ràng là quan trọng để cân bằng an ninh, tải trên máy chủ và thời gian phản hồi): https://github.com/cdraeger/hash-performance – Blacklight