Что такое SHAttered? SHA-1 Атаки на столкновение, пояснения

Оглавление:

Что такое SHAttered? SHA-1 Атаки на столкновение, пояснения
Что такое SHAttered? SHA-1 Атаки на столкновение, пояснения

Видео: Что такое SHAttered? SHA-1 Атаки на столкновение, пояснения

Видео: Что такое SHAttered? SHA-1 Атаки на столкновение, пояснения
Видео: Как включить режим Aero в Windows 10 / Как включить эффект прозрачности Windows 10 - YouTube 2024, Май
Anonim
В первый день 2016 года Mozilla прекратила поддержку ослабленной технологии безопасности под названием SHA-1 в веб-браузере Firefox. Почти сразу же они отменили свое решение, поскольку оно сократило бы доступ к некоторым старым веб-сайтам. Но в феврале 2017 года их страхи, наконец, сбылись: исследователи сломали SHA-1, создав первую реальную атаку столкновения. Вот что все это значит.
В первый день 2016 года Mozilla прекратила поддержку ослабленной технологии безопасности под названием SHA-1 в веб-браузере Firefox. Почти сразу же они отменили свое решение, поскольку оно сократило бы доступ к некоторым старым веб-сайтам. Но в феврале 2017 года их страхи, наконец, сбылись: исследователи сломали SHA-1, создав первую реальную атаку столкновения. Вот что все это значит.

Что такое SHA-1?

Image
Image

SHA в SHA-1 означает Алгоритм безопасного хеша, и, просто говоря, вы можете рассматривать это как своего рода математическую проблему или метод, который скремблирует данные, которые помещаются в него, Разработанный NSA Соединенных Штатов, он является основным компонентом многих технологий, используемых для шифрования важных передач в Интернете. Общие методы шифрования SSL и TLS, о которых вы, возможно, слышали, могут использовать хеш-функцию, такую как SHA-1, для создания подписанных сертификатов, которые вы видите на панели инструментов браузера.

Мы не будем углубляться в математику и информатику о любой из функций SHA, но вот основная идея. «Хэш» - это уникальный код, основанный на вводе любых данных. Даже небольшая случайная строка букв, вводимых в хеш-функцию, такую как SHA-1, вернет длинное заданное количество символов, что делает (возможно) невозможным вернуть строку символов обратно к исходным данным. Так обычно работает хранилище паролей. Когда вы создаете пароль, ваш пароль вводится и сохраняется сервером. По возвращении, когда вы вводите пароль, он снова хешируется. Если он совпадает с исходным хешем, можно предположить, что ввод будет таким же, и вам будет предоставлен доступ к вашим данным.
Мы не будем углубляться в математику и информатику о любой из функций SHA, но вот основная идея. «Хэш» - это уникальный код, основанный на вводе любых данных. Даже небольшая случайная строка букв, вводимых в хеш-функцию, такую как SHA-1, вернет длинное заданное количество символов, что делает (возможно) невозможным вернуть строку символов обратно к исходным данным. Так обычно работает хранилище паролей. Когда вы создаете пароль, ваш пароль вводится и сохраняется сервером. По возвращении, когда вы вводите пароль, он снова хешируется. Если он совпадает с исходным хешем, можно предположить, что ввод будет таким же, и вам будет предоставлен доступ к вашим данным.
Хэш-функции полезны прежде всего потому, что они позволяют легко определить, изменился ли вход, например, файл или пароль. Когда входные данные являются секретными, например пароль, хэш практически невозможно отменить и восстановить исходные данные (также известный как «ключ»). Это немного отличается от «шифрования», целью которого является скремблирование данных с целью их последующего дескремблирования с использованием шифров и секретных ключей. Хэши просто предназначены для обеспечения целостности данных - чтобы все было одинаково. Git, программное обеспечение для контроля версий и распространения для открытого кода, по этой причине использует хеши SHA-1.
Хэш-функции полезны прежде всего потому, что они позволяют легко определить, изменился ли вход, например, файл или пароль. Когда входные данные являются секретными, например пароль, хэш практически невозможно отменить и восстановить исходные данные (также известный как «ключ»). Это немного отличается от «шифрования», целью которого является скремблирование данных с целью их последующего дескремблирования с использованием шифров и секретных ключей. Хэши просто предназначены для обеспечения целостности данных - чтобы все было одинаково. Git, программное обеспечение для контроля версий и распространения для открытого кода, по этой причине использует хеши SHA-1.

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

Как эта технология влияет на меня?

Image
Image

Предположим, вам нужно посетить сайт в частном порядке. Ваш банк, ваша электронная почта, даже ваша учетная запись Facebook - все используют шифрование, чтобы сохранить данные, которые вы отправляете им конфиденциально. Профессиональный веб-сайт предоставит шифрование, получив сертификат от доверенного органа - третьего лица, которому доверяют, чтобы убедиться, что шифрование находится на уровне, закрытом между веб-сайтом и пользователем, и не отслеживается какой-либо другой стороной. Эти отношения с третьей стороной, называемые Органы сертификации, или же Калифорния, имеет решающее значение, поскольку любой пользователь может создать «самозаверяющий» сертификат - вы даже можете сделать это самостоятельно на машине под управлением Linux с Open SSL. Например, Symantec и Digicert являются двумя широко известными компаниями ЦА.

