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

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

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

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

39 голосов | спросил Austin ''Danger'' Powers 8 MonEurope/Moscow2014-12-08T10:24:24+03:00Europe/Moscow12bEurope/MoscowMon, 08 Dec 2014 10:24:24 +0300 2014, 10:24:24

12 ответов


89
  

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

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

ответил Daniel B 8 MonEurope/Moscow2014-12-08T11:06:53+03:00Europe/Moscow12bEurope/MoscowMon, 08 Dec 2014 11:06:53 +0300 2014, 11:06:53
15

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

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

ответил pjc50 8 MonEurope/Moscow2014-12-08T13:16:51+03:00Europe/Moscow12bEurope/MoscowMon, 08 Dec 2014 13:16:51 +0300 2014, 13:16:51
9

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

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

ответил nsn 8 MonEurope/Moscow2014-12-08T17:50:37+03:00Europe/Moscow12bEurope/MoscowMon, 08 Dec 2014 17:50:37 +0300 2014, 17:50:37
8

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

Я писал о плачевном недостатке безопасных контрольных сумм в течение многих лет, здесь .

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

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

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

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

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

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

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

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

ответил Matthew Elvey 9 TueEurope/Moscow2014-12-09T19:22:20+03:00Europe/Moscow12bEurope/MoscowTue, 09 Dec 2014 19:22:20 +0300 2014, 19:22:20
4

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

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

ответил cpast 8 MonEurope/Moscow2014-12-08T10:49:07+03:00Europe/Moscow12bEurope/MoscowMon, 08 Dec 2014 10:49:07 +0300 2014, 10:49:07
4

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

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

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

ответил boboes 8 MonEurope/Moscow2014-12-08T10:42:01+03:00Europe/Moscow12bEurope/MoscowMon, 08 Dec 2014 10:42:01 +0300 2014, 10:42:01
2
  

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

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

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

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

ответил Matt Nordhoff 8 MonEurope/Moscow2014-12-08T13:29:36+03:00Europe/Moscow12bEurope/MoscowMon, 08 Dec 2014 13:29:36 +0300 2014, 13:29:36
1

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

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

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

ответил LawrenceC 8 MonEurope/Moscow2014-12-08T14:36:43+03:00Europe/Moscow12bEurope/MoscowMon, 08 Dec 2014 14:36:43 +0300 2014, 14:36:43
1

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

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

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

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

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

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

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

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

ответил Mark K Cowan 8 MonEurope/Moscow2014-12-08T16:09:41+03:00Europe/Moscow12bEurope/MoscowMon, 08 Dec 2014 16:09:41 +0300 2014, 16:09:41
1
  

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

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

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

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

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

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

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

ответил JakeGould 8 MonEurope/Moscow2014-12-08T10:57:04+03:00Europe/Moscow12bEurope/MoscowMon, 08 Dec 2014 10:57:04 +0300 2014, 10:57:04
0

скорость

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

Проверка

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

модификация

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

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

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

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

  

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

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

ответил David Cary 9 TueEurope/Moscow2014-12-09T21:25:32+03:00Europe/Moscow12bEurope/MoscowTue, 09 Dec 2014 21:25:32 +0300 2014, 21:25:32
0
  

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

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

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

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

  

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

ответил matpop 9 TueEurope/Moscow2014-12-09T13:08:07+03:00Europe/Moscow12bEurope/MoscowTue, 09 Dec 2014 13:08:07 +0300 2014, 13:08:07

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132