Tại sao nên so sánh tổng kiểm tra khi tải xuống một tệp?


16

Các trang web cung cấp các tệp ISO để tải xuống thường sẽ cung cấp tổng kiểm tra md5 của các tệp đó, chúng tôi có thể sử dụng để xác nhận rằng tệp đã được tải xuống chính xác và không bị hỏng.

Tại sao điều này là cần thiết? Chắc chắn các thuộc tính sửa lỗi của TCP là đủ. Nếu một gói không được nhận chính xác, nó sẽ được truyền lại. Không phải bản chất của kết nối TCP / IP đảm bảo tính toàn vẹn dữ liệu?


10
Cũng đừng quên các lỗi có thể có trong phần mềm và phần cứng khi truyền dữ liệu, trên các điểm cuối cũng như giữa.
sebix

Việc tải xuống có thể đã chấm dứt một vài byte sớm. Bạn không nhất thiết phải chú ý đến kích thước tệp trừ khi bạn chú ý và việc sửa lỗi TCP sẽ chỉ xác minh phần dữ liệu thực sự đến.
Kevin Keane

Tổng kiểm tra có thể có ích nhưng, trong 20 năm làm việc với máy tính, tôi không nhớ đã sử dụng nó một lần.
Pedro lobito

2
MD5 là băm, không phải tổng. Một tổng kiểm tra được sử dụng để kiểm tra lỗi, cụ thể là lỗi bit trong quá trình truyền. Băm mật mã có nghĩa là để đảm bảo rằng dữ liệu hoàn toàn giống nhau. Theo nghĩa đó, một hàm băm sẽ là một tổng số tổng kiểm tra, nhưng chúng không giống nhau. Ngoài ra, MD5 đã bị hỏng trong 10 năm nay (xem bài viết Wikipedia, phần Bảo mật ).
0xC0000022L

Câu trả lời:


20

Như đã được lưu ý bởi những người khác, có rất nhiều khả năng tham nhũng dữ liệu trong đó mọi kiểm tra ở tầng vận chuyển đều không thể giúp được, chẳng hạn như tham nhũng đã xảy ra trước khi tổng kiểm tra được tính ở phía gửi, một MITM chặn và sửa đổi luồng (dữ liệu cũng vậy như tổng kiểm tra), tham nhũng xảy ra sau khi xác nhận tổng kiểm tra ở cuối nhận, v.v.

Nếu chúng ta bỏ qua tất cả các khả năng khác này và tập trung vào các chi tiết cụ thể của chính tổng kiểm tra TCP và những gì nó thực sự làm về mặt xác thực tính toàn vẹn dữ liệu, thì hóa ra các thuộc tính của tổng kiểm tra này hoàn toàn không có khả năng phát hiện lỗi. Cách thuật toán tổng kiểm tra này được chọn thay vì phản ánh yêu cầu về tốc độ kết hợp với khoảng thời gian (cuối những năm 1970).

Đây là cách tính tổng kiểm tra TCP :

Tổng kiểm tra: 16 bit

Trường tổng kiểm tra là phần bổ sung 16 bit của một phần tổng của tất cả các từ 16 bit trong tiêu đề và văn bản. Nếu một phân đoạn chứa một số lượng lớn các octet tiêu đề và văn bản cần kiểm tra, octet cuối cùng được đệm ở bên phải với các số 0 để tạo thành một từ 16 bit cho mục đích tổng kiểm tra. Các pad không được truyền đi như là một phần của phân khúc. Trong khi tính toán tổng kiểm tra, trường tổng kiểm tra được thay thế bằng số không.

Điều này có nghĩa là bất kỳ tham nhũng nào cân bằng khi tổng hợp dữ liệu theo cách này sẽ không bị phát hiện. Có một số loại tham nhũng đối với dữ liệu mà điều này sẽ cho phép nhưng chỉ là một ví dụ tầm thường: thay đổi thứ tự của các từ 16 bit sẽ luôn không bị phát hiện.


Trong thực tế, nó bắt được nhiều lỗi điển hình nhưng hoàn toàn không đảm bảo tính toàn vẹn. Điều này cũng được hỗ trợ bằng cách lớp L2 cũng kiểm tra tính toàn vẹn (ví dụ CRC32 của khung Ethernet), mặc dù chỉ truyền trên liên kết cục bộ và nhiều trường hợp dữ liệu bị hỏng thậm chí không được chuyển đến ngăn xếp TCP.

Xác thực dữ liệu bằng cách sử dụng hàm băm mạnh, hoặc tốt nhất là chữ ký mã hóa, ở một cấp độ hoàn toàn khác về mặt đảm bảo tính toàn vẹn dữ liệu. Cả hai thậm chí có thể được so sánh.


Câu trả lời tốt nhất! Tôi ghét cách các câu trả lời khác trộn lẫn các khái niệm băm mật mã và tổng kiểm tra.
0xC0000022L

20

