Tại sao tính toán tổng kiểm tra các tập tin tải về?


19

Tôi thường thấy một tổng kiểm tra được đưa ra bên cạnh một tệp có sẵn để tải xuống. Mục đích của thực hành này trốn tránh tôi. Rõ ràng là để phát hiện các tệp bị hỏng, nhưng điều gì có thể là nguyên nhân của tham nhũng này và nó có khả năng không?

Chắc chắn tập tin sẽ không bị hỏng do lỗi truyền vì các giao thức mạng được phát hiện. Và chắc chắn bất kỳ kẻ tấn công nào có thể thay đổi tệp cho mục đích độc hại cũng có thể thay đổi tổng kiểm tra đã cho. Có phải chúng ta đang kiểm tra lỗi ổ cứng? Là những người có nhiều khả năng xảy ra khi viết sau đó khi đọc? Tôi có thiếu thứ gì quan trọng không?


2
Và chắc chắn bất kỳ kẻ tấn công nào có thể thay đổi tệp cho mục đích độc hại cũng có thể thay đổi tổng kiểm tra đã cho. - Đồng ý, tổng kiểm tra không đảm bảo tính xác thực nếu nó không được phục vụ qua HTTPS hoặc bạn không chắc chắn rằng chứng chỉ SSL thuộc về người tạo ra phần mềm.
Mihai

1
Tổng kiểm tra TCP thực sự khá tệ hại: nó chỉ có 16 bit. Nếu bạn đang phục vụ các tệp lớn cho hàng nghìn người (nghĩ: cài đặt hình ảnh DVD), gần như chắc chắn rằng một số tải xuống đó sẽ không bị phát hiện.
Đánh dấu

@Mihai Tất nhiên, nó có thể làm giảm rủi ro một chút, mặc dù. Ví dụ: nếu máy chủ của bạn bị nhiễm vi-rút tự động sửa đổi tất cả các phản hồi nhị phân (hoặc chỉ thay thế tất cả các tệp thực thi bạn tải xuống). Nó không hoàn hảo, nhưng nó có thể giúp ích trong một số trường hợp.
Luaan

Câu trả lời:


9

Để phát hiện tham nhũng không hoàn toàn chính xác. Để xác định tính toàn vẹn của phần mềm sẽ là cách sử dụng đúng hơn. Thông thường một phần mềm không được phân phối từ một máy chủ. Phần mềm tương tự có thể được phân phối từ nhiều máy chủ. Vì vậy, khi bạn tải xuống một phần mềm cụ thể, máy chủ gần đích nhất của bạn được chọn làm nguồn tải xuống để tăng tốc độ tải xuống. Tuy nhiên, các máy chủ 'không chính thức' (bên thứ ba) này không thể luôn được tin cậy. Chúng có thể / có thể bao gồm trojan / virus / phần mềm quảng cáo / backreen vào chương trình không tốt .

Vì vậy, để đảm bảo rằng phần mềm được tải xuống giống hệt như phần mềm 'chính thức' do tổ chức có liên quan phát hành, tổng kiểm tra được sử dụng. Các thuật toán được sử dụng để tạo tổng kiểm tra sao cho ngay cả một thay đổi nhỏ trong chương trình cũng dẫn đến tổng kiểm tra hoàn toàn khác.

Ví dụ lấy từ Unix thực tế và bảo mật Internet

MD5 (Có $ 1500 trong hộp màu xanh.) = 05f8cfc03f4e58cbee731aa4a14b3f03

MD5 (Có $ 1100 trong hộp màu xanh.) = D6dee11aae89661a45eb9d21e30d34cb

Các thông điệp, chỉ khác nhau bởi một ký tự duy nhất (và, trong ký tự đó, chỉ bởi một bit nhị phân duy nhất), có các thông báo hoàn toàn khác nhau.

Nếu tệp đã tải xuống có cùng tổng kiểm tra với tổng kiểm tra được cung cấp trên trang web 'chính thức', thì phần mềm có thể được coi là không được sửa đổi.

Lưu ý bên lề: Về lý thuyết, hai tệp khác nhau CÓ THỂ có cùng giá trị băm. Để thuật toán Hash / checksum được coi là an toàn, sẽ rất tốn kém khi tìm một tệp khác tạo ra cùng một tổng kiểm tra.


1
Vì vậy, nếu tập tin và tổng kiểm tra được cung cấp bởi cùng một máy chủ, nó có phần vô dụng?
Karolis Juodelė

Có lẽ. Tổng kiểm tra chỉ là một phương tiện để xác định tính toàn vẹn. Nói trong một kịch bản cụ thể, nếu kẻ tấn công giành được quyền truy cập vào máy chủ FTP của tổ chức, anh ta có thể thay đổi phần mềm. Nhưng bạn vẫn có thể sử dụng cùng một tổng kiểm tra để xác định tính toàn vẹn NẾU VÀ CHỈ NẾU kẻ tấn công chưa xâm nhập vào máy chủ HTTP. Vì vậy, nếu cả hai đều nằm dưới sự kiểm soát của kẻ tấn công, anh ta có thể dễ dàng thay đổi cả hai và bạn sẽ không biết sự khác biệt.
Aswin PJ

