Tôi gặp một số khó khăn khi hiểu mục đích của muối đối với mật khẩu. Theo hiểu biết của tôi, việc sử dụng chính là cản trở một cuộc tấn công bảng cầu vồng. Tuy nhiên, các phương pháp tôi đã thấy để thực hiện điều này dường như không thực sự làm cho vấn đề trở nên khó khăn hơn.
Tôi đã thấy nhiều hướng dẫn gợi ý rằng muối được sử dụng như sau:
$hash = md5($salt.$password)
Lý do là băm bây giờ ánh xạ không phải mật khẩu ban đầu, mà là sự kết hợp của mật khẩu và muối. Nhưng nói $salt=foo
và $password=bar
và $hash=3858f62230ac3c915f300c664312c63f
. Bây giờ ai đó với bảng cầu vồng có thể đảo ngược hàm băm và đưa ra "foobar" đầu vào. Sau đó, họ có thể thử tất cả các kết hợp mật khẩu (f, fo, foo, ... oobar, obar, bar, ar, ar). Có thể mất thêm vài mili giây để lấy mật khẩu, nhưng không nhiều.
Việc sử dụng khác tôi đã thấy là trên hệ thống linux của tôi. Trong / etc / bóng, mật khẩu băm thực sự được lưu trữ với muối. Ví dụ: một muối "foo" và mật khẩu của "bar" sẽ băm vào đây : $1$foo$te5SBM.7C25fFDu6bIRbX1
. Nếu một hacker bằng cách nào đó có thể có được bàn tay của mình trong tập tin này, tôi sẽ không biết mục đích của muối là gì, vì hàm băm ngược te5SBM.7C25fFDu6bIRbX
được biết là có chứa "foo".
Cảm ơn cho bất kỳ ánh sáng bất cứ ai có thể làm sáng tỏ về điều này.
EDIT : Cảm ơn sự giúp đỡ. Để tóm tắt những gì tôi hiểu, muối làm cho mật khẩu băm phức tạp hơn, do đó làm cho nó ít có khả năng tồn tại trong một bảng cầu vồng được tính toán trước. Điều tôi đã hiểu lầm trước đây là tôi đã giả sử một bảng cầu vồng tồn tại cho TẤT CẢ băm.