Рейтинг:1

Что такое дифференциальная атака на хеш-функцию? Как можно атаковать алгоритм SHA и чего можно добиться?

флаг cn

В настоящее время мне поручили атаковать урезанную версию SHA-1. Чего мы пытаемся достичь? Как мы атакуем его?

kelalaka avatar
флаг in
Небольшой поиск [Дифференциальная атака высшего порядка на редуцированный SHA-256](https://eprint.iacr.org/2011/037.pdf) и определения есть...
флаг cn
@kelalaka Я прочитал эту статью. К сожалению, это было слишком сложно для меня понять. Думал, кто-нибудь может объяснить это вкратце. Спасибо за вашу помощь!
Рейтинг:1
флаг in

Однако ответ не прост, хорошая отправная точка Статья Флорана Шабо и Антуана Жу о SHA-0 и SHA-1

Простое введение

В MD4, SHA-0, SHA-1 и SHA-2 есть функция сжатия. $$C:\{0,1\}^\ell \to :\{0,1\}^n$$ куда $n$ выходной размер и $\ell$ длина блока для обработки.

Функция сжатия $С$ можно рассматривать как блочный шифр, где ключом является сообщение, это имеет смысл, поскольку единственной частью является вход.И SHACAL называется блочным шифром SHA-1 и аналогично SHACAL-2 для SHA-2.

Теперь у нас есть блочный шифр и входные данные (начальные значения $H_i$s и выходное значение (хэш - дайджест). Нам нужно найти ключ. Если мы сможем найти ключ, у нас будут атаки и коллизии прообразов. Это может привести к мысли, что мы атакуем так же, как и при дифференциальных атаках, не совсем так, но похожим образом.

Авторы сначала начали с ослабленного SHA-1 (SHI1), где входное расширение не учитывается, а ADD преобразуется в X-or, чтобы не было нелинейной части. С однобитовым возмущением и поправками на входах они показали нахождение коллизий с маской.

введите описание изображения здесь

Позже только преобразовал ADD в X-или (SHI2) для расширения атаки. Они находят дифференциальная маска $\mathcal{M}$ который можно применить к открытому тексту (вводу) для поиска коллизий.

   lookRandomCollision(ч, блок):
      m = ramdom_message (1-блок).
      ч = Хэш (м)
      м' = маска (м)
      ч' = Хэш (м')
      Если ч=ч':
         возвращение (м)
      еще: 
         возврат -1

    пока (1):
        успех lookRandomCollision(SHA-1, 512)
        если секцесс != -1:
            print("Пара коллизий - ", m, mask(m))

Успех атаки - это вероятность успеха маски $\mathcal{M}$ ввести коллизии. Если вероятность успеха маски $1/т$ затем вокруг $c\cdot т$ случайные пары найдут столкновение.

После этого они смотрят на настоящие SHA-0 и SHA-1, чтобы найти такую ​​маску. Они находят один для SHA-0 с $2^{61}$- время сложности. Маска, которую они нашли для SHA-1, не имеет хорошей сложности, чем общая коллизия, т.е. она имеет сложность $> 2^{80}$.

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

И, с большой вероятностью, АНБ знало об этом, поэтому они модифицировали входное расширение SHA-0 на SHA-1, введя ротацию.

Почему это опасно

Рассмотрим случай, когда SHA-1 сломан, у нас есть блок (ы) префикса. $P$ и Блок(и) суффикса $S$ и мы ищем столкновения

$$Hash(P\mathbin\| m \mathbin\|S) = Hash(P\mathbin\| m' \mathbin\|S)$$

Если мы сможем найти хорошую дифференциальную маску $\mathcal{M}$ с хорошей вероятностью мы можем провести атаку на блок $м$. Если часть файла является частью избыточности, как в файлах PDF, то можно создать два разных PDF-файла с одинаковыми значениями хеш-функции. Настоящая опасность, конечно, требует большего. Изменение в $м'$ имеет преимущество для подписавшего. Это тоже можно сделать.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.