1
Một tình huống khác trong đó tổng kiểm tra có thể có liên quan là phát hiện các tình huống trong đó việc truyền tệp được nối lại sau một trục trặc nhưng tệp đã bị thay đổi trong thời gian tạm thời.
supercat

@ KarolisJuodelė Liên kết tải xuống có thể trong cùng một trang web / máy chủ lưu trữ. Nhưng Trường hợp nó giải quyết có thể khác nhau dựa trên máy chủ nào gần nhất. Cũng lưu ý rằng, trang tổng kiểm tra phải là https trong khi tải xuống có thể là bất kỳ giao thức http hoặc ftp
balki

10

Và chắc chắn bất kỳ kẻ tấn công nào có thể thay đổi tệp cho mục đích độc hại cũng có thể thay đổi tổng kiểm tra đã cho.

Không phải lúc nào.

Bạn có thể có một liên kết nội dung cùng với tổng kiểm tra được phục vụ trên HTTPS. Liên kết có thể là một liên kết không được mã hóa - HTTP hoặc FTP đơn giản hoặc một cái gì đó khác.

Mặt khác, kết nối không được mã hóa có thể dễ dàng được quản lý trung gian, về mặt tích cực, nó có thể nhanh hơn hoặc thuận tiện hơn cho quản trị trang web (cần ít tài nguyên máy tính hơn và tạo cơ hội cho mạng lưu trữ nội dung đó).

Nếu tổng kiểm tra được phục vụ trên một kết nối đáng tin cậy không bị gián đoạn và tải trọng khớp với tổng kiểm tra, bạn sẽ có được cả hai thế giới tốt nhất (với điều kiện là tổng kiểm tra được bảo mật bằng mật mã).


Điều đó nói rằng, bạn đã nhắc nhở tôi rằng có những bản phát hành ngoài kia tuyên bố là "an toàn" và trang web của họ chỉ có trên HTTP, cũng như các liên kết đến hình ảnh của họ.

Ví dụ:

Điều đó thật buồn cười bởi vì bạn không thể có nhiều điều không an toàn về điều đó. Ngay cả khi bản thân chúng không độc hại, bất kỳ ISP nào cũng có thể dễ dàng thay thế cả trang web và hình ảnh bằng hàng giả và nhờ ai đó cài đặt hệ điều hành đã bị lỗi trong khi làm cho chúng có vẻ như là một bản phân phối Linux "an toàn" là điều tối thượng pwnage.


1
Có rất nhiều thứ kém an toàn hơn HTTP không được xác thực, đòi hỏi một MITM hoạt động để lật đổ.
dùng253751

4

Theo như lý do tại sao việc kiểm tra lỗi TCP / IP không nắm bắt được mọi thứ: Từ /programming//a/17083365/2551539

Có nhiều lỗi khác nhau có thể xảy ra (TCP sẽ phát hiện) [được chỉ ra bởi Jacob Krall] :

  • Thứ tự không chính xác của các gói
  • Mất gói
  • Dữ liệu bị hỏng bên trong gói
  • Gói ma (người nhận nhận được gói chưa bao giờ được gửi)

Chỉnh sửa với một số thông tin bổ sung:

Trang 9 của nghiên cứu này: http://apershub.s3.amazonaws.com/8ff1e4414c070e900da8ab3885593085.pdf cho thấy rằng có những lỗi có thể không bị phát hiện bởi TCP. Sự hiểu biết của tôi là nó xảy ra khi một datagram sai lầm (được gọi là "sinh đôi xấu" trong nghiên cứu) có cùng tổng kiểm tra với datagram dự định (được gọi là "sinh đôi tốt" trong nghiên cứu).


2
Đọc câu trả lời đó cẩn thận hơn - đó là tất cả các lỗi được sửa bởi TCP.
Jacob Krall

4

Lỗi truyền có thể xảy ra. Các giao thức lớp liên kết thường chứa tổng kiểm hoặc mã sửa lỗi để tránh chúng, nhưng chúng không hoàn hảo: có một khả năng nhỏ là lỗi sẽ không được khắc phục. Các gói TCP cũng chứa một tổng kiểm tra, giúp giảm xác suất xảy ra lỗi 2 ^ 16. Điều đó làm cho một xác suất rất nhỏ, nhưng khác không về lỗi truyền. Đó là điều mà hầu hết mọi người sẽ không bao giờ vô tình gặp phải trong cuộc đời của họ, nhưng nó không nằm trong phạm vi khả năng chưa từng có trong một tỷ năm của tổng kiểm tra mật mã.

Một lỗi phần cứng trên máy khách, chẳng hạn như hỏng đĩa, không thể được phát hiện bằng cách kiểm tra ngay sau khi tải xuống, vì tổng kiểm tra sẽ được tính từ bản sao được lưu trong bộ nhớ cache. Kiểm tra phương tiện khởi động xem có bị hỏng nếu chúng không khởi động được hay không, mặt khác - bạn thực sự đang kiểm tra phương tiện và bạn có một giả định rằng phần cứng có thể xấu.

