Tại nơi làm việc, chúng tôi có hai lý thuyết cạnh tranh về muối. Các sản phẩm tôi đang làm việc sử dụng một cái gì đó như tên người dùng hoặc số điện thoại để muối băm. Về cơ bản, một cái gì đó khác nhau đối với mỗi người dùng nhưng luôn có sẵn cho chúng tôi. Sản phẩm còn lại tạo ngẫu nhiên một muối cho mỗi người dùng và thay đổi mỗi khi người dùng thay đổi mật khẩu. Muối sau đó được mã hóa trong cơ sở dữ liệu.
Câu hỏi của tôi là nếu cách tiếp cận thứ hai có thực sự cần thiết? Tôi có thể hiểu từ góc độ lý thuyết thuần túy rằng nó an toàn hơn cách tiếp cận đầu tiên, nhưng từ quan điểm thực tế thì sao. Ngay bây giờ để xác thực người dùng, muối phải không được mã hóa và áp dụng cho thông tin đăng nhập.
Sau khi suy nghĩ về nó, tôi chỉ không thấy lợi ích bảo mật thực sự từ cách tiếp cận này. Việc thay đổi muối từ tài khoản này sang tài khoản khác, vẫn khiến ai đó cực kỳ khó khăn khi cố gắng thực hiện thuật toán băm ngay cả khi kẻ tấn công biết cách nhanh chóng xác định nó là gì cho mỗi tài khoản. Điều này xảy ra với giả định rằng mật khẩu đủ mạnh. (Rõ ràng việc tìm kiếm hàm băm chính xác cho một bộ mật khẩu có tất cả hai chữ số sẽ dễ dàng hơn đáng kể so với việc tìm hàm băm chính xác của mật khẩu có 8 chữ số). Tôi có sai trong logic của mình, hay có điều gì đó mà tôi đang thiếu?
EDIT: Được rồi, vì vậy đây là lý do tại sao tôi nghĩ rằng việc mã hóa muối thực sự là một cuộc tranh luận. (lemme biết nếu tôi đang đi đúng hướng).
Đối với lời giải thích sau đây, chúng tôi sẽ giả định rằng mật khẩu luôn có 8 ký tự và muối là 5 và tất cả mật khẩu đều bao gồm các chữ cái viết thường (nó chỉ làm cho phép toán dễ dàng hơn).
Có một loại muối khác nhau cho mỗi mục nhập có nghĩa là tôi không thể sử dụng cùng một bảng cầu vồng (thực sự về mặt kỹ thuật, tôi có thể làm được nếu tôi có một kích thước đủ lớn, nhưng hãy bỏ qua điều đó vào lúc này). Đây là chìa khóa thực sự cho muối từ những gì tôi hiểu, bởi vì để bẻ khóa mọi tài khoản, tôi phải phát minh lại bánh xe để nói cho từng tài khoản. Bây giờ nếu tôi biết cách áp dụng muối chính xác cho mật khẩu để tạo hàm băm, tôi sẽ làm điều đó vì một muối thực sự chỉ mở rộng độ dài / độ phức tạp của cụm từ được băm. Vì vậy, tôi sẽ cắt số lượng các kết hợp có thể mà tôi sẽ cần tạo để "biết" tôi có mật khẩu + muối từ 13 ^ 26 đến 8 ^ 26 vì tôi biết muối là gì. Bây giờ điều đó làm cho nó dễ dàng hơn, nhưng vẫn thực sự khó.
Vì vậy, hãy mã hóa muối. Nếu tôi biết muối được mã hóa, tôi sẽ không thử và giải mã (giả sử tôi biết nó có đủ mức mã hóa) nó trước. Tôi sẽ bỏ qua nó. Thay vì cố gắng tìm ra cách giải mã nó, quay lại ví dụ trước, tôi sẽ chỉ tạo một bảng cầu vồng lớn hơn chứa tất cả các khóa cho 13 ^ 26. Không biết muối chắc chắn sẽ làm tôi chậm lại, nhưng tôi không nghĩ nó sẽ thêm nhiệm vụ hoành tráng là cố gắng bẻ khóa mã hóa muối trước. Đó là lý do tại sao tôi không nghĩ nó đáng giá. Suy nghĩ?
Đây là liên kết mô tả mật khẩu sẽ giữ được bao lâu khi bị tấn công vũ phu: http://www.lockdown.co.uk/?pg=combi