SHA-1 на бойне

Тема первого выпуска 2020 года - публикация описания новой атаки на и без того уже ослабленный предыдущими исследованиями алгоритм хеширования SHA-1. Атаку продемонстрировали и описали Гаэтан Лерент и Томас Пейрин (Gaëtan Leurent, Thomas Peyrin) из действующего во Франции исследовательского центра Inria и сингапурского Технологического Университета Наньянг (Nanyang Technological University).

Алгоритмы хеширования обеспечивают необратимые преобразования произвольного сообщения в текст фиксированной длины, называемый хешом этого сообщения. Они применяются для аутентификации данных — посчитать хеш от скачанного файла можно достаточно быстро. Вычисление хеша — промежуточный шаг при выработке электронной подписи в большинстве современных схем: подписываемое сообщение сначала хешируется, а подпись считается уже от хеша. Стойкость хеша оценивается в битах и принимается равной половине его длины — для 160 бит SHA-1 она оценивалась в 80 бит, пока не появились методы сокращения объёма вычислений до 68 бит. Эти результаты заставили говорить о том, что алгоритм нуждается в скорейшей замене, и действительно, уже начали разрабатываться и внедряться алгоритмы семейства SHA-2, длиной от 224 до 512 бит (и стойкостью от 112 до 256 бит соответственно).

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

Атака SHAttered, о которой мы рассказывали в феврале 2017 года, была атакой на третий пункт: были созданы 2 PDF-файла с одинаковыми значениями хеша. К тому моменту браузеры уже перестали доверять TLS-сертификатам, выпущенным с применением этого алгоритма. Он по-прежнему использовался в старых версиях протокола TLS, в DNSSec и других протоколах, но в IETF возникло активное движение за изменение спецификаций таким образом, чтобы прекратить его применение. Цена атаки составляла около 110 тысяч долларов, но практических применений у неё не было.

Обнародованная в начале января атака SHAmbles («бойня» по-английски) продемонстрировала уже существенно более неприятную возможность — создать два сообщения с одинаковым началом, разным содержимым в середине, и одинаковым хешом. Это означает, что можно получить одинаковый хеш от файлов любых форматов, где есть блоки, допускающие произвольные данные. Это и уже упомянутые PDF-файлы, и картинки ряда форматов, и, разумеется, TLS-сертификаты — они могут содержать в себе расширения с произвольным набором байт.

Так как удостоверяющие центры в интернете перестали использовать SHA-1 для сертификатов сайтов, то для демонстрации атаки была выбрана программа GnuPG — популярная реализация PGP. Версия 1.4 этой программы использует SHA-1 по умолчанию, прежде всего, из соображений совместимости с более старыми версиями. Исследователям удалось сгенерировать PGP-сертификаты с разными ключами и одинаковой хеш-суммой за 75 тысяч долларов. Однако оценка стоимости атаки существенно ниже: когда удалось установить алгоритм, цена за одну коллизию текстов с совпадающим началом может быть порядка 10 тысяч долларов. Со временем она может упасть ещё сильнее: графические ускорители и оборудование для майнинга криптовалют наращивают производительность довольно интенсивно.

После публикации информации об уязвимости в GnuPG заявили о том, что сертификаты, использующие SHA-1 и выпущенные после 1 декабря 2019 года, будут считаться недействительными. В OpenSSL призвали отказаться от старых версий протокола TLS - 1.0 и 1.1, использующих связку SHA-1 и MD5 для верификации, хотя, в отличие от каждого алгоритма в отдельности, для связки в целом коллизию построить пока не удалось. Лерент и Тейлор в своей статье, впрочем, оценивают эту возможность как вполне достижимую. Есть аналогичные проблемы и в протоколе SSH. Многие серверы доверенного времени также используют протокол SHA-1.

Доменная индустрия отреагировала на публикацию предложением запретить использование алгоритмов DNSSec, использующих SHA1 для подписи — это алгоритмы 5 (RSASHA1) и 7 (RSASHA1-NSEC3-SHA1). Кроме того, был подробно описан сценарий возможной атаки с использованием SHAmbles. В качестве примера контента, который могут подделывать злоумышленники, фигурируют TXT-записи. Они могут содержать почти произвольные данные и часто используются для передачи информации через DNS в тех случаях, когда специальных типов DNS-записей ещё не завели. TXT-записи используются, в частности, в протоколе ACME для автоматизированного выпуска TLS-сертификатов. В настоящий момент 274 домена верхнего уровня разрешают использование SHA-1 в DNSSec и следовательно, потенциально уязвимы к атаке.

В опубликованной статье также есть призыв заменить SHA-1 при построении уникальных идентификаторов коммитов в системе контроля версий Git на что-либо более новое. Напомним, что сразу после публикации первой коллизии три года назад кто-то с помощью демонстрационных файлов повредил репозиторий браузерного движка WebKit. Система контроля версий SVN, используемая в проекте, тоже использовала SHA-1 для дедупликации файлов и была на несколько дней приведена в неработоспособное состояние, так что пришлось срочно выпускать специальный инструмент для предотвращения «жестокого обращения» с репозиторием.

Авторы публикации пока не открыли исходный код своего ПО для создания коллизий в SHA-1, скорее всего, из-за достаточно большого объёма использования хеша в самых разнообразных протоколах. Но знаний о том, что такая атака возможна, а также сведений, почерпнутых из опубликованной статьи, может оказаться достаточно для повторения атаки независимыми исследователями.


Автор:  Дмитрий Белявский (ТЦИ)

Возврат к списку