Какова ценность контрольных сумм MD5, если потенциально также можно было манипулировать самим хеш-файлом MD5?

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

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

  • Только PDF Загрузить
  • Скопировать весь сайт, включая PHP и SQL?
  • Загрузите произвольный файл в Google Chrome
  • Как ограничить загрузку трафика в Firefox
  • Бесплатное приложение Mac OS X для загрузки всего веб-сайта
  • Как я могу рекурсивно загрузить каталог с помощью smbclient?
  • Как контрольные суммы MD5 обеспечивают любую защиту от намеренно измененных файлов, если нет способа узнать, была ли скомпрометирована сама контрольная сумма?

  • Как защитить мое окно от атаки Wanna Cry (Wanna Crypt) и как удалить Wanna Cry?
  • Windows 7 никогда не запоминает мои учетные данные
  • Доступ к реестру Windows запрещен администратором
  • Как мне перейти на Windows 10, если у меня меньше 8 ГБ бесплатно?
  • Есть ли нажатие клавиши, которая может заблокировать заставку Mac OS X?
  • Возобновление загрузки файла Chrome после выключения ПК
  • 12 Solutions collect form web for “Какова ценность контрольных сумм MD5, если потенциально также можно было манипулировать самим хеш-файлом MD5?”

    Я слышал, что это позволяет […] также обнаруживать любые вредоносные изменения.

    Ну, тогда ты слышал нехорошее. Предусмотрены контрольные суммы MD5 (или SHA или что-то еще) (особенно для ссылок на скачивание ) только для проверки правильной загрузки. Единственное, что они хотят гарантировать, это то, что у вас есть тот же файл, что и сервер. Ни больше ни меньше. Если сервер взломан, вы являетесь SOL. Это действительно так просто.

    Решение, используемое некоторыми системами управления пакетами, такими как dpkg, заключается в подписи хеша : используйте хэш в качестве входных данных для одного из алгоритмов подписи с открытым ключом. См. http://www.pgpi.org/doc/pgpintro/#p12

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

    Ваше предположение верно. Однако есть исключение. Если сервер, предоставляющий файл и страницу, где хэш не управляется одним и тем же объектом. В этом случае разработчик программного обеспечения может захотеть сказать: «Эй, люди загружают это с этого места, но только верят, если hash = xxxx». (Это может быть полезно для CDN в качестве примера). Полагаю, именно по этой причине кто-то сделал это в первую очередь. Чем другие просто следовали за мыслью, насколько здорово было бы показать хеш. Даже не думая, насколько полезно, что даже файл и хэш не находятся в одном месте.

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

    Иногда контрольные суммы предоставляются надежно, но загрузка отсутствует. Поскольку MD5 не работает , контрольные суммы MD5 безопасности являются более слабыми, чем более безопасные контрольные суммы, но до того, как MD5 был сломан, безопасно предоставленный MD5 (например, тот, который был подписан с PGP или GPG или Gatekeeper, или был получен с помощью HTTPS), который соответствовал MD5 Загрузка была убедительным доказательством того, что полученная загрузка была той, которую сервер предоставлял.

    Здесь я пишу о плачевном недостатке безопасных контрольных сумм.

    Пользователи не должны загружать ненадежные исполняемые файлы через ненадежные сети и запускать их из-за риска нападений MITM. См., Например, «Неисправности в автоматических системах обновления» П. Руиссена, Р. Влоутиуса.

    2014 Приложение: Нет, это НЕ неправильно ", что контрольные суммы, размещенные на веб-страницах, используются для обнаружения вредоносных модификаций", потому что это роль, которую они могут выполнять. Они помогают защитить от случайной коррупции, и если они обслуживаются через HTTPS или с проверенной подписью (или, еще лучше, обе), они помогают защитить от злонамеренной коррупции! Я получил контрольные суммы над HTTPS и подтвердил, что они многократно сопоставляли загрузки HTTP.

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

    Выдержка из вышеприведенной ссылки: «Приложение KeRanger подписано с действующим сертификатом разработки приложений Mac, поэтому он смог обойти защиту гейткиперов Apple». … Apple с тех пор отозвала злоупотребляемый сертификат и обновленную сигнатуру антивирусной защиты XProtect, а проект передачи удалил вредоносных инсталляторов со своего веб-сайта. Palo Alto Networks также обновила фильтрацию URL и Threat Prevention, чтобы остановить KeRanger от воздействия систем.

    Два зараженных установщика передачи данных KeRanger были подписаны с законным сертификатом, выпущенным Apple. Разработчиком, указанным в этом сертификате, является турецкая компания с ID Z7276PX673, которая отличается от идентификатора разработчика, используемого для подписывания предыдущих версий установщика передачи. В информации о подписании кода мы обнаружили, что эти установщики были сгенерированы и подписаны утром 4 марта ».

    2016 Дополнения:

    @Cornstalks: Re. Ваш комментарий ниже: Неверно. Как уже отмечалось в статье о нападении на Wikipedia, ссылка на которую вы ссылаетесь: «В 2007 году была обнаружена атака столкновения с выбранным префиксом против MD5» и «злоумышленник может выбрать два произвольно разных документа, а затем добавить разные расчетные значения, которые приводят к целому Документы с равным значением хэш-функции ". Таким образом, даже если MD5 обеспечен безопасно и злоумышленник не может его изменить, злоумышленник все еще МОЖЕТ использовать атаку с выбранным префикс-столкновением с выбранным префиксом, содержащим вредоносное ПО, что означает, что MD5 НЕ защищен для криптографических целей. Во многом это связано с тем, что US-CERT сказал, что MD5 «следует считать криптографически сломанным и непригодным для дальнейшего использования».

    Еще пара вещей: CRC32 – контрольная сумма. MD5, SHA и т. Д. Больше контрольных сумм; Они предназначены для обеспечения безопасности хэшей. Это означает, что они должны быть очень устойчивы к атакам на столкновение. В отличие от контрольной суммы безопасно связанный безопасный хэш защищает от атаки «человек-в-середине» (MITM), где MITM находится между сервером и пользователем. Он не защищает от атаки, когда сам сервер взломан. Чтобы защитить от этого, люди обычно полагаются на что-то вроде PGP, GPG, Gatekeeper и т. Д.

    Это точная причина, по которой размещенные контрольные суммы часто содержат отказ от ответственности, говорящий «Это не может защитить от вредоносной модификации файла». Итак, короткий ответ: «они не могут обеспечить какую-либо защиту от намеренно измененного файла» (хотя, если страница доставляется по HTTPS, HTTPS сама защищает от модификации, если файл не передается по HTTPS, а контрольная сумма Это то, что может помочь некоторым, но это не обычный случай). Тот, кто сказал вам, что контрольные суммы, размещенные на веб-страницах, используются для обнаружения вредоносных изменений, был неправильным, потому что это не та роль, которую они могут выполнять; Все, что они делают, – это защита от случайной коррупции и ленивой вредоносной коррупции (если кто-то не удосуживается перехватить страницу, дающую вам контрольную сумму).

    Если вы хотите защитить себя от преднамеренной модификации, вам нужно либо заставить людей не вмешиваться в контрольную сумму, либо сделать невозможным, чтобы кто-либо еще мог создать действительную контрольную сумму. Первый может включать выдачу его лично или аналогично (так что сама контрольная сумма доверяется); Последнее относится к алгоритмам цифровой подписи (там, где вам необходимо безопасно получить свой открытый ключ для загрузчика, в TLS это делается, в конечном счете, доверяя полномочным органам сертификатов и проверяя их всех, также может быть сделано через сеть доверия , Но дело в том, что в какой-то момент что-то должно быть надежно передано, и просто отправлять что-то на ваш сайт недостаточно).

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

    Возможным решением является использование подписанных файлов.

    (BTW: MD5 небезопасен в любом месте и больше не должен использоваться).

    Как контрольные суммы MD5 обеспечивают любую защиту от намеренно измененных файлов, если нет способа узнать, была ли скомпрометирована сама контрольная сумма?

    Вы совершенно правы. Тогда целью было бы сделать ваше «если» неправильно – если мы знаем, что безопасный криптографический хэш файла не скомпрометирован, тогда мы знаем, что файл также не скомпрометирован.

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

    Если ваш сайт использует HTTPS или вы подписываете хэш с gpg , ваш файл также может (в основном) защищаться от сетевых злоумышленников, таких как вредоносные точки доступа Wi-Fi, узлы выхода изгоев Tor или NSA.

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

    Если вы хотите «привязать» файл к чему-то внешнему, например к автору, машине и т. Д., Его нужно подписать , используя процесс типа PKI с сертификатами. Автор файла и т. Д. Может подписать файл своим личным ключом, и вы можете проверить подписи с открытым ключом, который должен быть общедоступным, сам подписанный CA как вы, так и доверие автора и загружаемый, предпочтительно из Нескольких местах.

    Модификация файла сделает подпись недопустимой, поэтому ее можно также использовать для проверки целостности файла.

    Хэши указывают, отличается ли ваша версия файла («загрузка») от версии сервера. Они не гарантируют подлинность файла.

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

    Создатель файла хэширует файл и шифрует хеш, используя секретный секретный ключ. Таким образом, любой, у кого есть соответствующий (несекретный) открытый ключ, может проверить, что хеш соответствует файлу, но в то время как содержимое файла может быть изменено, никто не может заменить соответствующий хеш на тот, который соответствует файлу (после того, как хеш расшифровывается с использованием Открытый ключ) – если только им не удастся перевести секретный ключ или получить доступ к нему каким-либо образом.

    Как остановить мистера А.Хакера от простого изменения файла, а затем подписать его своим личным ключом?

    Чтобы проверить файл, вам нужно сравнить его хэш с тем, который вы получили, дешифруя связанную цифровую подпись. Если вы считаете, что файл находится в «IMAwesome», то вы дешифруете хэш с помощью своего ключа, а хеш не соответствует файлу, так как хэш был зашифрован с использованием ключа A.Hacker.

    Таким образом, цифровые подписи позволяют обнаруживать как случайные, так и вредоносные изменения.

    Но как мы получаем первый ключ IMAwesome? Как мы можем гарантировать, что, когда мы получили его / ее ключ, на самом деле это не был ключ A.Hacker от скомпрометированного сервера или атаки «человек в середине»? Здесь присутствуют цепочки сертификатов и доверенные корневые сертификаты, ни одно из которых не является абсолютно безопасным [1] решением проблемы, и оба из них, вероятно, должны быть хорошо объяснены в Википедии и по другим вопросам о SO.

    [1] После проверки корневые сертификаты, поставляемые с операционной системой Microsoft на моем рабочем компьютере, включают сертификат от правительства США. Любой, кто имеет доступ к соответствующему кашлю кашля, который может получить доступ к какому-либо частному ключу, может поэтому обслуживать контент в моем веб-браузере, который передает проверку «есть ли замок в адресной строке». Сколько людей действительно захочет нажать на замок и посмотреть , какая пара ключей используется для «безопасного» соединения?

    Как контрольные суммы MD5 обеспечивают любую защиту от намеренно измененных файлов, если нет способа узнать, не была ли скомпрометирована контрольная сумма?

    Это действительно хороший вопрос. В общем, ваша оценка манипуляции MD5 происходит. Но я считаю, что ценность контрольных сумм MD5 при загрузках в лучшем случае поверхностна. Возможно, после загрузки файла вы можете проверить MD5, который у вас есть на веб-сайте, но я склонен видеть бок о бок MD5 как «квитанцию» или что-то приятное, но не надежное. Таким образом, я вообще никогда не заботился о контрольных суммах MD5 из загруженных файлов, но я могу говорить по своему опыту, создавая ad-hoc-серверные MD5-процессы.

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

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

    Недавно я обнаружил красивое архивное программное обеспечение библиотеки под названием ACE Audit manager, которое в основном представляет собой приложение Java, предназначенное для сидения и просмотра файловой системы для изменений. Он регистрирует изменения с помощью изменений MD5. И он работает по той же философии, что и мой ad-hoc-процесс, – хранит контрольные суммы в базе данных, но он делает еще один шаг, но создает контрольную сумму MD5 контрольных сумм MD5, которая известна как хэш-дерево или дерево Merkle .

    Итак, допустим, у вас есть 5 файлов в коллекции. Эти 5 файлов в ACE Audit manager затем получат другой – назовем его «parent» -checksum, который является хэшем, сгенерированным из 5 контрольных сумм MD5 каждого файла. Поэтому, если кто-то должен был вмешиваться только в один файл, хэш для файла изменился бы и хеш для всей «родительской» коллекции.

    В общем, вам нужно взглянуть на контрольные суммы MD5 и связанные хеширования целостности, если они не связаны с каким-либо непрямым хранилищем для самих хешей MD5, они могут быть повреждены. И их ценность как долгосрочного инструмента для обеспечения целостности данных эквивалентна дешевой блокировке, которая приходит «бесплатно» на новый кусок багажа; Если вы серьезно относитесь к блокировке своего багажа, вы получите замок, который нельзя открыть через 5 секунд с помощью скрепки.

    скорость

    Часто люди находят гораздо быстрее: (a) загружать большой файл из ненадежной «поблизости» сети доставки контента (CDN), зеркального сайта, торрентов и т. Д., А также загружать соответствующий короткий файл контрольной суммы (часто SHA256; более старое программное обеспечение Часто используется MD5) из нескольких надежных источников. Они считают это невыносимо медленным (b) загружать весь большой файл непосредственно из надежного источника.

    Проверка

    Часто этот человек считает, что все проверяется – источники (доверенные и ненадежные) согласны с одной и той же контрольной суммой и запускают shasum (или md5sum) с любым из этих коротких файлов контрольной суммы (неважно, какой из них, когда они все одинаковы ) Указывает, что большой файл имеет совпадающую контрольную сумму.

    модификация

    Вы правы, что, когда Мэллори злонамеренно изменяет большой файл, сидящий на каком-то загрузочном сайте, Мэллори легко будет также злонамеренно контролировать контрольную сумму для этого файла на том же сайте загрузки, чтобы shasum (или md5sum), запущенный в этом файле вредоносной контрольной суммы, Кажется, проверяют большой файл. Но этот файл контрольной суммы не является (только), который загрузчик должен использовать для проверки.

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

    Как ранее говорилось cpast, если хорошая надежная криптографическая контрольная сумма передается по доверенному соединению, она может обеспечить безопасность (которая получена из надежного соединения).

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

    «С точки зрения безопасности криптографические хэши, такие как MD5, позволяют аутентифицировать данные, полученные из небезопасных зеркал. Хэш MD5 должен быть подписан или получен из защищенного источника (страница HTTPS) организации, которой вы доверяете». https://help.ubuntu.com/community/HowToMD5SUM

    Криптографические контрольные суммы являются важной частью практических подписей с открытым ключом (как реализовано в GnuPG и другом программном обеспечении, совместимом с OpenPGP). Подписи с открытым ключом имеют некоторые преимущества перед контрольными суммами.

    Я слышал, что [контрольная сумма MD5] позволяет […] также обнаруживать любые вредоносные изменения.

    Что ж, вы не слышали абсолютно неправильно . Цифровая подпись на самом деле используется для обнаружения вредоносных изменений. По некоторым важным причинам хеширование является фундаментальной частью цифровой подписи, в которой фактически подписан только хэш , а не весь исходный файл.

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

    Вот пример реального мира, который может прояснить все это. Следующий отрывок особенно важен по этому вопросу:

    Для более старых архивных выпусков CD были созданы только контрольные суммы MD5 […] Для более новых версий используются более новые и криптографически более строгие алгоритмы контрольной суммы (SHA1, SHA256 и SHA512)

    Давайте будем гением компьютера.