2009-06-16 24 views
9

Chủ đề về cách lưu trữ mật khẩu người dùng trang web trong bảng đã xuất hiện nhiều lần trên SO và lời khuyên chung là lưu trữ băm mật khẩu, cuối cùng là mã băm HMAC. Điều này làm việc tốt cho xác thực cơ bản hoặc để xác thực dựa trên biểu mẫu (thực sự giống nhau). Vấn đề của tôi là tôi phải cung cấp xác thực Digest, nhằm vào các công cụ tự động kết nối với dịch vụ của tôi. Tôi đã xem xét vấn đề này và như tôi thấy nó, băm duy nhất tôi có thể lưu trữ là HA1 part of the Digest: giá trị băm của username : realm : password. Bằng cách này tôi có thể xác nhận cả Basic/forms và Digest.Lưu trữ mật khẩu trong bảng và xác thực thông tin

Vấn đề của tôi là tôi không thấy bất kỳ lợi ích nào khi làm như vậy. Bây giờ thực sự kẻ tấn công không thể sử dụng xác thực cơ bản hoặc dựa trên biểu mẫu nếu anh ta giữ bảng mật khẩu của tôi (vì anh ta chỉ có giá trị băm và anh ta cần gửi mật khẩu rõ ràng), nhưng không có gì ngăn cản anh ta sử dụng xác thực Digest và đưa ra phản hồi hợp lệ đối với thử thách dịch vụ của tôi: anh ta chỉ đơn giản bắt đầu từ HA1 được tính trước từ bảng và tiếp tục tạo ra phản hồi từ đó (ví dụ: điều tương tự tôi muốn làm để xác thực người dùng trên back-end).

Tôi có thiếu gì đó không? Liệu việc bổ sung các yêu cầu Digest về cơ bản có làm cho việc lưu trữ các mật khẩu băm không phải là một-op từ an ninh pov, một obfuscation tốt nhất?

Trả lời

7

Lý do tôi sử dụng băm được tính trước không phải là sự bảo vệ chống lại các cuộc tấn công, mà là để bảo mật quyền riêng tư của người dùng.

Kẻ tấn công thực sự có thể xác thực, nhưng anh ấy không thể (dễ dàng) thấy mật khẩu của người dùng quý giá của tôi và thỏa hiệp các dịch vụ khác mà họ đang sử dụng, v.v.

Các vấn đề liên quan