Нужно ли проверять целостность загружаемых файлов? [Дубликат]

9

Я скачал огромное количество файлов, но обнаружил использование md5 и sha в качестве средств проверки целостности совсем недавно. С тех пор я всегда предпочитаю проверять большие загруженные файлы, даже если я никогда не обнаружил, что они повреждены.

Нужно ли проверять целостность загружаемых файлов?

Выберите в качестве примера только что загруженный дистрибутив Linux объемом 1 ГБ, если хотите.

Спасибо

maxpesa
источник
Это действительно не проблема с современным подключением к Интернету. Это полностью зависит от ваших личных предпочтений.
Ramhound
5
Смысл сравнения хеша может заключаться в том, что «кто-то изменил файл (злонамеренно)», чем «правильно ли был загружен файл». Одним из ярких примеров является загрузка Windows ISO из неофициального / ненадежного источника и проверка целостности файла путем сравнения хеша MD5 с хешем, опубликованным Microsoft в MSDN.
TheUser1024
1
@ TheUser1024 это предполагает, что ваши два источника совпадают, версия MSDN может отличаться.
Эрик Г
1
Этот вопрос может получить больше ответов на вопросы безопасности.SE
Эрик Г
3
На самом деле речь шла скорее о целостности, а не о безопасности, поскольку я загружаю только из надежных источников, даже если это важный момент при загрузке файлов
maxpesa

Ответы:

6

Это зависит от нескольких факторов.

  1. У вас есть стабильное подключение к интернету?
    Если у вас стабильное интернет-соединение, вам не нужно проверять целостность файла, так как он, скорее всего, будет правильным. Я никогда не проверяю хеш, и у меня никогда не было поврежденных файлов. Или, может быть, один раз, когда удаленный сервер отключен.

  2. Хотите проверить файл по соображениям безопасности?
    Если вы беспокоитесь о безопасности загружаемого файла, вы можете использовать хеш MD5, чтобы убедиться, что файл не был каким-либо образом изменен. Вы загружаете файл, и если хеш MD5 не совпадает, это означает, что файл на сервере отличается от хеша MD5, и что-то не так. Это будет допустимо только в том случае, если вы не доверяете серверу, с которого вы скачиваете, но обычно, если кто-то предоставляет хэш, он также старается изо всех сил обновлять информацию. Но если их сайт взломали, и вы проверили хеш MD5, то вы получили небольшой бонус.

В целом, эти 2 дадут нет большинству людей. Если это не для вас, это полностью зависит от вас, конечно.

LPChip
источник
1
Стабильное интернет-соединение недостаточно. Вы также должны быть уверены, что ваша память и ОЗУ не повредят файлы. Но да, довольно маловероятно. Если ваша машина не поддерживает BSOD, скорее всего, вы будете заботиться только о безопасности.
ChrisInEdmonton
6
Контрольная сумма файла не является проверкой безопасности, поскольку злоумышленник, который может изменить файл, может также изменить контрольную сумму.
Джонни
1
Если бы я взломал сайт и заменил файл на вредоносный, я думаю, что был бы достаточно умен, чтобы знать, как изменить указанный хэш.
Коул Джонсон
3
MD5 больше не достаточно для проверки того, что содержимое файла не было намеренно изменено. Это хорошо только для непреднамеренной коррупции. Шансы атакующего на компромисс варьируются. Во многих случаях к хранилищу для хэша не обращаются по тем же каналам, что и хранилище массовых файлов для большой загрузки. В целях безопасности криптографические подписи лучше простых хешей, особенно если у вас нет безопасного канала для распределения хешей.
Perkins
Я думаю, что идея хэшей была в том случае, когда предоставленный файл был размещен на другом сайте, чем хеш. Например, сайт разработчика с хэш-ссылками на Sourceforge или где-то еще.
Мэтью Лок
6

Ответ и выбор будут основаны на его / ее терпимости к риску и соображениях времени и усилий при проверке.

Проверка хэшей MD5 / SHA1 является хорошим первым шагом, и вы должны сделать это, когда у вас есть время. Однако вы должны учитывать свою способность доверять предоставленному хешу. Например, если веб-сайт автора с хешем взломан, то злоумышленник может изменить хеш, поэтому вы не узнаете. Если вычисляемый вами хэш не совпадает с предоставленным хешем, вы знаете, что что-то не так. Однако только то, что совпадение хэшей не гарантирует, что файл хорош.

