it-swarm-vi.com

Lợi thế của việc sử dụng PBKDF2 so với SHA256 để tạo khóa mã hóa AES từ cụm mật khẩu là gì?

Tôi đang xem xét hai phần mềm tương đương có thể mã hóa dữ liệu trên đĩa bằng cụm mật khẩu. Một người sử dụng PBKDF2 để tạo khóa mã hóa từ cụm mật khẩu, trong khi người kia sử dụng hai vòng SHA256. Có gì khác biệt? Là một trong những ưa thích hơn khác?

82
Andrey Fedorov

Sự khác biệt là:

  • PBKDF2 theo thiết kế là chậm
  • SHA256 là một hàm băm tốt; nó không chậm, theo thiết kế

Vì vậy, nếu ai đó đã thử nhiều cụm từ có thể khác nhau, nói toàn bộ từ điển, sau đó mỗi từ có một chữ số được nối thêm, thì mỗi từ có viết hoa khác nhau, sau đó hai từ trong từ điển, v.v. thì quá trình này sẽ chậm hơn nhiều với PBKDF2 .

Nhưng nếu cụm mật khẩu của bạn thực sự an toàn, rất dài, khá ngẫu nhiên và nằm ngoài tầm với của bất kỳ quy trình liệt kê hệ thống nào, thì nó không có sự khác biệt thực tế nào, ngoại trừ việc kẻ tấn công có thể tiêu tốn nhiều tài nguyên hơn để cố gắng phá vỡ cụm mật khẩu của bạn (hoặc có thể ít hơn nếu họ quyết định từ bỏ sớm hơn).

93
curiousguy

Các thuật toán băm mật khẩu như PBKDF2, bcrypt và scrypt được sử dụng cho mật khẩu và có mục đích chậm. Các thuật toán băm mật mã là nhanh chóng. Nhanh là tốt trong hầu hết các tình huống, nhưng không phải ở đây. Làm chậm thuật toán (thường bằng cách lặp) làm cho công việc của kẻ tấn công khó khăn hơn nhiều. Băm mật khẩu cũng thêm một giá trị muối vào mỗi hàm băm để làm cho nó trở nên duy nhất để kẻ tấn công không thể tấn công nhiều băm cùng một lúc.

Những kẻ tấn công sẽ cố gắng khôi phục mật khẩu bằng cách thực hiện các cuộc tấn công từ điển và vũ phu trong đó chúng đoán mật khẩu bằng cách băm chúng và so sánh chúng với mật khẩu được lưu trữ để xác định xem chúng có khớp hay không. Với các hàm băm mật mã thông thường (ví dụ MD5, SHA256), kẻ tấn công có thể đoán hàng tỷ mật khẩu mỗi giây. Với PBKDF2, bcrypt hoặc scrypt, kẻ tấn công chỉ có thể thực hiện vài nghìn lần đoán mỗi giây (hoặc ít hơn, tùy thuộc vào cấu hình).

Điều này có nghĩa là mọi mật khẩu mạnh hơn nhiều nếu PBKDF2, bcrypt hoặc scrypt được sử dụng thay vì hàm băm thông thường.

Ngoài ra, PBKDF2, bcrypt và scrypt đều sử dụng các giá trị "muối" ngẫu nhiên lớn để đảm bảo rằng mỗi mật khẩu của người dùng được băm duy nhất. Tấn công băm mật khẩu 100 lần sẽ lâu hơn 100 lần so với tấn công một hàm băm. Tấn công một triệu sẽ mất một triệu lần lâu hơn, v.v. Với SHA256, kẻ tấn công có thể cố gắng bẻ khóa hàng ngàn hoặc hàng triệu băm cùng một lúc với rất ít làm chậm.

Bạn phải luôn luôn sử dụng hàm băm mật khẩu hoặc "công thức phái sinh chính" cho mật khẩu thay vì băm mật mã thông thường. Rất khó để chọn mật khẩu đủ mạnh để chống lại nỗ lực bẻ khóa chuyên dụng nếu chúng được băm bằng thứ gì đó như SHA hoặc MD5. Với PBKDF2, bcrypt hoặc mật mã, mật khẩu có thể ngắn như 7 hoặc 8 ký tự nhưng với MD5 hoặc SHA, chúng cần ít nhất 13-14 ký tự.

52
Steven Alexander

Có những câu trả lời hay ở trên, nhưng lý do ngay lập tức là sha256 không được muối và hai vòng rất yếu theo cách mà mật khẩu 4 chữ số yếu, tính toán:

  • Một thiết lập GPU hiện đại có thể dễ dàng tính toán tất cả các giá trị băm sha256 không chữ số 4 chữ số (tính bằng mili giây)
10
Bradley Kreider