Рейтинг:4

Безопасна ли $H(k || m) \oplus k$?

флаг fr

Известно, что $Н(к || м)$ (при использовании SHA1) является небезопасной функцией MAC, поскольку она уязвима для увеличения длины хэша.

Но что насчет $H(k || m) \oplus k$? Нормальное расширение длины хеша сейчас кажется невозможным. Даже если один и тот же ключ используется несколько раз, я не вижу проблемы, пока вывод $Ч$ является достаточно случайным. Я прав?

kelalaka avatar
флаг in
Добро пожаловать в Cryptography.SE. Это вопрос домашнего задания? Каково происхождение этого вопроса?
Maarten Bodewes avatar
флаг in
Обратите внимание, что для свойств безопасности SHA-3 только $H(k \| m)$ считается безопасным — KMAC не более того (но он использует SHAKE, а не SHA).
Johny Dow avatar
флаг fr
@kelalaka Я просматривал некоторые записи CTF и обнаружил атаку на расширение длины хеша. Теперь я просто интересуюсь этой конструкцией.
kelalaka avatar
флаг in
Это излишне для безопасных хеш-функций, таких как SHA3 и Blake2.
Рейтинг:6
флаг ng

Рассмотреть возможность $Ч$ определяется как: SHA-512, с его выводом XORed с первыми 512 битами входного сообщения (дополненными нулями для короткого сообщения). С таким $Ч$, предлагаемый MAC небезопасен. Однако, насколько нам известно, это $Ч$ не хуже, чем SHA-512 со стандартной точки зрения.

Аргумент: заметьте, что если $H(m_1\mathbin\|m_2)=\operatorname{SHA-512}(m_1\mathbin\|m_2)\oplus m_1$ и $\operatorname{MAC}_k(m)=H(k\mathbin\|m)\oplus k$, то для 512-битного ключа¹ $к$ он держит $\operatorname{MAC}_k(m)=\operatorname{SHA-512}(k\mathbin\|m)$. Поэтому это $\имя_оператора{MAC}$ подвержен атаке с расширением длины².

Следовательно, невозможно доказать, что $H(k\mathbin\|m)\oplus k$ представляет собой безопасный MAC без какого-либо понимания внутренней структуры $Ч$.

Я довольно уверен, что предлагаемая конструкция MAC практически безопасна для хэшей семейства SHA-2 и даже для SHA-1. Мы могли бы захотеть доказывать безопасность в предположении, что хэш имеет Меркле-Дамгард структура, функция сжатия, построенная из блочного шифра $Е$ за Дэвис-Мейер конструкция с соответствующим размером блока и ключа для $Е$. Я думаю, что это было бы возможно в рамках идеальной модели шифра, но не стандартной модели безопасности $Е$. Проблема в том, что операция XOR ключа с выходом блочного шифра может ослабить его. Это тот случай, например.для AES-128 в режиме расшифровки, где XOR удаляет безопасность раунда.


¹ Для ключа произвольного размера $\operatorname{MAC}_k(m)=\operatorname{SHA-512}(k\mathbin\|m)\oplus F_{|k|}(m)$ куда $F_{|к|}(м)$ является $ 0 ^ {\ мин (| к |, 512)} $, а затем первый $\мин(\макс(512-|к|,0),|м|)$ кусочки $м$, с последующим $0^{\max(512-|k|-|m|,0)}$. Это все еще позволяет атаковать.

² Вопреки тому, что я написал изначально, мы не можем восстановить $к$ из запросов.

cisnjxqu avatar
флаг us
Мне трудно доказать, что $H$ является хеш-функцией, устойчивой к коллизиям. Пусть $H(m_1\|m_2) = \mathrm{SHA}(m_1\|m_2)\oplus m_1$.Учитывая коллизию $H(m_1\|m_2)$, нам нужно указать коллизию для $\mathrm{SHA}$. Пусть $m_a, m_b$ — два сталкивающихся входа $H$ с $m_a \neq m_b$ и $H(m_a) = H(m_b)\iff\mathrm{SHA}(m_{a_1}\|m_{a_2} )\oplus m_{a_1} = \mathrm{SHA}(m_{b_1}\|m_{b_2})\oplus m_{b_1}$. Легко вывести коллизию, если $m_{a_1} = m_{b_1}$, но что, если они различны? Можем ли мы ограничить вероятность того, что они различны?
fgrieu avatar
флаг ng
@cisnjxqu: я думаю, мы могли бы доказать, что $H$ определен таким образом, что $H(m_1\mathbin\|m_2)=\mathrm{SHA}(m_1\mathbin\|m_2)\oplus m_1$ устойчив к коллизиям в рамках модели $\mathrm{SHA}$ как случайный оракул. Однако это плохая модель, поскольку она не учитывает свойство удлинения длины. Я думаю, что мы могли бы более тщательно доказать это с более тонкой моделью $\mathrm{SHA}$, где мы используем реальную конструкцию Меркла-Дамгарда и круглую функцию, смоделированную случайным оракулом.
cisnjxqu avatar
флаг us
Это возможно, да. Я предполагаю, что мой вопрос заключается в том, существует ли хеш-функция, устойчивая к коллизиям (здесь $\mathrm{SHA}$), такая, что $H$ _не_ устойчива к коллизиям.
fgrieu avatar
флаг ng
@cisnjxqu: Да. Пример: определите $S(m)$ как первый бит $m$, соединенный с идеальным хэшем остальной части $m$. $S$ устойчив к коллизиям, а $H$, определяемый как $H(m_1\mathbin\|m_2)=S(m_1\mathbin\|m_2)\oplus m_1$, — нет, поскольку первый бит входных данных $ H$ не влияет на результат.
Johny Dow avatar
флаг fr
@fgrieu Большое спасибо! Не могли бы вы дать мне еще несколько советов о том, как восстановить ключ, используя расширение длины хеша? не могу понять..
fgrieu avatar
флаг ng
@Johny Dow: я был неправ, мы не можем восстановить ключ. См. измененные первые два абзаца ответа.

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

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