it-swarm-vi.com

Làm thế nào để băm mật khẩu an toàn?

Nếu tôi băm mật khẩu trước khi lưu trữ chúng trong cơ sở dữ liệu của mình, điều đó có đủ để ngăn chặn chúng được phục hồi bởi bất kỳ ai không?

Tôi nên chỉ ra rằng điều này chỉ liên quan đến truy xuất trực tiếp từ cơ sở dữ liệu chứ không phải bất kỳ loại tấn công nào khác, chẳng hạn như đánh cắp trang đăng nhập của ứng dụng, keylogger trên máy khách, và dĩ nhiên cao su hóa mật mã (hoặc ngày nay chúng ta nên gọi nó là " Chocolate Cryptanalysis ").

Tất nhiên mọi hình thức băm sẽ không ngăn được các cuộc tấn công đó.

850
AviD

bcrypt được cho là chậm hơn trên GPU, điều này khiến cho việc vũ phu trở nên chậm hơn. Tuy nhiên, với sự phát triển của phần cứng máy tính, chúng ta không nên chỉ dựa vào khó khăn trong việc thực hiện một thuật toán băm cụ thể trên phần cứng cụ thể.

Thay vào đó, bạn có thể tùy ý tăng chi phí cho việc bẻ khóa băm bằng cách sử dụng "hệ số công việc/chi phí biến đổi" (đôi khi còn được gọi là "vòng") mà một số hàm băm hỗ trợ. Trong số đó có bcrypt và SHA-512.

Hàm crypt() của Glibc cho phép đặc tả các vòng cho một số thuật toán băm. Ví dụ: hệ số chi phí là 100000 đối với SHA-512 tạo ra thế hệ (và do đó là vũ phu) của hàm băm chậm hơn khoảng 4 lần so với hệ số chi phí 08 cho bcrypt. Điều này có thể được xác nhận bằng cách sử dụng chương trình giải băm như hashcat.

Nếu bạn cho rằng tại một thời điểm nào đó, mật khẩu và muối của bạn sẽ bị đánh cắp và những kẻ tấn công sẽ sử dụng ASIC phần cứng để đánh bại chúng, bạn chỉ cần tăng hệ số công việc để vẫn khiến chúng quá tốn kém, trong khi không làm quá tải CPU máy chủ của bạn với xác thực người dùng thông thường.

Tầm quan trọng của mật khẩu dài và ngẫu nhiên được áp dụng tuy nhiên.

Tôi vừa viết một bài đăng trên blog về các chi tiết.

0
Michael Franzl