Лучшей альтернативой для автора программного обеспечения для обеспечения целостности и подлинности является цифровая подпись распространяемых файлов . Это прикрепляет информацию о подлинности к файлу и не полагается на доверие к некоторому веб-сайту. Если автор подписывает файл цифровой подписью, единственный способ подделать это - скомпрометированный центр сертификации или кража ключа подписи разработчика. Оба эти случая гораздо реже, чем взломанный сайт в Интернете.

В конечном счете, вы должны провести свою собственную должную осмотрительность, чтобы определить, хотите ли вы доверять чему-либо, а затем принять контрмеры (запустить в песочнице, виртуальной машине и т. Д.), Чтобы смягчить любые неизвестные факторы или просчеты, которые вы допустили при принятии решения о том, доверять или нет. ,

Эрик Г
источник
4

Из соображений безопасности ДА. Подумайте, что было обнаружено, что выходной узел Tor исправляет двоичные файлы во время загрузки , затем помните, что ваш интернет-провайдер может иметь или не иметь малейшей морали и что он полностью контролирует ваше интернет-соединение.

Майкл Кон
источник
Ваша жалоба на интернет-провайдера связана с тем, что они могут изменить скорость и приоритет моего соединения и другие вещи, которые могут повредить файлы?
maxpesa
@maxpesa - Они могут изменить поток, если они хотят. Файл не будет поврежден, только измененный.
Ramhound
@maxpesa - я указывал на то, что ваш провайдер находится в том же положении, что и выходной узел Tor в связанной статье - у него есть возможность контролировать то, что происходит через ваши провода. Если они захотят, они могут изменять исполняемые файлы на лету.
Майкл Кохне
2
Если злоумышленник может изменить двоичный файл, злоумышленник также может изменить хэш. Это потребовало бы более целенаправленной атаки, чем исправление всех двоичных файлов, но все еще очень возможно. Хотя проверка хеша может избежать повреждения, гарантии нет. Если вы заботитесь о безопасности, первым шагом является загрузка только через HTTPS - особенно, когда вы используете прокси, как с tor!
Kapex
1
Чтобы добавить комментарий @ kapep, еще лучше проверить его с помощью криптографических подписей (используя ключи, распространяемые по защищенному каналу). Таким образом, злоумышленник должен будет скомпрометировать и хранилище ключей, и хранилище, чтобы изменить двоичный файл.
Джонни
4

Просто чтобы добавить к другим ответам:

TLDR: для файлов, где целостность важна, да

Длинный ответ: я часто нахожу это необходимым, когда я делаю что-то, где важно, чтобы файл имел высокую целостность.

Одним из примеров является прошивка маршрутизатора с помощью OpenWRT. Если файл поврежден, то этот маршрутизатор будет заблокирован, и тогда мне придется либо:

  • Замените это (дорого)
  • Исправить это (отнимает много времени. Особенно, если мне нужно припаять последовательный кабель / JTAG)

И то, и другое неудобно по сравнению с простотой проверки хэша. Поэтому я настоятельно рекомендую делать это для критических файлов.

Джордж
источник
0

Я обычно только проверяю, была ли моя загрузка прервана, и я возобновил ее позже, потому что HTTP-запросы со смещением поиска используются не так широко, поэтому могло произойти что-то глупое.

Во многих случаях загрузка представляет собой сжатый файл, который не будет распакован, если он сломан. Если это не так, проверка не является плохой идеей. Я мог бы проверить ISO перед записью на носитель с однократной записью.

Проверка его с помощью хэша с того же сайта, с которого я его получил, бесполезна с точки зрения безопасности, как сказали другие ответы и комментарии. Это может быть более полезным, если вы загрузили с зеркала, но хэш взят из исходного апстрима. Или, если имя файла неоднозначно, и по какой-то причине вы не уверены, что получили именно ту версию, которую хотели.

Дело в том, что публикация хэшей полезна для множества особых случаев, помимо простой загрузки файла с того же сайта, на котором размещен хэш.

Питер Кордес
источник