2009-11-18 34 views
12

Xin chào các bạn đã đọc về mật khẩu, nhưng điều này nghe có vẻ hơi lạ. Nhưng làm thế nào để lưu trữ và bảo đảm muối. Ví dụ trong một kiến ​​trúc lốp đa nói rằng tôi sử dụng GUID của máy khách để tạo ra muối của tôi sau đó người dùng bị hạn chế với một máy duy nhất nhưng nếu tôi sử dụng muối ngẫu nhiên, nó phải được lưu trữ ở đâu đó. Vài ngày trở lại tôi thấy một ứng dụng mẫu trong đó băm và muối được tạo ra trên hệ thống máy khách bất cứ khi nào người dùng mới được tạo và mật khẩu muối và băm được truyền tới máy chủ nơi chúng được lưu trữ trong máy chủ SQL. Nhưng nếu tôi làm theo phương pháp này và cơ sở dữ liệu bị xâm nhập mật khẩu và các giá trị muối cho mỗi mật khẩu sẽ có sẵn cho người X. Vì vậy, tôi nên một lần nữa muối/mã hóa các mật khẩu và nhận được muối trên phía máy chủ? Thực hành muối tốt nhất là gì?cách tốt nhất có thể để muối và lưu trữ muối là gì?

Trả lời

22

Lưu trữ muối không được mã hóa trong cơ sở dữ liệu bên cạnh mật khẩu băm không phải là vấn đề.

Mục đích của muối không phải là bí mật. Mục đích của nó là khác nhau đối với mỗi băm (tức là ngẫu nhiên), và đủ lâu để đánh bại việc sử dụng rainbow tables khi kẻ tấn công lấy tay của anh ta trên cơ sở dữ liệu.

Xem điều này excellent post về chủ đề của Thomas Ptacek.

chỉnh sửa @ZJR: ngay cả khi các muối đã hoàn toàn công khai, họ vẫn sẽ đánh bại lợi ích của bảng cầu vồng. Khi bạn có một muối và băm dữ liệu, tốt nhất bạn có thể làm để đảo ngược nó là brute force (với điều kiện là các hàm băm là mã hóa an toàn)

chỉnh sửa @ n10i: Xem bài viết wikipedia cho secure hash function. Đối với kích thước muối, việc thực hiện phổ biến bcrypt .gensalt() sử dụng 128 bit.

+0

Tôi muốn nói mục đích của muối không phải là để được ** ** công cộng, một trong hai. – ZJR

+0

bạn có thể giải thích "hàm băm có an toàn về mặt mã hóa" không. xin lỗi tôi mới đến mật mã. cũng trong u trả lời của bạn đề cập đến "đủ dài để đánh bại việc sử dụng các bảng cầu vồng" bao lâu muối nên được, đủ dài? – Neel

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