2011-12-27 21 views
5

Tôi đọc trên PHP.net rằng MD5 là vô ích, và họ đề nghị sử dụng crypt + muối.Mã hóa và muối an toàn hơn MD5 như thế nào so với tấn công bạo lực?

Vì vậy, tôi đã đi để mô tả chức năng của họ và đọc

<?php 
$password = crypt('mypassword'); // let the salt be automatically generated 

/* You should pass the entire results of crypt() as the salt for comparing a 
    password, to avoid problems when different hashing algorithms are used. (As 
    it says above, standard DES-based password hashing uses a 2-character salt, 
    but MD5-based hashing uses 12.) */ 
if (crypt($user_input, $password) == $password) { 
    echo "Password verified!"; 
} 
?> 

hoặc trong trường hợp của tôi như:

$stored_password=fetch_password($user); 
if (crypt($_REQUEST['password'],$stored_password)===$stored_password) { 
// ok 
} 

Vì vậy, khi tôi thấy rằng muối được lưu trữ trong các mật khẩu băm và rằng bạn sử dụng mật khẩu băm như muối, tôi nghĩ rằng Crypt + Salt không an toàn hơn chống lại một lực lượng vũ phu trên đầu ra (tin tặc đã quản lý để ăn cắp mật khẩu băm). Nó có an toàn hơn không?

Chống lại một cuộc tấn công từ điển, tôi có thể hiểu sức mạnh của nó, nhưng đối với một cuộc tấn công bạo lực trên mật khẩu băm, tôi không thấy lợi thế.

Trả lời

0

Mật mã với hàm băm đơn giản đắt hơn MD5. Một kẻ tấn công sẽ cần thêm thời gian tính toán, điều này an toàn hơn.

Đối với mật khẩu và MD5, kẻ tấn công có thể sử dụng các bảng được tính trước cho MD5 PLUS có lợi thế của MD5 rất nhanh.

Đối với một mật khẩu và hầm mộ ướp muối, bảng precomputed sẽ là vô ích, PLUS hầm mộ cần thêm horsepowers hơn MD5

Có các thuật toán đặc biệt thủ công (google bcrypt), có một chi phí tính toán chủ đích cao để thực hiện việc này thậm chí thêm nữa.

2

Khi áp dụng muối vào chuỗi (mật khẩu trong ví dụ) trước khi băm, hàm băm giờ trở thành băm khác so với khi không có muối. Nếu không có muối, bạn chỉ có thể sử dụng một từ điển đã tồn tại từ trước - bây giờ thay vào đó bạn cần tạo một từ điển cho muối. Nếu bạn sử dụng một muối cụ thể của người dùng, mỗi người dùng cần phải có từ điển riêng của nó khi sử dụng sức mạnh vũ phu. Điều này trở nên tốn nhiều thời gian hơn.

MD5 là một thuật toán bị hỏng do collision vulnerabilities.

0

Muối cản trở bảng cầu vồng & từ điển băm bằng cách đặt mật khẩu băm của bạn là duy nhất.

Chúng cũng giúp ngăn người khác lấy cắp danh sách mật khẩu băm của bạn và sử dụng để truy cập vào tài khoản trên một trang web khác (bằng cách đảo ngược mã băm hoặc tương tự).

Nó sẽ không giúp chống lại một cuộc tấn công bạo lực truyền thống.

+1

Một muối sẽ giúp chống lại một cuộc tấn công bạo lực vũ phu truyền thống, vì hacker sẽ phải xây dựng một từ điển điều chỉnh muối. Nếu một người sử dụng muối duy nhất sẽ được sử dụng, sau đó mỗi người dùng sẽ phải có từ điển riêng của mình. – Zar

+0

Từ điển không được sử dụng trong cuộc tấn công bạo lực truyền thống. – MrGlass