2011-02-07 30 views
6

Tôi có một khách hàng đang phân phối các tệp nhị phân lớn trong nội bộ. Họ cũng đi qua md5 checksum của các tập tin và rõ ràng xác minh các tập tin chống lại kiểm tra trước khi sử dụng như là một phần của công việc của họ.Có khả năng là md5 tổng kiểm tra dương tính giả?

Tuy nhiên, họ cho rằng "thường" họ đang gặp sự cố tham nhũng trong các tệp nơi md5 vẫn cho biết tệp đó là tốt.

Mọi thứ tôi đã đọc đều cho rằng điều này không nên xảy ra.

Điều này có khả năng xảy ra không? Một thuật toán băm khác có cung cấp kết quả tốt hơn không? Tôi có nên thực sự xem xét các vấn đề quy trình như họ yêu cầu kiểm tra tổng kiểm tra, nhưng không thực sự làm việc đó không?

NB, tôi chưa biết điều gì "thường" có nghĩa là trong ngữ cảnh này. Họ đang xử lý hàng trăm tệp mỗi ngày. Tôi không biết đây có phải là sự xuất hiện hàng ngày, hàng tháng hay hàng năm hay không.

+5

Yêu cầu họ cung cấp ví dụ về tệp "bị hỏng" và bản gốc "tốt". –

+1

Có khả năng tổng md5 được tính trên một tệp bị hỏng hoặc tham nhũng xảy ra sau khi tổng số được tính toán? Để biết chắc chắn, hãy lấy gợi ý của Anon và lấy một ví dụ về hai tệp có cùng một kiểm tra. – BMitch

+0

Vì vậy, kể từ đó, bạn đã xem xét ý tưởng đồng bộ hóa bittorrent chưa? getsync.com] – dlamblin

Trả lời

9

MD5 là hàm băm mật mã 128 bit, do đó các thông điệp khác nhau sẽ được phân phối khá tốt trên không gian 128 bit. Điều đó có nghĩa là hai tệp (không bao gồm các tệp được xây dựng cụ thể để đánh bại MD5) sẽ có 1 trong 2^128 cơ hội va chạm. Nói cách khác, nếu một cặp tệp được so sánh sau mỗi nano giây, nó sẽ không xảy ra.

+1

Vâng, bạn biết rằng nó đã xảy ra rồi phải không? Tất nhiên những va chạm đó đã bị kích động (một người đang cố gắng tạo ra hai tập tin khác nhau có cùng MD5 checksum), nhưng điều này không thay đổi thực tế là có một số tập tin được biết đến nhân loại (và chúng cũng nằm ngoài tự nhiên) sản xuất chính xác cùng một MD5 checksum, mặc dù chúng chứa dữ liệu hoàn toàn khác nhau. – Mecki

+2

@Mecki: Bạn đã đọc phần mà tôi đã nói "(không bao gồm các tệp được xây dựng đặc biệt để đánh bại MD5)"? – recursive

+0

Nhưng bạn không bao giờ chỉ có hai tập tin, bạn có một tập hợp các tập tin và bạn không muốn bất kỳ hai để băm để cùng một giá trị. Xác suất được cho là sqrt (2^128) là 2^64. Bạn có thể lưu trữ khoảng 4,3 tỷ tệp nếu bạn đã sử dụng băm 64 bit hoặc 280 nghìn tỷ tệp với hòa bình MD5. Khi bạn đã đạt đến 2^128 tệp, bạn được đảm bảo rằng tệp tiếp theo của bạn sẽ va chạm, nếu bạn đã quản lý để tránh va chạm đến điểm đó; mà bạn không thể có, thực tế. – dlamblin

5

Nếu tệp bị hỏng, thì xác suất tệp bị hỏng có cùng kiểm tra md5 như tệp không bị hỏng là 1: 2^128. Nói cách khác, nó sẽ xảy ra gần như là "thường xuyên" hơn bao giờ hết. Đó là thiên văn có nhiều khả năng là khách hàng của bạn là misreporting những gì thực sự xảy ra (như họ đang tính toán băm sai)

4

Âm thanh như một lỗi trong việc sử dụng MD5 (có thể họ đang MD5-ing các tập tin sai), hoặc một lỗi trong thư viện mà họ đang sử dụng. Ví dụ, một chương trình MD5 cũ hơn mà tôi đã sử dụng một lần không xử lý các tệp trên 2GB.

This question cho thấy rằng, trung bình, bạn nhận được xung đột trung bình cứ 100 năm một lần nếu bạn tạo ra 6 tỷ tệp mỗi giây, do đó, rất khó xảy ra.

3

Điều này có khả năng xảy ra không?

Không, cơ hội của một tham nhũng ngẫu nhiên gây ra cùng một checksum là 1 trong 2 hoặc 3,40 × 10. Con số này đặt 1 trong một tỷ (10) cơ hội để xấu hổ.

Thuật toán băm khác có mang lại kết quả tốt hơn không?

Có thể là không. Mặc dù MD5 đã bị phá vỡ vì va chạm kháng chiến chống lại tấn công, nó là tốt đối với tham nhũng ngẫu nhiên và một tiêu chuẩn phổ biến để sử dụng.

Tôi có nên thực sự xem xét các sự cố về quy trình như yêu cầu kiểm tra tổng kiểm tra, nhưng không thực sự làm việc đó không?

Có lẽ, nhưng xem xét tất cả các điểm có thể xảy ra vấn đề:

  1. tập tin bị hỏng trước khi thế hệ MD5
  2. tập tin bị hỏng sau khi xác minh MD5.
  3. chương trình MD5 hoặc khuôn khổ hỗ trợ có một lỗi
  4. điều hành lạm dụng (không chủ ý, ví dụ như chạy chương trình MD5 trong hồ sơ sai)
  5. điều hành lạm dụng (cố ý, ví dụ như bỏ qua bước xác minh)

NẾU nó là cuối cùng, sau đó một trong những suy nghĩ cuối cùng là phân phối các tập tin trong một định dạng wrapper buộc các nhà điều hành để unwrap tập tin, nhưng unwrapping không xác minh trong quá trình khai thác. Tôi nghĩ rằng một cái gì đó như Gzip hoặc 7-Zip hỗ trợ các tập tin lớn và có thể tắt nén (Tôi không biết rằng những người làm).

0

Có tất cả các loại lý do nhị phân hoặc sẽ không được phân phối hoặc nếu có, có tham nhũng (tường lửa, giới hạn kích thước, chèn vi rút, v.v.). Bạn nên luôn luôn mã hóa các tập tin (ngay cả một mã hóa cấp thấp hơn là không có) khi gửi các tập tin nhị phân để giúp bảo vệ toàn vẹn dữ liệu.

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