Có lẽ có hàng trăm lý do tại sao người ta nên kiểm tra md5sum nhưng một số ít xuất hiện trong tâm trí của tôi:

  • Hoạt động độc hại - ISO của bạn có thể đã bị can thiệp trên đường từ máy chủ
  • Bản thân trang này bị giả mạo (tốt nhất là cũng nên ký md5sums :))
  • Tải xuống bị hỏng (mặc dù đã sửa lỗi TCP) (kiểm tra điều này )
  • ISO bị cháy không chính xác

Và dù sao cũng chỉ mất vài giây.


21
Điều đó cũng có nghĩa là an toàn khi tải xuống ISO từ một trang nhân bản ngẫu nhiên, miễn là bạn nhận được tổng kiểm tra từ một nơi đáng tin cậy; ví dụ một bài đăng có chữ ký PGP vào danh sách gửi thư thông báo foo.
richardb

2
Nó thực sự không có gì để làm với việc bảo vệ chống lại hoạt động độc hại. Nếu ISO có thể đã được thay thế bằng một mã độc, thì giá trị tổng kiểm tra MD5 cũng vậy. Có họ ký là một vấn đề khác nhưng không phải là những gì OP đang hỏi về. Vì vậy, thay vì "hoạt động độc hại" là lần đầu tiên trong danh sách của bạn (nó chắc chắn nghe có vẻ tốt), nó thực sự thậm chí không nên trong danh sách của bạn. Bạn đang mang đến cho mọi người cảm giác an toàn sai lầm, điều này thật nguy hiểm. superuser.com/questions/849845/ Mạnh
Austin '' Nguy hiểm '' Quyền hạn

1
@ Austin''Danger''Powers Umm, không, quyền của Konrad. Thứ nhất, gương tải thường khác nhau từ các trang web hiển thị checksum, và thứ hai, có khá nhiều các ISP trên thế giới mà thao tác giao thông - TCP checksum sẽ ổn thôi, nhưng bạn đang tải một tập tin khác nhau. Và tất nhiên, anh ta cũng thiếu một điểm khác - tệp có thể đã bị hỏng trên máy chủ, sau khi tổng kiểm tra được tạo. Nó xảy ra mọi lúc, đặc biệt là đối với các máy chủ "có sở thích" hơn (không có thiết lập RAID phù hợp, v.v.).
Luaan

2
Một câu trả lời từ năm 2015 nên khuyên chống lại băm MD5 . Thuật toán đó đã bị phá vỡ trong mười năm qua (không cường điệu!). Ngoài ra, bạn đang trộn tổng kiểm tra và băm. Chúng là hai thứ khác nhau với ý định khác nhau đằng sau chúng.
0xC0000022L

1
Để thêm vào để thêm vào nhận xét bởi @ 0xC0000022L SHA1 tốt nhất nên tránh nếu bảo mật cũng là một mối quan tâm lớn, mặc dù cả nó và MD5 đều hoàn toàn phù hợp để bảo vệ chống tham nhũng do tai nạn.
David Spillett

6

TCP / IP đảm bảo tính toàn vẹn dữ liệu *. Nhưng nó không đảm bảo rằng 100% tệp đã được tải xuống. Có thể có nhiều lý do tại sao điều này có thể xảy ra. Ví dụ: Có thể bạn có thể gắn ISO mà thiếu một hoặc hai byte ở giữa. Bạn sẽ không gặp vấn đề gì với nó cho đến khi bạn cần một hoặc hai tệp cụ thể bị hỏng. So sánh tổng kiểm tra đảm bảo rằng bạn thực sự đã tải xuống toàn bộ tệp.

* xem bình luận


8
Tôi nghĩ rằng "không đảm bảo tính toàn vẹn dữ liệu" thực sự là bán quá mức những gì nó thực sự làm. Nó thực hiện một nỗ lực để kiểm tra tính toàn vẹn dữ liệu với một cách tiếp cận rất tinh gọn, không đặc biệt mạnh.
Håkan Lindqvist

6

Tổng kiểm tra TCP chỉ có 16 bit. Điều này có nghĩa là, trong trường hợp không có tổng kiểm tra khác, một trong số 65536 gói bị hỏng sẽ được chấp nhận là không bị hỏng. Ví dụ: nếu bạn đang tải xuống một hình ảnh DVD 8GB qua một liên kết ồn ào với tỷ lệ tham nhũng 1%, bạn sẽ mong đợi 81 gói bị hỏng không thể phát hiện được.

MD5 là tổng kiểm tra lớn hơn nhiều, ở mức 128 bit. Tỷ lệ cược của 81 gói sản xuất một cái gì đó có cùng tổng kiểm tra như ban đầu là khoảng 1 trên 1.000.000.000.000.000.000.000.000.000.000.000.


6