Lý do thực sự để tính toán tổng kiểm tra trên thực tế là để phát hiện các lỗi ở cấp độ phần mềm. Những điều này xảy ra. Các lỗi có thể bao gồm:

  • Một tập tin đã được tải xuống một phần. Các máy chủ và trình duyệt web có xu hướng xấu trong việc phát hiện các kết nối bị gián đoạn và dọn dẹp các phần một phần. Lỗi có thể là trong quá trình tải xuống của bạn hoặc có thể là trong quá trình tải lên, nó sẽ xuất hiện.
  • Có một số tham nhũng trên đường đi. Ví dụ, một số nút trung gian trong phân phối tệp đã quyết định áp dụng chuyển đổi mã hóa văn bản sang tệp nhị phân. Hoặc một số máy chủ bị định cấu hình sai đã cung cấp một thông báo lỗi thay vì nội dung.
  • Một biến thể: tập tin sai đã được tải lên.
  • Hiếm, nhưng có thể hữu ích để bảo vệ chống lại: một kẻ thù đã thay đổi tệp nhưng không thể thay đổi tổng kiểm tra tham chiếu. Cơ sở hạ tầng bảo mật có xu hướng làm cho kẻ tấn công khó truyền bá một tổng kiểm tra không hợp lệ hơn là một tệp không hợp lệ. Ví dụ: các tệp lớn thường được phân phối qua gương, trong khi tổng kiểm tra được phục vụ bởi một trang trung tâm có ít cơ hội giả mạo hơn (chỉ truy cập máy chủ cho lãnh đạo dự án, phân phối thông qua HTTPS).

Trong thực tế, việc kiểm tra kích thước của tệp đã tải xuống sẽ bắt được các lỗi phổ biến nhất, đó là các tệp bị cắt bớt hoặc chuyển đổi không hợp lệ. Tổng kiểm tra có lợi thế là họ phát hiện ra nhiều vấn đề hơn.


2

Về lý thuyết, mạng sẽ phân phối chính xác từng phân đoạn và chúng sẽ được lắp ráp đúng cách trên đĩa và không có gì sai.

Trong thực tế, máy tính là máy móc và phần mềm, cả hai đều được thiết kế và chế tạo bởi con người dễ đọc. Trong trường hợp tải xuống bằng cách nào đó không xảy ra vì lý do này hay lý do khác, chẳng hạn như tải xuống thông qua một số thiết bị trung gian cho dù vô hại hay bất chính mà xáo trộn dữ liệu, thật tốt để có cách kiểm tra xem tệp gần như chắc chắn là được tải xuống dưới dạng bản sao chính xác của tệp về phía nhà cung cấp.

Kiểm tra chất lượng cao là một phương pháp đáng tin cậy để xác nhận tính toàn vẹn của dữ liệu.


0

Không có tổng kiểm tra nào có thể đáng tin cậy 100% vì nhiều tệp ánh xạ tới cùng một tổng kiểm tra.

Khi chúng tôi thêm một tổng kiểm tra vào tàu, chúng tôi nhân xác suất phát hiện lỗi.

Có quá nhiều lưu lượng truy cập trên internet đến nỗi các lỗi thực sự khá phổ biến.


Cũng có thối bit.
Thợ săn hươu

Phần cứng nên được phát hiện bởi chính Phần cứng lưu trữ, nhưng kiểm tra lại là một tính năng chính của ZFS và btrfs, tôi nghi ngờ nó hoạt động hoàn hảo.
Tối đa

0

Checksum cũng sẽ giúp ngăn chặn tải xuống bị hỏng do tình huống sau:

Máy chủ có lỗi nội bộ trong khi phục vụ tải xuống do đó quá trình tải xuống bị chấm dứt.

Khi điều đó xảy ra, có một vài kết quả có thể xảy ra:

  • Tốt máy chủ - thực hiện của máy chủ của mã hóa chuyển chunkedkhông lỗi:
    • Máy khách tốt (như cURL, wget) sẽ có thể thông báo cho bạn đây là một bản tải xuống tồi vì đoạn kết thúc chưa bao giờ được gửi từ máy chủ.
    • Máy khách xấu sẽ nghĩ rằng quá trình tải xuống đã hoàn tất do không nhận được thêm dữ liệu từ máy chủ.
  • Máy chủ xấu - việc triển khai mã hóa chuyển khối Chunked của máy chủ bị lỗi khi nó gửi đoạn kết thúc cho bản tải xuống xấu này:
    • Bất kỳ khách hàng sẽ nghĩ rằng tải xuống này đã hoàn thành thành công.

Tôi đã thấy những hành vi này giữa các công cụ máy khách phổ biến và khung máy chủ, vì vậy khi bạn không sử dụng tổng kiểm tra, thì trong trường hợp "máy chủ tốt + máy khách xấu" hoặc "máy chủ xấu + bất kỳ máy khách nào", bạn đã tải xuống bị hỏng .

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.