it-swarm-vi.com

Tại sao mọi người vẫn sử dụng / khuyên dùng MD5 nếu nó đã bị bẻ khóa từ năm 1996?

Đây vẫn là cách băm mật khẩu thường được đề xuất, ngay cả khi sự không an toàn của nó đã được chứng minh vào năm 1996:

Do đó, chúng tôi đề nghị rằng trong tương lai MD5 sẽ không còn được triển khai trong các ứng dụng như sơ đồ ký hiệu, trong đó yêu cầu phải có chức năng băm chống va chạm. Theo kiến ​​thức hiện tại của chúng tôi, các khuyến nghị tốt nhất cho các lựa chọn thay thế cho MD5 là SHA-1 và RIPEMD-160.

(Trạng thái của MD5 sau một cuộc tấn công gần đây, CryptoBytes, Phòng thí nghiệm RSA, TẬP 2, SỐ 2 - MÙA H 1996 1996)

Ngay cả sau nghiên cứu này và tất cả các bài báo sắp tới về lỗi của nó, nó đã được đề xuất là chức năng băm mật khẩu trong các ứng dụng web, kể từ đó.

Nó thậm chí còn được sử dụng trong một số chữ ký số Chứng thực của Cơ quan Chứng nhận (theo http://rmhrisk.wpengine.com/?p=60 )

Lý do là gì, tại sao thuật toán tiêu hóa thông điệp này chưa bị cấm vì mục đích bảo mật?


Liên kết, tôi mất vài phút để tìm những liên kết đó

57
Marek Sebera

Để bổ sung cho câu trả lời hay từ @DW: cho việc băm mật khẩu, MD5 không bị hỏng hơn bất kỳ hàm băm nào khác (nhưng dù sao cũng không sử dụng nó) .


Hình ảnh đầy đủ: MD5 là một hàm băm mật mã , như vậy, dự kiến ​​sẽ đáp ứng ba đặc điểm:

  • Khả năng chống lại các dự đoán: đã cho x, không thể tìm thấy m như vậy đó MD5 (m) = x.
  • Khả năng chống lại các tiền đề thứ hai: đã cho m, không thể tìm thấy m ' khác biệt với m và sao cho MD5 (m) = MD5 (m ').
  • Khả năng chống va chạm: không thể tìm thấy m m ', khác biệt với nhau và sao cho MD5 (m) = MD5 (m ').

MD5 bị phá vỡ hoàn toàn liên quan đến va chạm, nhưng không dành cho tiền đề hoặc tiền giả thứ hai. Hơn nữa, cuộc tấn công năm 1996 (của Dobbertin) hoàn toàn không phá vỡ MD5; đó là một "sự va chạm vào chức năng nén", tức là một cuộc tấn công vào một trong các yếu tố bên trong của MD5, nhưng không phải là chức năng đầy đủ. Các nhà mật mã học đã coi nó như một lá cờ cảnh báo, và họ đã đúng vì cuộc tấn công va chạm thực tế được xuất bản năm 2004 (bởi Wang) được xây dựng từ những phát hiện của Dobbertin. Nhưng MD5 đã bị hỏng chỉ trong năm 2004, không phải năm 1996 và đó là một tấn công va chạm.

Va chạm không liên quan đến bảo mật băm mật khẩu. Hầu hết các cách sử dụng hàm băm để băm mật khẩu phụ thuộc vào khả năng chống tiền mã hóa hoặc vào các thuộc tính khác (ví dụ: hàm băm hoạt động tốt như thế nào khi được sử dụng trong HMAC , một cái gì đó mà không thể giảm xuống bất kỳ thuộc tính nào ở trên). MD5 thực sự đã bị "suy yếu" liên quan đến tiền giả, nhưng chỉ theo một cách lý thuyết, bởi vì chi phí tấn công vẫn còn đắt hàng tỷ lần so với thực tế (vì vậy MD5 không "thực sự" bị phá vỡ liên quan đến tiền giả, không theo cách thực tế).

