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

8438
Austin ''Danger'' Powers

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

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

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

39
Почему файл должен иметь такой же размер после его изменения? Я говорю, что файл может быть изменен, новый хеш создан для вредоносной версии ... тогда злоумышленник может заменить хеш, размещенный на сайте. Austin ''Danger'' Powers 9 лет назад 0
Большинство сайтов загрузки дают размер файла и часто дату создания. Я полагаю, что они также могут быть изменены на веб-сайте. Однако не обнаружит ли владелец сайта все взломы сайта? fixer1234 9 лет назад 1
Если мы полагаемся на то, что хост веб-сайта замечает незначительные расхождения меток времени вместо хеша MD5, действующего как печать подлинности ... тогда защита, обеспечиваемая контрольной суммой, в значительной степени испарилась. Austin ''Danger'' Powers 9 лет назад 3
Я имею в виду такие вещи, как журналы доступа к сайту, а не замечаю незначительные изменения содержимого, хотя у веб-страницы может быть свой хэш, известный владельцу сайта. fixer1234 9 лет назад 1
Дело в том, что люди, заходящие на сайт, не могут знать, насколько активно хозяин сайта проверяет эти журналы. Предполагается, что контрольная сумма MD5 позволяет людям проверять целостность своих загрузок, не полагаясь на действия других сторон. Austin ''Danger'' Powers 9 лет назад 1
MD5 не генерирует содержимое файла, поэтому никогда не будет способа проверки целостности файла - кроме повреждения, но это часто приводит к разному размеру файла, поэтому хэш будет другим. Если у вредоносного файла есть действительный хэш, на этом этапе не будет возможности сообщить об этом. Kinnectus 9 лет назад 1
Якобы SHA заменяет MD5, потому что сложный хеш-код сложнее создать из модифицированного файла. Тем не менее, это не имеет значения для сценария, который вы подняли. fixer1234 9 лет назад 0
@ BigChris Я не уверен, что вы имеете в виду, но это звучит неправильно. Криптографические алгоритмы хеширования, такие как MD5, полностью связаны с данными сообщений. Два случайных сообщения одинаковой длины почти наверняка будут иметь разные хэши. Matt Nordhoff 9 лет назад 4
@MattNordhoff точно. Если контрольная сумма MD5 не генерируется на основе данных файла, то на чем она основана? Austin ''Danger'' Powers 9 лет назад 3
Хеш-данные MD5 будут построены на данных, да, но не потребуется слишком много усилий для создания вредоносного файла с таким же хешем. Как уже говорилось, не было бы никакой возможности проверить, был ли файл вредоносным или нет. Читайте: http://www.mscs.dal.ca/~selinger/md5collision/ Kinnectus 9 лет назад 2
@MattNordhoff Где «почти наверняка» = 2 ^ (n / 2) где * n * - количество битов в выходном хэш-значении. [Атаки на день рождения] (https://en.wikipedia.org/wiki/Birthday_attack). a CVn 9 лет назад 0
Иногда хеши публикуются на стороннем сервере, тогда как фактические загрузки размещаются на сторонних зеркалах и / или CDN. el.pescado 9 лет назад 2
Говорят, что шифрование - это всего лишь рычаг - вместо того, чтобы скрывать весь файл, вы можете просто спрятать крошечный ключ. Криптографическое хеширование выполняется аналогичным образом - вместо проверки всего файла вы можете просто проверить крошечный ключ. that other guy 9 лет назад 0

12 ответов на вопрос

89
Daniel B

I have heard this is to allow [...] for any malicious changes to be detected also.

Well you heard wrong, then. MD5 (or SHA or whatever) checksums are provided (next to downloads links, specifically) only for verifying a correct download. The only thing they aim to guarantee is that you have the same file as the server. Nothing more, nothing less. If the server is compromised, you’re SOL. It’s really as simple as that.

+1. Они в основном используются для защиты от * случайного * повреждения (ошибки передачи по сети, поврежденные сектора на диске и т. Д.). Для защиты от * злонамеренного * повреждения контрольная сумма должна поступать из надежного неподключенного местоположения. То же самое с PGP / GPG / аналогичными подписанными сообщениями: они полностью гарантируют содержание, только если вы доверяете тому, откуда вы получили открытый ключ. David Spillett 9 лет назад 31
MD5 фактически явно сломан против злонамеренных изменений, предполагая, что оригинальный файл был подготовлен для этого. ratchet freak 9 лет назад 0
Вы также можете добавить к своему ответу, что разностные подписи устраняют это ограничение (при условии, что вы доверяете сертификату / сертифицирующему органу) atk 9 лет назад 1
Это даже хуже, чем это - если кто-то может подделать ваш трафик на / с сервера, то даже если сервер не взломан, они могут изменить как файл, так и контрольную сумму, которую вы получите. cpast 9 лет назад 2
@cpast Да, и что? Как я уже сказал, MD5 (сам по себе) вообще не касается безопасности. Daniel B 9 лет назад 1
@DanielB Так что это не гарантирует, что у вас есть тот же файл, что и сервер. cpast 9 лет назад 1
Для расширения: Если это _действительно_ гарантирует, что у вас был тот же файл, что и на сервере, это было бы законной мерой безопасности, потому что это означало бы, что вам не нужно доверять сети. Это именно то, что делают MAC в TLS - докажите, что вы получили именно то, что отправил сервер, но TLS тоже ничего не может сделать с взломанным сервером. Если хороший хеш передается по доверенному соединению, он может обеспечить безопасность (которая получена из доверенного соединения); если он отправляется по тому же соединению, что и файл, то _hen_ он бесполезен, потому что он не более защищен от несанкционированного доступа, чем сам файл. cpast 9 лет назад 3
Это не верно. Иногда контрольные суммы предоставляются надежно, а загрузка - нет. Поскольку MD5 сломан, контрольные суммы MD5 безопасности слабее, чем более безопасные контрольные суммы, но до того, как MD5 был сломан, надежно предоставленный MD5 (например, тот, который был подписан или отправлен по HTTP), который соответствовал MD5 загрузки, был убедительным доказательством того, что полученная загрузка была той, которую сервер делал доступным. Я добавлю ответ с более подробной информацией ниже. Matthew Elvey 9 лет назад 2
@MatthewElvey MD5 гарантирует, что вы получите правильный файл, но не гарантирует, что вы получите безопасный файл. Если сам файл является вредоносным с самого начала, вы облажались, потому что MD5 ничего не говорит вам о самом файле Raestloz 9 лет назад 0
@Raestloz Ваше наблюдение выходит за рамки реального вопроса. Если когда-либо известная и проверенная организация начнет распространять вредоносное программное обеспечение (а мы все знаем, что этого никогда не было, не так ли? :), тогда это (должно) скоро стать недоверенным! matpop 9 лет назад 0
@matpop на самом деле, я решал вопрос. Читайте внимательно: в этом вопросе возникает ситуация «что если», когда вредоносная программа изменена вместе с ее (уже вредоносной) MD5. MD5 - это мера безопасности «это правильно», а не «это безопасно», поэтому в этом случае MD5 бесполезен («какова ценность?», Говорится в названии), если только во время передачи кто-то не изменил его, чтобы включить еще больше вредоносное ПО, но вы все равно облажались. Таким образом, я ответил Мэтью, который говорит, что этот ответ неправильный (это не так) Raestloz 9 лет назад 0
@Raestloz Во-первых, вы написали: «Если сам файл является вредоносным с самого начала» ... Извините, но для меня эти слова не означают то же самое, что намеренно ИЗМЕНЕННЫЙ файл. ОП знает, что хэши не являются частью какой-либо антивирусной системы и не могут использоваться для обнаружения вредоносных программ. Тем не менее, MatthewElvey прав, этот ответ несколько радикальный и неполный, поскольку он пропускает важное исключение: если вы можете проверить цифровую подпись хэш-суммы, то хеш-код также можно использовать для демонстрации того, что загруженный файл НЕ УДАЛЕН ( афаик хоть и HTTPS сам по себе недостаточен). matpop 9 лет назад 0
@matpop извините, но мои слова не могут быть более точными. Если файл был преднамеренно изменен (скажем, невинный exe-файл, который был изменен для выполнения вредоносного кода) И загружен как новая запись, вредоносный файл является отдельной сущностью от исходного невинного файла и поэтому является вредоносным с самого начала , Это отличается от невинного файла, который перехватывается и изменяется при передаче между сервером и клиентом загрузки. Raestloz 9 лет назад 0
@matpop OP спрашивает: «Что хорошего в MD5, если он не был сгенерирован из исходного неизмененного файла?», ответ «ничего не стоит». Этот ответ подчеркивает, что MD5 может только сказать вам, что у вас и у сервера один и тот же файл, и ничего более. По сути, это не несет никакой выгоды для безопасности. «Преимущество» безопасности в том, что файл подделан, является побочным продуктом. А пока, может, нам стоит перенести это в чат? Raestloz 9 лет назад 0
@Raestloz Спасибо за ваш ответ :) Мы явно не согласны с используемыми терминами, но почти думаем так же. Хотя «преимущество безопасности» хеширования можно считать «побочным продуктом», IMO важно отметить, что хеширование на самом деле является ** фундаментальной частью ** процесса аутентификации (вы можете немного взглянуть на мой краткий ответ чтобы понять, что я имею в виду). Тем не менее, наши комментарии добавляют что-то, так что давайте пока не будем общаться. matpop 9 лет назад 0
@matpop это то, что я сказал, MD5 может только сказать вам, что файл правильный, он не может сказать, что файл безопасен. Я думаю, что я использовал неправильное слово в своем последнем комментарии Raestloz 9 лет назад 0
@Raestloz Тем не менее, вы можете признать, что этот ответ не дает никаких «объяснений и контекста», и здесь есть лучшие ответы, которые получили гораздо меньше голосов. matpop 9 лет назад 0
@matpop хорошо, наша дискуссия становится слишком длинной: D, поэтому я закончу это здесь. Мое личное убеждение состоит в том, что этот ответ является лучшим, потому что вместо попыток улучшить безопасность контрольной суммы (например, обеспечить безопасную доставку контрольной суммы по другим каналам, предоставить зеркала и т. Д.), Что делают другие ответы, этот акцент выделяет только ядро проблема: эта контрольная сумма не может помочь определить безопасность данных. Для меня пытаться защитить контрольную сумму бессмысленно, она дает ложное чувство безопасности. Единственный способ узнать это проверить сам файл Raestloz 9 лет назад 0
@Raestloz Не сказать последнее слово, серьезно. Не ненавидь меня, дай мне еще один последний комментарий. 1. Кажется, вы продолжаете ставить _authentication_ и «обнаружение вредоносного ПО» на одном уровне; первый действительно ** возможен ** с (подписанными) хэш-суммами! 2. Нельзя просто (!) Сказать, что ** единственная цель ** хэшей состоит в том, чтобы гарантировать, что у вас тот же файл, что и на сервере; тот факт, что хэши в большинстве случаев предоставляются без подписи **, не делает такое утверждение в целом действительным **. Это _не_ "действительно так просто". Приветствия. NRN matpop 9 лет назад 0
Ну, я думаю, вы все будете * рады * узнать, что мой ответ был конкретно о контрольных суммах рядом со ссылками на скачивание (или в файле `. * Sum`), о чем, я полагаю, и заключается вопрос. Это конечно не про Authenticode и тому подобное. ;) Daniel B 9 лет назад 0
15
pjc50

