CẬP NHẬT: Gần đây tôi đã học được từ câu hỏi này rằng trong toàn bộ cuộc thảo luận bên dưới, tôi (và tôi chắc chắn những người khác cũng vậy) hơi khó hiểu: Cái mà tôi vẫn gọi là bảng cầu vồng, trên thực tế được gọi là bảng băm. Bàn cầu vồng là những sinh vật phức tạp hơn và thực sự là một biến thể của Hellman Hash Chains. Mặc dù tôi tin rằng câu trả lời vẫn giống nhau (vì nó không liên quan đến phân tích mật mã), một số cuộc thảo luận có thể hơi sai lệch.
Câu hỏi: " Bảng cầu vồng là gì và chúng được sử dụng như thế nào? "
Thông thường, tôi luôn khuyên bạn nên sử dụng giá trị ngẫu nhiên mạnh về mặt mật mã dưới dạng muối, được sử dụng với các hàm băm (ví dụ: đối với mật khẩu), chẳng hạn như để bảo vệ khỏi các cuộc tấn công Rainbow Table.
Nhưng liệu nó có thực sự cần thiết về mặt mật mã để muối là ngẫu nhiên? Bất kỳ giá trị duy nhất nào (duy nhất cho mỗi người dùng, ví dụ: userId) có đủ về vấn đề này không? Trên thực tế, nó sẽ ngăn việc sử dụng một Bảng cầu vồng duy nhất để bẻ khóa tất cả (hoặc hầu hết) mật khẩu trong hệ thống ...
Nhưng liệu thiếu entropy có thực sự làm suy yếu sức mạnh mật mã của các hàm băm không?
Lưu ý, tôi không hỏi về lý do tại sao sử dụng muối, cách bảo vệ nó (không cần phải như vậy), sử dụng một hằng số băm (không) hoặc loại hàm băm nào để sử dụng.
Chỉ là muối có cần entropy hay không.
Cảm ơn tất cả các câu trả lời cho đến nay, nhưng tôi muốn tập trung vào các lĩnh vực tôi (một chút) ít quen thuộc hơn. Chủ yếu là ý nghĩa đối với phân tích mật mã - Tôi đánh giá cao nhất nếu bất kỳ ai có một số đầu vào từ PoV toán học tiền điện tử.
Ngoài ra, nếu có các vectơ bổ sung chưa được xem xét, thì đó cũng là đầu vào tuyệt vời (xem điểm @Dave Sherohman trên nhiều hệ thống).
Ngoài ra, nếu bạn có bất kỳ lý thuyết, ý tưởng hoặc phương pháp hay nhất nào - vui lòng sao lưu điều này bằng bằng chứng, kịch bản tấn công hoặc bằng chứng thực nghiệm. Hoặc thậm chí là những cân nhắc hợp lệ đối với những đánh đổi có thể chấp nhận được ... Tôi đã quen thuộc với Phương pháp hay nhất (viết hoa B vốn P) về chủ đề này, tôi muốn chứng minh điều này thực sự mang lại giá trị gì.
CHỈNH SỬA: Một số câu trả lời thực sự tốt ở đây, nhưng tôi nghĩ như @Dave nói, nó đi xuống Bảng Cầu vồng cho các tên người dùng phổ biến ... và các tên có thể ít phổ biến hơn. Tuy nhiên, điều gì sẽ xảy ra nếu tên người dùng của tôi là duy nhất trên toàn cầu? Không nhất thiết là duy nhất cho hệ thống của tôi, nhưng cho mỗi người dùng - ví dụ: địa chỉ email.
Sẽ không có động cơ để xây dựng RT cho một người dùng (như @Dave đã nhấn mạnh, muối không được giữ bí mật) và điều này sẽ vẫn ngăn chặn việc phân cụm. Chỉ có một vấn đề là tôi có thể có cùng một email và mật khẩu trên một trang web khác - nhưng dù sao thì Salt cũng không ngăn được điều đó.
Vì vậy, nó quay trở lại với phân tích mật mã - entropy có cần thiết hay không? (Suy nghĩ hiện tại của tôi là nó không cần thiết từ quan điểm phân tích mật mã, nhưng nó là từ những lý do thực tế khác.)