Nhưng dù sao cũng không sử dụng MD5 . Không phải vì bất kỳ điểm yếu về mật mã nào, mà vì MD5 là không được bảo vệ rất nhanh. Đó chính xác là những gì bạn không muốn trong chức năng băm mật khẩu. Những người "khuyên dùng MD5" để băm mật khẩu chỉ không biết gì hơn và họ là một minh chứng cho một Sự thật mà bạn nên luôn luôn ghi nhớ: không phải mọi thứ bạn tìm thấy trên Internet đều đúng và đáng tin cậy. Các giải pháp tốt hơn cho băm mật khẩu đã được biết đến, và đã được sử dụng và triển khai trong hơn một thập kỷ nay. Xem câu trả lời này để biết chi tiết và con trỏ.

76
Thomas Pornin

Bạn có ý nghĩa gì "bị cấm"? Ai sẽ "cấm" sử dụng MD5? Không giống như chúng ta có một số Cảnh sát mật mã quốc tế, những người bắt giữ những người sử dụng ROT13 và các chương trình tiền điện tử không an toàn khác.

Hoặc, nghiêm trọng hơn một chút: các nhà mật mã học đã khuyến nghị rằng các hệ thống mới nên tránh MD5 và họ khuyên rằng các hệ thống hiện tại nên di chuyển khỏi MD5. Tôi không biết những gì bạn nghĩ nhiều hơn về mật mã học có thể làm về điều này.

Bạn cho rằng MD5 là "cách băm mật khẩu thường được đề xuất", nhưng bạn không cung cấp bằng chứng nào cho khiếu nại này. Tôi không nghĩ rằng tuyên bố là chính xác. Đó không phải là kinh nghiệm của tôi.

Điểm mấu chốt là cộng đồng mật mã is đã nói khá rõ ràng, với một giọng nói, về chủ đề này và hầu hết mọi người đang đã di chuyển khỏi MD5. Các trường hợp MD5 vẫn được sử dụng là ngoại lệ, không phải là tiêu chuẩn.

Chỉnh sửa (6/17): Tôi thấy rằng bạn đã thêm một số liên kết đề cập đến việc sử dụng MD5 để băm. Tất cả những gì họ chứng minh là một số người tôi chưa bao giờ nghe nói bị nhầm lẫn. Vậy thì sao? Có lẽ bạn nên nghi ngờ khi nhận lời khuyên từ những người chưa tạo được uy tín tích cực trong cộng đồng bảo mật/mật mã. Và tôi không hiểu làm thế nào bạn có thể chỉ trích cộng đồng bảo mật/mật mã về việc một số người không ở trong cộng đồng bị nhầm lẫn. Chính xác thì chúng ta phải làm gì? Chúng tôi đã làm mọi thứ có thể để mở rộng kiến ​​thức về cách làm đúng. Tôi cảm thấy rằng bạn đang thực sự đổ lỗi cho những người sai.

Dù sao, để trả lời câu hỏi của bạn về lý do tại sao một số người vẫn khuyên dùng MD5: ừm, có lẽ là vì những người đó không biết gì hơn. Tôi không biết nhiều hơn bất cứ ai có thể nói về chủ đề này, hoặc những gì bạn mong đợi bất cứ ai nói.

28
D.W.

