Интернет магазин китайских планшетных компьютеров



Компьютеры - Коллизия хеш-функции - Коллизии криптографических хеш-функций

23 января 2011


Оглавление:
1. Коллизия хеш-функции
2. Коллизии криптографических хеш-функций
3. Разрешение коллизий в хеш-таблицах



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

Свойства криптографических хеш-функций

Для того, чтобы хеш-функция H считалась криптографически стойкой, она должна удовлетворять трём основным требованиям, на которых основано большинство применений хеш-функций в криптографии:

  • Необратимость: для заданного значения хеш-функции m должно быть практически невозможно найти блок данных X, для которого H = m.
  • Стойкость к коллизиям первого рода: для заданного сообщения M должно быть практически невозможно подобрать другое сообщение N, для которого H = H.
  • Стойкость к коллизиям второго рода: должно быть практически невозможно подобрать пару сообщений ~, имеющих одинаковый хеш.

Использование коллизий для взлома

В качестве примера можно рассмотреть простую процедуру аутентификации пользователя:

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

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

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

Схожим образом можно использовать коллизии для подделки цифровых подписей и сертификатов.

Защита от использования коллизий

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

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

Другим методом является конкатенация хешей, получаемых от двух различных хеш-функций. При этом, чтобы подобрать коллизии к хеш-функции C=y \| z, являющейся конкатенацией хеш-функций y и z, необходимо знать методы построения коллизий и для y, и z. Недостатком конкатенации является увеличиние размера хеша, что не всегда приемлемо в практических приложениях.

Методы поиска коллизий

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

Кроме того, существует атака расширения: зная H, можно вычислить H = H\|y); которая, для некоторых хеш-функций, работает даже при обеспечении стойкости к коллизиям первого рода, стойкости к коллизиям второго рода, а также свойства необратимости. Подразумевается, что нет необходимости знать X, а достаточно знать лишь его хеш. Таким образом можно, например, дописывать дополнительную информацию к чужому сообщению. Для предотвращения этой атаки используют различные методы: добавляют дополнительный раунд при хешировании, отличный от предыдущих; применяют многократное хеширование; или используют комбинацию предыдущих 2х методов.

Но атаку расширения можно рассмотреть и с другой стороны: если у нас есть некоторое сообщение X, и хэш-функция уязвима к атаке расширения, то легко можно найти коллизию первого рода: M_1=X\|Y, M_2=H\|Y, H = H, то есть нарушается свойство стойкости к коллизиям первого рода.

Большая часть современных хеш-функций имеют одинаковую структуру, основанную на разбиении входного текста на блоки и последующем итерационном процессе, в котором на каждой итерации используется некоторая функция G, где x — очередной блок входного текста, а y — результат предыдущей операции. Однако такая схема несовершенна, так как, зная функцию G, можно проводить анализ данных в промежутках между итерациями, что облегчает поиск коллизий.

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

Коллизии хеш-функций MD4 и MD5

В 1996 году Ганс Доббертин нашёл псевдоколлизии в MD5, используя определённые инициализирующие векторы, отличные от стандартных. Оказалось, что можно для известного сообщения построить второе, такое, что оно будет иметь такой же хеш, как и исходное. C точки зрения математики это означает: MD5 = MD5, где IV — начальное значение буфера, а L1 и L2 — различные сообщения.

В 2004 году китайские исследователи Ван Сяоюнь, Фен Дэнгуо, Лай Сюэцзя и Юй Хунбо объявили об обнаруженной ими уязвимости в алгоритме, позволяющей за небольшое время находить коллизии.

В 2005 году исследователи Ван Сяоюнь и Юй Хунбо из университета Шаньдун в Китае, опубликовали алгоритм для поиска коллизий в хеш-функции MD5, причём их метод работает для любого инициализирующего вектора, а не только для вектора, используемого по стандарту. Применение этого метода к MD4 позволяет найти коллизию меньше чем за секунду. Он также применим и к другим хеш-функциям, таким как RIPEMD и HAVAL.

В 2008 году Сотиров Александр, Марк Стивенс, Якоб Аппельбаум опубликовали на конференции 25th Chaos Communication Congress статью, в которой показали возможность генерирования поддельных цифровых сертификатов, на основе использования коллизий MD5.

Коллизии хеш-функции SHA-1

В январе 2005 года Vincent Rijmen и Elisabeth Oswald опубликовали сообщение об атаке на усеченную версию SHA-1, которая позволяет находить коллизии меньше, чем за 2 операций.

В феврале 2005 года Сяоюнь Ван, Йицунь Лиза Йинь и Хунбо Ю представили атаку на полноценный SHA-1, которая требует менее 2 операций.

В августе 2005 года на CRYPTO 2005 эти же специалисты представили улучшенную версию атаки на полноценный SHA-1, с вычислительной сложностью в 2 операций. В декабре 2007 года детали этого улучшения были проверены Мартином Кохраном.

Кристоф де Каньер и Кристиан Рехберг позже представили усовершенствованную версию атаки на SHA-1, за что были удостоены награды за лучшую статью на конференции ASIACRYPT 2006. Ими была представлена двух-блоковая коллизия на 64-раундовый алгоритм с вычислительной сложностью около 2 операций.

Ввиду того, что теоретические атаки на SHA-1 оказались успешными, NIST планирует полностью отказаться от использования SHA-1 в цифровых подписях.

Коллизии других хеш-функций

Хеш функции RIPEMD и HAVAL также являются уязвимыми к алгоритму поиска коллизий MD5, опубликованному Ван Сяоюнь, Фен Дэнгуо, Лай Сюэцзя и Юй Хунбо в 2004 году.

Для второй модификации хеш-функции WHIRLPOOL, называемой Whirlpool-T, на 2009 год не предложено алгоритмов поиска коллизий или псевдоколлизий; существенным ограничением для их нахождения является сложность самой функции и большая длина выходного ключа.

Хеш-функция ГОСТ Р 34.10-2001 по криптостойкости мало отличается от ГОСТ Р 34.10-94, нахождение коллизий для которой сводится к вычислению дискретного логарифма в группе точек эллиптической кривой с предположительно экспоненциальной сложностью. Например, для 256-битных параметров дискретное логарифмирование с помощью ρ-метода или λ-метода Полларда потребует выполнения около 10 операций.



Просмотров: 3816


<<< Дифференциальный криптоанализ
Криптоанализ RSA >>>