Có một số lý do để xác minh tổng kiểm tra của tệp được tải xuống qua HTTP:

  • Đảm bảo bạn đã nhận được toàn bộ tệp
    • Một số khách hàng, chẳng hạn như Firefox , có thể coi kết nối bị gián đoạn là tải xuống thành công, để lại cho bạn một tệp bị cắt bớt nhưng cho rằng nó đã tải xuống OK
  • Đảm bảo bạn nhận được đúng tệp
    • ví dụ: máy chủ bị lỗi, bị xâm nhập hoặc độc hại có thể gửi cho bạn thứ khác
    • ai đó có thể can thiệp vào việc chuyển tiền (tấn công trung gian) - ngay cả HTTPS cũng không an toàn nếu điều này bị hệ thống của bạn xâm phạm, ví dụ như Superfish, hoặc phương thức mã hóa được sử dụng là yếu
    • Họ cũng có thể chỉ giới thiệu cho bạn một trang tải xuống sai, vì vậy bạn thậm chí không được kết nối với máy chủ thực (nhưng trong trường hợp này, tổng kiểm tra sẽ không giúp ích nhiều nếu bạn lấy chúng từ cùng một máy chủ giả)
    • Một số ISP đã bị bắt khi đưa Javascript vào các trang truyền tải vì nhiều lý do 1 ; tùy thuộc vào mức độ được thực hiện, nó cũng có thể tải xuống một số tệp tải xuống
    • Một nhân bản có thể lưu trữ một phiên bản lỗi thời của tệp hoặc quản trị viên có thể đã tải lên tệp sai
  • Đảm bảo tệp không bị hỏng bởi thứ mà TCP không thể phát hiện
    • ví dụ: tệp có thể bị hỏng trên máy chủ, do đó TCP sẽ chỉ đảm bảo rằng tệp đã bị hỏng không được xử lý thêm khi truyền
    • hoặc nó có thể bị hỏng sau khi đến cuối, do bộ nhớ / đĩa bị lỗi, trình điều khiển hệ thống tập tin bị lỗi, v.v.
    • Tổng kiểm tra TCP chỉ có 16 bit, do đó, cơ hội không phải là thiên văn (1 trong 65536) rằng gói tin bị hỏng sẽ không được phát hiện
  • Với ISO, đảm bảo rằng đĩa được ghi chính xác

1 nguồn bình luận vì đại diện lol


2
Nguồn: * security.stackexchange.com/questions/70970/ cường * adblockplus.org/forum/viewtopic.php?t=8156 "ISP hung hăng được tiêm / nhúng các đoạn mã / quảng cáo có thể chặn" * iamsrijit.wordpress.com/2012/09/ 14 / Nhiều * có thể dễ dàng tìm thấy nhiều hơn trên Google, nhưng nó không thực sự thuộc chủ đề ở đây
Rena

2

Daniel, Tùy thuộc vào công cụ bạn đang sử dụng cho Tải xuống ISO mỗi lần nói. Nếu là Say Firefox .. Nó có thể hiển thị tải xuống tệp. Tuy nhiên, bạn có thể không còn nguyên vẹn ISO. Nếu bạn ghi nó thì hãy thử sử dụng nó, thông tin có thể bị thiếu. Điều này xảy ra theo thời gian trên các máy chủ lưu trữ web khác nhau lưu trữ các tập tin.

Đó là một thực hành tốt để ít nhất so sánh kích thước tệp (tổng số byte hoặc bit) để đảm bảo chúng khớp. Windows sẽ hiển thị số byte tệp khác nhau, sau đó nói Linux. Kiểm tra tổng MD5 sẽ hiển thị cùng các giá trị không có hệ điều hành nào được sử dụng. Mong cái này giúp được chút ít. Chúc mừng ...


2
Windows hiển thị số byte khác với cách Linux hiển thị? Có thật không? Tôi nghĩ rằng sự hủy bỏ đã đi ra ngoài với hệ thống tập tin đếm kích thước tập tin của CP / M. (Bây giờ, nếu bạn đang xem một cái gì đó không phải là số byte - giả sử, kích thước tệp hiển thị trong Explorer - nó có thể khác nhau. Nhưng không có saneadmin nào nên kiểm tra tính toàn vẹn của tệp đã tải xuống theo cách đó, vì vậy đó không phải là vấn đề.) Byte là byte. Nhìn vào nó về các bit, mặc dù không có ý nghĩa; Lần cuối bạn tải xuống và lưu trữ nửa byte là khi nào?
một CVn

2

Tôi nhận thấy rất nhiều câu trả lời thú vị nhưng có một điều cuối cùng cần xem xét: Vấn đề của hai vị tướng

Vấn đề hai tướng và vấn đề Byzantine Generals xem xét cụ thể ý nghĩa của việc chuyển thông tin đáng tin cậy thông qua các kênh không đáng tin cậy.

Tổng kiểm tra chỉ là một lớp khác của "tăng độ tin cậy", và một lớp có khả năng thất bại rất nhỏ. Đây là lý do tại sao nó rất phổ biến.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.