Tôi nghĩ những gì bạn đang thấy là cái đuôi dài của web. Tôi có thể tìm thấy các bài viết từ năm 2006 đề xuất MD5 cho việc băm mật khẩu (ví dụ: http://www.pixel2life.com/publish/tutorials/118/under Hiểu_md5_password_encoding / ) - vẫn còn 10 năm sau ngày tham chiếu của bạn.

Tuy nhiên, chúng tôi đang nói về thời gian để có được thứ gì đó từ nghiên cứu tiên tiến trong các tạp chí mật mã được đánh giá ngang hàng để khuyến nghị thực hành giữa những người hành nghề hàng ngày không đọc các tạp chí mật mã và thậm chí không phải là chuyên gia trong lĩnh vực đó. Điều có lẽ đã xảy ra là bởi vì vào năm 1990 mọi người "biết" rằng MD5 tốt cho mật khẩu, họ đã nói với mọi người rằng MD5 tốt cho mật khẩu. Từ cuối những năm 1990, một số người đã nói rằng MD5 không tốt cho mật khẩu, nhưng hầu hết mọi người "biết" nó tốt cho mật khẩu và đây vẫn là những gì họ khuyên người khác.

Ngày nay, có một lượng người đủ lớn "biết" rằng bcrypt tốt cho mật khẩu mà bạn bắt đầu thấy những đề xuất đó, nhưng các bài báo nói rằng MD5 tốt cho mật khẩu chưa bị phân rã khỏi các chỉ số của công cụ tìm kiếm. Theo thời gian, họ sẽ.

Điều đó có nghĩa là trong một thập kỷ nữa, bạn sẽ quay lại đây và đặt câu hỏi "tại sao mọi người vẫn khuyên bạn nên sử dụng hệ số công việc bcrypt là 10 khi điều này Tạp chí nói rằng bạn nên sử dụng ít nhất 150? "...

Poul Henning-Kamp ban đầu đã chuyển hàm UNIX crypt () từ DES sang MD5. Anh ấy giải thích ở đây rằng thực tế mọi người đang sử dụng MD5 chứng tỏ rằng anh ấy đã không thành công mô tả những gì anh ta đã cố gắng làm: làm cho việc băm mật khẩu trở nên phức tạp hơn, không cài đặt MD5 như một shibboleth.

8
user185

Bạn có một số cách sử dụng MD5

Kiểm tra tính toàn vẹn

Kiểm tra xem tệp bạn đã tải xuống hoặc nhận là bản gốc bằng cách kiểm tra hàm băm của tệp. Nó đã được chỉ ra rằng bạn có thể dễ dàng tạo một tệp có cùng tổng kiểm tra.

Va chạm trong MD5 là dễ sản xuất . MD5 không nên được sử dụng cho mục đích đó.

Mọi người vẫn đề xuất tổng kiểm tra MD5 trong khi tải xuống iso và công cụ nhưng thường cũng cung cấp SHA tổng kiểm tra. Điều này có thể được giải thích vì MD5 nhanh hơn rất nhiều và thường được triển khai.

Kiểm tra mật khẩu

Thay vì lưu trữ mật khẩu trong văn bản rõ ràng, bạn lưu trữ hàm băm của mật khẩu. Một số trang web vẫn sử dụng MD5 để làm điều đó. Vấn đề ở đây không phải là tìm va chạm mà là kiểm tra bảng Rainbow hoặc cơ sở dữ liệu khổng lồ về tổng kiểm tra MD5.

Vì bạn có thể tạo ra rất nhanh hàng triệu tổng kiểm tra MD5, bạn có thể bắt buộc sử dụng mật khẩu trên PC của chính mình. Bạn không nên sử dụng MD5 để băm mật khẩu của mình vì lý do đó, nhưng chủ yếu, bạn nên thêm một muối .

Nếu bạn có một mật khẩu rất phức tạp (dài với các ký tự đặc biệt) và một loại muối phức tạp duy nhất cho mỗi mật khẩu được lưu trữ, thì đó không phải là vấn đề quá lớn đối với bạn khi sử dụng MD5. Tôi không nói rằng bạn nên (bạn không nên) nhưng đó không phải là vấn đề bảo mật lớn khi sử dụng MD5 nếu mật khẩu sẽ khó bị ép buộc và việc sử dụng bảng Rainbow bị ngăn chặn bởi muối. Tất nhiên, trên trang web của bạn, không dễ dàng (và được đánh giá cao) để buộc người dùng phải có mật khẩu phức tạp, vì vậy nếu người dùng đăng ký 12345, bất kể bạn sử dụng chức năng băm nào, nó sẽ bị hỏng.

Lý do mọi người vẫn sử dụng đó có thể là vì nó vẫn là hàm băm được biết đến nhiều nhất và vẫn được chấp nhận cách đây vài năm. Những người không có nhiều kiến ​​thức về tiền điện tử có thể sử dụng nó.

6
Martin Trigaux

Tôi không nghĩ rằng nó được khuyến khích. Wikipedia nói rằng MD5 được coi là bị hỏng và SHA-2 hoặc SHA gia đình được khuyến nghị thay thế nó. Ngoài ra, hãy xem Devise , a Ruby đá quý xử lý ủy quyền. Nó có một loại mã hóa khác.

3
Travis Pessetto

Ngay cả sau nghiên cứu này và tất cả các bài báo sắp tới về lỗi của nó, nó đã được đề xuất là băm mật khẩ chức năng trong các ứng dụng web, kể từ đó.

Đúng và?

Băm mật khẩu chỉ là lãng phí thời gian.

MD5 ^ n (MD5 lặp n lần) cũng tốt như SHA1 ^ m (đối với m như time(MD5^n) >= time(SHA1^m)) cho - lãng phí thời gian.

Không ai đã đề xuất bất kỳ cách nào để tính MD5 ^ n theo cách nhanh hơn so với hàm MD5 o MD5^(n-1) rõ ràng. Thậm chí không có sự khởi đầu của một ý tưởng để làm điều đó.

Không có gì bị hỏng ở đây.

Đối với lãng phí thời gian.space, bạn nên xem xét scrypt.

2
curiousguy

Đây là thông tin chính thức về MD5 - MD5 dễ bị tấn công va chạm Để bảo mật cao hơn SHA-2 nên được xem xét. Không ai ngăn người dùng sử dụng MD5, nhưng không cho dữ liệu bạn muốn giữ riêng tư.

Hiệu suất của thuật toán băm

Như được hiển thị trong sơ đồ "Hiệu suất của thuật toán băm", SHA256 nhanh hơn MD5.

Đây là một tài nguyên tốt để xem xét, tác giả xem xét LinkedIn bị rò rỉ mật khẩu - queue (.) Acm (.) Org/detail.cfm? Id = 2254400 & ref = fullrss, cũng chỉ ra một số cách về cách bảo mật mật khẩu.

1
user1652382

Vấn đề băm mật khẩu và sử dụng bảng Rainbow là do tính bảo mật của máy chủ web bị khai thác thông qua điểm yếu cơ bản.

Đầu tiên là tất cả các trang web này có ý định cung cấp một thử nghiệm đơn giản để xem mật khẩu của bạn có an toàn không ... Ummm cũng cho phép xem các trang web này là lừa đảo và tất cả những người đang truy cập vào các trang web này đang cho ăn một bảng Rainbow. Đó là một phần của vấn đề.

Thứ hai là những người sử dụng dịch vụ lưu trữ web trong đó đối tượng sẽ cào tiền và quên mất bảo mật máy chủ web, những máy chủ này nên được đặt lên tường và bắn IMHO, một phần bảo mật của thông tin đăng nhập của người dùng đến từ bảo mật của một máy chủ web và các công nghệ cơ bản được cập nhật để ngăn chặn việc khai thác đã biết được sử dụng.

Thứ ba là một khi mọi người nhận được vào cái đầu dày của mình rằng trong khi MD5 không có khả năng chống va chạm hoặc tôi thích mạnh mẽ nhất có thể, thì tài khoản người dùng vẫn khó bị hack trừ khi bạn có Máy chủ web chạy hệ thống có thể khai thác , mã hóa web của bạn không mạnh mẽ và bạn phơi bày bản thân bằng cách sử dụng một trang web tuyên bố để kiểm tra bảo mật mật khẩu của bạn.

Đối với phần lớn MD5 +, giá trị Salt là bảo mật đầy đủ cho người dùng đăng nhập trên diễn đàn web miễn là hệ thống và phần mềm được đề cập trước đó không thể khai thác được. Khi bạn có một hệ thống bị khai thác điểm yếu, việc chạy truy vấn cho các giá trị băm đã biết không sử dụng hệ thống tạo muối sẽ làm lộ điểm yếu thứ tư ... người dùng cuối.

Thứ tư là người dùng cuối, bảo mật web của bạn cuối cùng chỉ mạnh bằng liên kết yếu nhất và đối với nhiều người họ sẽ thấy người dùng cuối cũng như vậy và quản trị viên cần nhớ rằng họ là người dùng cuối của hệ thống và cũng dễ bị tổn thương như nhau xâm phạm bảo mật hệ thống bằng cách sử dụng chương trình hoặc phần mềm cẩu thả, dễ bị hỏng, bảo mật mật khẩu kém và cũng không thể thay đổi thông tin đăng nhập ADMIN hoặc sử dụng phần mềm mà ngày nay vẫn khăng khăng có tên đăng nhập quản trị viên là Quản trị viên và cũng sử dụng tài khoản siêu người dùng.

Vì vậy, không cần phải nói, vì vậy tôi sẽ nói dù sao đi nữa, MD5 không bị bẻ khóa, nó được thiết kế ngược thông qua người dùng yếu, phần mềm yếu và người dân không có khả năng hiểu công nghệ. Nếu MD5 bị bẻ khóa, thì SHA và AES, v.v ...

0
Mark Giblin