The solution used by some package management systems such as dpkg is to sign the hash: use the hash as input to one of the public key signing algorithms. See http://www.pgpi.org/doc/pgpintro/#p12

If you have the public key of the signatory, you can verify the signature, which proves the hash is unmodified. This just leaves you with the problem of getting the right public key in advance, although if someone once tampers with the key distribution they also have to tamper with everything you might verify with it otherwise you'll spot that something strange is going on.

9
nsn

Your assumption is correct. There is an exception though. If the server providing the file and the page where the hash is are not managed by the same entity. In that case the software developer may want to say "hey people download this from that place but only believe if hash = xxxx". (This might be usefull for CDN's as an example). I guess this was the reason why someone did it in the first place. Than others just followed thinking how cool it would be to show the hash. Not even thinking how useful it is not even both the file and the hash are on the same location.

Having this said, this is worth what it is. Don't assume too much about security as others already stated. If and only if you can absolutely trust the original hash, than the file is good. Otherwise an attacker with enough motivation and knowledge can tamper both file and the hash, even if these are in different servers and managed by different entities.

8
Matthew Elvey

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

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

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

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

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

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

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

Приложения 2016 года:

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

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

Мне нравится этот ответ, потому что он выделяет основную часть ** контрольной суммы ** - это просто * одна * метрика из многих, чтобы проверить правильность содержимого файла. Если сама сеть ненадежна, не так уж сложно представить себе замену MD5-хешей и исправление двоичных файлов на лету (как мы уже видели на некоторых выходных узлах Tor) ... Конечно, MD5 не защищает от * намеренно измененные файлы * потому что вы уже доверяете провайдеру указанных файлов для начала. Breakthrough 9 лет назад 0
MD5 не * полностью * сломан: атака на него является [атакой столкновений] (https://en.wikipedia.org/wiki/Collision_attack), а не [прикреплением к изображению] (https: //en.wikipedia. org / wiki / Preimage_attack) (что будет намного, намного хуже). Если MD5 предоставляется безопасно и злоумышленник не может изменить его, то злоумышленник не может использовать атаку столкновением (и должен использовать атаку с прообразом), что означает, что MD5 все еще довольно безопасен для этой цели. MD5 заслуживает поэтапного отказа из-за его уязвимости коллизий, но у него нет (известной) уязвимости прообраза, поэтому он не "полностью" сломан. Просто наполовину сломан. Cornstalks 9 лет назад 2
+1! Но ... Является ли подписанный хеш действительно таким же безопасным (_trustable_), как и неподписанный хеш, полученный по протоколу https (ssl / tls)? Я думаю, что все-таки лучше, чтобы сам хэш был подписан в любом случае ... matpop 9 лет назад 0
4
marsh-wiggle

This is really a problem. Showing checksums on the same site as the file to download is insecure. A person who can change the file can also change the checksum. The checksum should be shown through a complete separated system but this is hardly feasible, because how to tell the user in a safe way where the checksum can be found.

A possible solution is the use of signed files.

(BTW: MD5 is unsafe anywhere and shouldn't be used anymore.)

4
cpast

This is the precise reason posted checksums often carry a disclaimer saying "This cannot protect against malicious modification of the file". So, the short answer is "they can't provide any protection whatsoever against a deliberately altered file" (although, if the page is delivered over HTTPS, HTTPS itself protects against modification; if the file isn't delivered over HTTPS but the checksum is, then that might help some, but isn't a common case). Whoever told you that checksums posted on web pages are used to detect malicious modifications was wrong, because this is not a role they can perform; all they do is help protect against accidental corruption, and lazy malicious corruption (if someone doesn't bother to intercept the page giving you the checksum).

If you want to protect against deliberate modification, you need to either keep people from messing with the checksum, or make it impossible for anyone else to generate a valid checksum. The former can involve giving it out in person or similar (so the checksum itself is trusted); the latter goes to digital signature algorithms (where you need to securely get your public key to the downloader; in TLS, this is done by ultimately trusting certificate authorities directly and having them verify everyone else; it can also be done over a web of trust, but the point is that something has to be securely transferred at some point, and just posting something on your site isn't enough).

Хеши могут защитить от злонамеренного изменения *, если кто-то знает из какого-то * независимого * источника, каким должен быть ожидаемый хеш надежной версии файла. Ценность наличия на веб-сайте списка хеш-значений его файлов заключается не в том, чтобы позволить людям, которые скачивают файлы с сайта, проверять хэш загруженного файла на том же сайте, а в том, чтобы позволить людям, которые знают * из какого-то другого источник * хеш файла, который они * хотят *, знать, будет ли соответствующий файл соответствовать ему, прежде чем они загрузят его. Кстати, одну вещь, которую я хотел бы увидеть ... supercat 9 лет назад 2
... будет формой URL / URI, которая включает ожидаемое значение хеша (вероятно, SHA, а не MD5), и будет указывать, что браузер должен принимать файл, только если хеш соответствует указанному. В тех случаях, когда многим людям потребуется доступ к одному и тому же большому файлу, предоставление всем этим людям URL-адреса через https: //, но их загрузка файла с прокси-сервера может быть более эффективной, чем использование ими всех https: // прямо из источника. supercat 9 лет назад 0
@supercat Это то, что я имел в виду, «не позволяя людям связываться с контрольной суммой» - что-то должно быть безопасно передано, и если это контрольная сумма, то контрольная сумма может помочь защитить от злонамеренного вмешательства в файл. cpast 9 лет назад 0
Контрольная сумма MD5, передаваемая по некоторому пути, отличному от самого файла, обеспечит защиту от подделки *, если * файл не был специально создан для облегчения такой подделки. Напротив, что-то вроде CRC32 практически не обеспечит защиту от взлома, даже если исходный источник файла заслуживает доверия, а CRC32 доставлен надежно. supercat 9 лет назад 0
2
Matt Nordhoff

How can MD5 checksums provide any protection against deliberately altered files if there is no way of knowing if the checksum itself has been compromised?

You are entirely correct. The goal, then, would be to make your "if" wrong — if we know that a secure cryptographic hash of a file isn't compromised, then we know that the file isn't compromised either.

For example, if you post a hash of a file on your website, and then link to a copy of the file on a third-party mirror server — common practice in old-fashioned free software distribution — your users can be protected against some types of attacks. If the mirror server is malicious or compromised, but your website is okay, the mirror won't be able to subvert your file.

If your website uses HTTPS, or you sign the hash with gpg, your file can also be (mostly) protected from network attackers like malicious Wi-Fi hotspots, rogue Tor exit nodes, or NSA.

Что касается gpg: помните, что это имеет аналогичные проблемы, если вы не полностью доверяете открытому ключу, который не был заменен взломанным, и контент, подписанный закрытым ключом, соответствует этому. David Spillett 9 лет назад 1
1
JakeGould

How can MD5 checksums provide any protection against deliberately altered files if there is no way of knowing if the checksum has not been compromised either?

This is a really good question. In general, your assessment of MD5 manipulation is spot on. But I believe the value of MD5 checksums on downloads is superficial at best. Perhaps after you download a file you can check the MD5 you have against a website, but I tend to see side-by-side MD5 storage as a “receipt” or something that is nice to have but not reliable. As such, I have generally never cared about MD5 checksums from downloaded files, but I can speak from my experience creating ad-hoc server-based MD5 processes.

Basically what I have done when a client wants to sweep a file system for MD5 checksums is to have them be generated into CSV files that maps filename, path, MD5—and other sundry file info—into a structured data format that I then have ingested into a database for comparison and storage.

So using your example, while an MD5 checksum might sit next to a file in it’s own text file, the authority record MD5 checksum would be stored in a non-connected database system. So if someone somehow hacked into a fileshare to manipulate data, that intruder would not have any access to the MD5 authority records or the connected history.

Recently I discovered a nice piece of library archival software called ACE Audit manager which basically is a Java application designed to sit and watch a filesystem for changes. It logs changes via MD5 changes. And it operates on a similar philosophy as my ad-hoc process—store the checksums in a database—but it takes it a step further but creating an MD5 checksum of MD5 checksums which is known as a hash tree or Merkle tree.

So let’s say you have 5 files in a collection. Those 5 files in ACE Audit manager would then get another—let’s call it “parent”—checksum that is a hash generated from the 5 MD5 checksums of each file. So if someone were to tamper with just one file, the hash for the file would change and so would the hash for the whole “parent” collection.

In general the way you need to look at MD5 checksums and related integrity hashes is unless they are not connected to some non-direct storage for the MD5 hashes themselves, they can be corrupted. And their value as a long term data integrity tool is equivalent to a cheap lock that comes “free” on a new piece of luggage; if you are serious about locking your luggage you will get a lock that cannot be opened in 5 second with a paperclip.

«Контрольная сумма MD5 контрольных сумм MD5» известна как * дерево Меркле *. pjc50 9 лет назад 0
@ pjc50 Спасибо! Отредактировал ответ для ссылки на это. JakeGould 9 лет назад 0
1
LawrenceC

You can't modify the MD5 checksum without also modifying the file. If you download the file, then download the hash, and then your computation of the file's has doesn't match what is given, either the hash or the file is wrong or incomplete.

If you want to "tie" the file to something external, such as author, machine, etc. it needs to be signed, using a PKI-type process with certificates. The file author, etc. can sign the file with his/her private key, and you can verify signatures with the public key, which should be publicly available, itself signed by a CA both you and the author trust, and downloadable, preferably from multiple locations.

Modifying the file would make the signature invalid, so this can be used to verify file integrity too.

1
Mark K Cowan

Hashes indicate whether your version of the file (the "download") differs from the server's version. They offer no guarantee to the authenticity of the file.

Digital signatures (asymmetric encryption + hash function) can be used to verify that the file has not been modified by anyone who does not have the corresponding private key.

The file's creator hashes the file and encrypts the hash using their (secret) private key. That way, anyone with the corresponding (non-secret) public key can verify that the hash matches the file, but while the file contents can be modified, nobody can replace the corresponding hash with one that matches the file (after hash is decrypted using the public key) - unless they manage to brute-force the private key, or gain access to it somehow.

What's to stop Mr "A.Hacker" from simply modifying the file, then signing it with their own private key?

In order to validate the file, you need to compare its hash to the one that you obtained by decrypting the associated digital signature. If you think the file is from "I.M.Awesome", then you decrypt the hash using his key and the hash does not match the file, since the hash was encrypted using A.Hacker's key.

Digital signatures hence allow one to detect both accidental and malicious changes.

But how do we get I.M.Awesome's public key in the first place? How can we ensure that when we obtained his/her key, it wasn't actually A.Hacker's key being served by a compromised server or a man-in-the-middle attack? This is where certificate chains and trusted root certificates come in, neither of which are perfectly secure [1] solutions to the problem, and both of which should probably be well explained on Wikipedia and on other questions on SO.

[1] Upon inspection, the root certificates that shipped with the Microsoft OS on my work PC include a certificate from the U.S. Government. Anyone with access to the corresponding private key cough NSA cough can therefore serve content to my web browser that passes the "is there a padlock in the address bar" check. How many people will actually bother to click on the padlock and see who's key-pair is being used to "secure" the connection?

Требуется только один человек, который проверяет цепочку сертификатов, чтобы вызвать скандал. Если вы думаете, что АНБ будет использовать правительственный ключ CA для MITM вместо того, чтобы использовать один украденный из частного или, что еще лучше, иностранного центра сертификации (таким образом, предоставляя правдоподобную защиту), у меня есть мост, чтобы продать вас. Charles Duffy 9 лет назад 0
Я предлагал возможность использовать его для нацеливания MITM на конкретного пользователя. Что касается того, возможно ли это на самом деле, то это для людей из фольги, чтобы обсудить Mark K Cowan 9 лет назад 0
Я не подвергаю сомнению, вероятен ли целевой MITM. Я подвергаю сомнению, вероятно ли быть достаточно небрежным, чтобы использовать легко отслеживаемый и приписанный ключ CA для его выполнения. В частности, для цели с достаточно высокой ценностью исходящий сетевой трафик должен регистрироваться достаточно подробно, чтобы включать метаданные вплоть до открытой части рукопожатия SSL, так что даже если пользователь не смотрит, его сотрудники службы безопасности или автоматизированная инфраструктура может сделать это в ретроспективном анализе. Charles Duffy 9 лет назад 0

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