Согласно этой статье и многим другим, SHA-1 не является безопасным.
В моем случае меня не беспокоят пароли или цифровые сертификаты. Я обеспокоен целостностью файлов.
Разумно ли возможно, чтобы файл (например, образ ISO или исполняемый файл) был злонамеренно изменен таким образом, чтобы:
- Поддерживает хэш исходного файла SHA-1 и
- Поддерживает общее содержимое файла и его работу (но, конечно, теперь включает вредоносный контент, которого изначально там не было)
На мой взгляд, изменение файла таким образом, что это приводит к коллизии SHA-1, сделает файл совершенно бесполезным. ISO был бы полностью поврежден, или исполняемый файл был бы настолько зашифрован, что даже не был бы исполняемым файлом.
Но, как я понимаю, это может быть неправильно. До сих пор я ничего не нашел в поиске Google в отношении постоянной пригодности SHA-1 для проверки файлов. Есть идеи?
Ответы:
Никто еще не достиг этого для SHA-1. Это возможно в теории, но все еще не практично. Отчеты о небезопасности в SHA-1 просто означают, что уровень безопасности не так высок, как нам хотелось бы, и это означает, что у нас не так много лет, чтобы думать об этом, как мы думали.
Труднее создать файл с тем же хешем SHA-1, что и данный файл, чем создать два файла самостоятельно с одним и тем же хешем SHA-1. И, насколько нам известно, никто в мире еще не выполнил даже эту более легкую задачу. Это не значит, что завтра этого не произойдет.
источник
Это теоретически возможно, но это еще не сделано.
То, что вы ищете, называется «коллизия хешей»: два файла с одинаковым хешем. Криптографические хеш-коды, такие как SHA-1, обычно предназначены для того, чтобы сделать это трудным. Поскольку SHA-1 является 160-битным кодом, в среднем потребуется 2 ^ 159 попыток перебора, чтобы найти дубликат. Если найден алгоритм, который надежно работает лучше, чем алгоритм против криптографического хэша, хеш считается «сломанным».
MD-5 - пример очень сломанного хэша. Он должен был иметь прочность 128 бит, что требовало в среднем 2 ^ 127 попыток. Как и в случае злоупотребления известными уязвимостями, фактическое количество необходимых попыток может быть всего 2 ^ 47. Это намного меньше, чем 2 ^ 127. Фактически, это было сделано менее чем за один день на современном вычислительном кластере.
Я привожу этот пример, потому что это наиболее близко к тому, как вы собираетесь использовать SHA-1. Тем не менее, это не самый распространенный подход криптоанализа для проверки того, что хэши не сломаны. Они обычно допускают конфликт между двумя файлами, выбранными злоумышленником, вместо того, чтобы вы выбирали один файл, а злоумышленник пытается сопоставить его. Преимущество такого рода атак состоит в том, что их легче сравнивать. Если я нахожу, что «тяжело» взломать ваш файл, значит ли это, что другой файл такой же сильный? Эта атака, при которой злоумышленник выбирает оба файла, гарантирует, что мы поймаем худшее из худшего.
Этот тип атаки позволяет использовать интересный трюк, известный как « атака на день рождения». ». Короче говоря, использование атаки на день рождения вдвое снижает эффективность алгоритма, поэтому SHA-1 требует в среднем 2 ^ 80 попыток, а MD5 - в среднем 2 ^ 64. Это половина из 160 и 128 соответственно.
SHA-1 имеет известные атаки, которые уменьшают свою силу с 2 ^ 80 до 2 ^ 69. Это не будет иметь большого значения для вас. 2 ^ 69 попыток это долго .
Однако из истории мы обнаружили, что алгоритмы хеширования не нарушаются самопроизвольно, а скорее нарушаются со временем. Никто не взломает алгоритм, подобный MD-5, взяв его с 2 ^ 64 до 2 ^ 47 за ночь. Это происходит со временем, так как многие люди публикуют статьи о математике, которую они используют против нее. Обычно можно наблюдать, как сложность атак медленно снижается с самого начала алгоритма (где лучшая атака обычно - атака на день рождения).
Тот факт, что мы видим некоторые изменения в столкновениях, предполагает, что SHA-1 видит свет в конце туннеля. Он все еще силен, но может возникнуть желание перейти на новейший SHA-3, который в настоящее время намного безопаснее.
Вы должны действительно принимать такие решения с точки зрения модели угроз. Сколько урона может нанести атакующий, если он получит одно из этих столкновений. Являются ли ваши злоумышленники сценаристами, имеющими доступ к нескольким ноутбукам, или правительствами, располагающими целыми суперкомпьютерными кластерами. Насколько велико временное окно, злоумышленник должен разбить хеш, прежде чем он не будет использоваться (многие виды криптографии включают «смену защиты», например, смену пароля). Все это повлияет на то, насколько серьезно вы должны учитывать столкновения.
источник
Недостатки в SHA-1, обсуждаемые в этой статье, очень специфичны: они позволяют злоумышленникам создавать две вещи, которые хэшируют одно и то же значение (это называется «атака столкновением»). Тем не менее, атака столкновения требует, чтобы злоумышленник контролировал оба файла. Если злоумышленник не контролирует исходный файл, атака столкновением не позволяет ему найти другой файл с таким же значением хеш-функции.
Причина, по которой это важно для TLS / SSL (и подписей в целом), заключается в том, что с их помощью злоумышленник часто может контролировать оба файла. Сертификат TLS в основном создается лицом, запрашивающим его (биты, которые он не контролирует, часто предсказуемы), поэтому коллизии позволяют им сделать действительный и незаконный сертификат, получить действительный сертификат и передать подпись.
Для файлов такая же ситуация не всегда применима. Если вы обеспокоены тем, что создатель файла является злоумышленником (например, он получит одну вещь независимо проверенную как хорошую, а затем отправит вам вредоносную информацию с тем же хешем), применяется атака SHA-1, и вы должны посмотреть к постепенному отказу от него (хотя это еще не критично, как упоминал Дэвид Шварц). Если исходный файл является доверенным, то злоумышленник не может применить известные в настоящее время атаки SHA-1, хотя вам все равно следует подумать о его поэтапном отказе, если можете (если у вас есть выбор, используйте хэш без известных атак, таких как SHA- 2).
В ответ на «столкновение не будет полезным» - хотя атака не требует от злоумышленника возможности получить полезное столкновение, обычно не так сложно превратить «столкновение» в «полезное столкновение». Многие форматы файлов имеют достаточно места, в котором вы можете иметь все, что захотите, не влияя на функциональность файла; злоумышленник обычно может изменить это, чтобы получить столкновение (если столкновения практически обнаруживаются), сохраняя при этом функциональную часть в том виде, в каком он хочет. Разрыв между «академической атакой» и «практической атакой» может быть большим; разрыв между «любым столкновением» и «полезным столкновением» обычно намного меньше.
Более серьезная проблема, которая не связана с выбором алгоритма, заключается в том, как вы получаете хэш. Все, что делает хеш - это переносит проблему с «получить реальный файл» на «получить реальное значение хеша»; хеш-значение, отправленное с того же сервера и с тем же типом соединения, что и файл, совершенно бесполезно против злонамеренной модификации (любой злоумышленник, который может подделать файл, может подделать хеш). Хэши полезны только для этого, если вы можете доверять хешу больше, чем файлу; хотя иногда это так (торренты, зеркала), они часто используются, когда это не так. Поэтому вы должны быть очень осторожны с этим всякий раз, когда используете хеши для проверки целостности.
источник
Вы должны различать столкновение атаку и прообраз атаку . Поиск любых двух сообщений, хэширующих одно и то же значение, является атакой столкновения.
Замена одного конкретного данного сообщения (здесь: исполняемый файл) другим сообщением с таким же хешем является (второй) атакой с прообразом.
SHA-1 сломан, поскольку атака столкновением может быть осуществлена в 2 52 операциях согласно статье в Википедии, в которой не приводится цитата для этого числа (лучшая атака, о которой я знаю, которая на самом деле заслуживает доверия, - это атака Марка Стивенса , что занимает 2 60 операций). Но давайте предположим пессимистический случай 2 52 .
Это связано с тем, что атака такого масштаба не только теоретически возможна, но и вполне осуществима менее чем за день на установке с несколькими графическими процессорами. Это, конечно, проблема для приложений, в которых подойдут «любые два» сообщения. Даже цифра 2 60, указанная Стивенсом (что в 256 раз больше работы), вполне выполнима, если ваш злоумышленник хочет потратить на это дополнительные деньги или потратить год времени.
Это именно то, что не помешает кому-либо, участвующему в шпионаже или киберпреступности, подделать сертификаты.
Теперь у атаки с прообразом показатель экспоненты в два раза больше, так что если предположить , что атака столкновения составляет 2 52 , то это будет 2 104 операции, что является совершенно другой стадией.
Это не только нецелесообразно (машина, которая в миллиард раз быстрее, чем та, что упоминалась в предыдущем параграфе, все равно займет около 6 миллионов или около того лет), но, учитывая наши незначительные средства производства энергии, это абсолютно невозможно.
Выполнение такого масштабного расчета потребовало бы источника энергии, который намного больше, чем все, что мы можем себе позволить посвятить одной операции. Нет, не совсем источник энергии размером с солнце, но все же довольно большой .
Вы можете реально ожидать получить что-нибудь от 10 до 50 GFLOPS из одного ватта. Предполагая, что происходит какое-то чудо и процессоры получают в несколько тысяч раз больше энергии за ночь, можно предположить, что 1 SHA ≈ 1 FLOP (довольно оптимистично!). Это будет означать, что для выполнения 2 104 вычислений хэша в течение 10 лет вам потребуется электростанция мощностью 10 12 Вт. Чтобы запустить атаку в течение 1 года, вам нужна электростанция мощностью 10 13 Вт. Это примерно в 50 раз больше, чем все атомные электростанции США, Франции и Японии могут производить вместе, только для создания единого хэша.
Этого не произойдет , есть гораздо более простые способы достижения той же цели (использование сервера, на котором хранится исходный хеш, и замена его, шантаж кого-либо и т. Д.).
источник
Общая точка статьи refered в вопросе: SHA1 является устаревшим и должно быть прекращено , пока еще есть время , чтобы сделать это плавно. В некоторых областях время истекает, так как Google и Microsoft соблюдают крайние сроки.
Практическое правило для устаревшей технологии:
Краткая цитата из сообщения в блоге 2012 года Брюса Шнайера: «Дело в том, что мы в сообществе должны начать миграцию с SHA-1 и на SHA-2 / SHA-3 сейчас».
источник
Для части вашего вопроса, касающейся хэширования SHA-1, это было решено несколькими ответами.
Однако большая часть этого зависит от типа файла, с которым мы работаем:
Что это означает, сильно зависит от того, что обнаруживает изменения:
Итак, что вам осталось, так это как получить столкновения в любой структуре, которая не разрушается и, возможно, в некоторой степени не обнаруживается:
Допустим, у вас есть сверхбыстрый компьютер и небольшой файл, такой, что модификация с допустимой последовательностью байтов и повторным вычислением хэша занимает 1 миллисекунду (вероятно, для этого требуется некоторое выделенное оборудование). Если распределение хеша является совершенно случайным и распределяется по всему диапазону, вы будете сталкиваться с SHA-1 при каждой
2^160
попытке (грубое форсирование).Но погодите, давайте попробуем
2^60
и2^52
версию, и делать вид , что они позволяют изменить файл так , как нам нравится (они не делают) , и что они тоже, могут быть сделаны в 1мсе каждый попробовать:Но, может, тебе повезет. На самом деле, на самом деле, чудеса «больше чудо, чем все, что люди называют» чудеса.
источник
Не совсем, вы можете выполнить одно из этих условий одновременно, но не одновременно ... возможно получить один и тот же хеш для двух разных файлов, но для кого-то изменить файл и затем попытаться получить один и тот же хэш почти невозможно насколько я знаю
источник
Да, это возможно. Подумайте, как работают вирусы на EXE-файлах. Полезная нагрузка вредоносного ПО добавляется к исходному EXE-файлу, так что программа все еще делает то, что делала изначально, но также распространяется как вирус. Теперь, чтобы сохранить тот же хэш, вам понадобится дополнительный специально созданный отступ .
Это означает, что файл будет больше. Но в случае с EXE, возможно, вы могли бы удалить часть менее используемого кода, чтобы программа работала только изначально. В случае JPEG, вы можете сжать изображение дальше или использовать другое изображение полностью. Для ISO вы можете удалить наборы файлов. Вычисления, требуемые для репликации хэша, будут более сложными и, возможно, математически невозможными для конкретных случаев, но все же будут возможны в целом.
источник