Image
Image

Давайте рассмотрим теоретический сценарий: How-To Geek хочет, чтобы сеансы пользователей были закрыты с помощью шифрования, поэтому он ходатайствует о CA, таком как Symantec, с Запрос на подпись сертификата, или же КСО, Они создают открытый ключ а также закрытый ключ для шифрования и дешифрования данных, отправленных через Интернет. Запрос CSR отправляет открытый ключ Symantec вместе с информацией о веб-сайте. Symantec проверяет ключ на свою запись, чтобы убедиться, что данные не изменены всеми сторонами, поскольку любое небольшое изменение в данных делает хэш радикально иным.

Эти открытые ключи и цифровые сертификаты подписываются хеш-функциями, потому что вывод этих функций легко увидеть. Открытый ключ и сертификат с проверенным хешем из Symantec (в нашем примере), авторитет, гарантирует пользователю How-To Geek, что ключ не изменился и не отправлен от кого-то злонамеренного.
Эти открытые ключи и цифровые сертификаты подписываются хеш-функциями, потому что вывод этих функций легко увидеть. Открытый ключ и сертификат с проверенным хешем из Symantec (в нашем примере), авторитет, гарантирует пользователю How-To Geek, что ключ не изменился и не отправлен от кого-то злонамеренного.
Image
Image

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

Что такое нападение на столкновение, и возможно ли это в реальном мире?

Возможно, вы слышали о «проблеме дня рождения» в математике, хотя вы, возможно, не знали, как это называется. Основная идея заключается в том, что, если вы соберете достаточно большую группу людей, шансы довольно высоки, и у двух или более человек будет тот же день рождения. На самом деле, выше, чем вы ожидали, достаточно, чтобы это казалось странным совпадением. В группе, насчитывающей до 23 человек, есть 50% вероятность того, что двое поделятся днем рождения.

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

Поиск совпадающих хэшей в двух файлах называется атака столкновения, Известно, что, по крайней мере, одна крупномасштабная атака столкновения уже произошла для хэшей MD5. Но 27 февраля 2017 года Google анонсировала SHAttered, первое в истории столкновение с SHA-1. Google смог создать PDF-файл с таким же SHA-1-хешем, что и другой файл PDF, несмотря на наличие другого контента.

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

Итак, насколько легко эта атака выполнить? SHAttered был основан на методе, обнаруженном Марком Стивенсом в 2012 году, который требовал более 2 ^ 60,3 (9,223 квинтиллиона) операций SHA-1 - ошеломляющего числа. Однако этот метод по-прежнему в 100 000 раз меньше операций, чем требуется для достижения того же результата с использованием грубой силы. Google обнаружил, что с 110 высокопроизводительными графическими картами, работающими параллельно, для создания столкновения потребуется около одного года. Аренда этого времени вычислений от Amazon AWS обойдется примерно в 110 000 долларов. Имейте в виду, что по мере снижения цен на компьютерные части, и вы можете получить больше энергии за меньшее, атаки, подобные SHAttered, становятся легче снимать.

$ 110 000 может показаться много, но это зависит от доступности для некоторых организаций, что означает, что cyberervillians в реальной жизни может подделывать подписи цифровых документов, вмешиваться в системы резервного копирования и контроля версий, такие как Git и SVN, или создавать вредоносные Linux ISO, которые выглядят законными.

К счастью, существуют смягчающие факторы, предотвращающие такие атаки. SHA-1 редко используется для цифровых подписей. Власти сертификатов больше не предоставляют сертификаты, подписанные с SHA-1, и Chrome и Firefox отказались от поддержки. Распределения Linux обычно выпускаются чаще, чем один раз в год, что делает непрактичным для злоумышленника создание вредоносной версии, а затем генерирует одно дополнение, имеющее один и тот же SHA-1 хэш.

С другой стороны, некоторые атаки, основанные на SHAttered, уже происходят в реальном мире. Система контроля версий SVN использует SHA-1 для дифференциации файлов. Загрузка двух PDF-файлов с идентичными хэшами SHA-1 в репозиторий SVN приведет к его повреждению.

Как я могу защитить себя от нападений SHA-1?

Для обычного пользователя не так много. Если вы используете контрольные суммы для сравнения файлов, вы должны использовать SHA-2 (SHA-256) или SHA-3, а не SHA-1 или MD5. Аналогично, если вы разработчик, обязательно используйте более современные алгоритмы хеширования, такие как SHA-2, SHA-3 или bcrypt. Если вы беспокоитесь о том, что SHAttered используется для того, чтобы дать двум отличным файлам одинаковый хэш, Google выпустил инструмент на сайте SHAttered, который может вас проверить.

Image Credits: Lego Firefox, много хэшей, пожалуйста, не мешайте веб-автору неизвестно, Google.

Рекомендуемые: