Задать вопрос
@denis_vl
Программист. Админ. Да и от скуки - на все руки.

Обратимы ли функции S0, S1, E0, E1 из алгоритма SHA-256?

Всем добрый день. Или вечер. Или раннее утро.
В общем-то тема - это и есть вопрос.
То-есть, можно ли найти для этих функций, такую функцию, что бы для любого
y=f(x), через нее можно было бы найти x, при известном y?

Например, найти функцию F, которая будет удовлетворять условию X=F(S0(X))

Ответы желательно аргументировать.
Спасибо заранее.
  • Вопрос задан
  • 972 просмотра
Подписаться 2 Оценить 6 комментариев
Пригласить эксперта
Ответы на вопрос 3
@Veliant
Как пример S0
rol(x, 25) ^ rol(x, 14) ^ (x >> 3)

rol обратим, xor обратим, сдвиг вправо не обратим. т.е. << (сдвиг влево) даст число с нулевыми младшими битами. Так что само выражением не обратимо
Ответ написан
Аналогичная (в терминах четности сдвигов) S0 16-разрядная функция оказалась биективной.
При этом изменение четности приводит к нарушению биекции (как описано у jcmvbkbc выше)

Обновление:
1) чтобы проверить обратимость - необходимо построить двоичную матрицу 32х32, соответствующую данному преобразованию (в GF(2)), и посчитать ее ранг; если операция обратима, то ранг должен получиться равным 32;
2) чтобы построить обратную функцию - обратить полученную в п.1 матрицу.
Ответ написан
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
Обратимы ли функции S0, S1, E0, E1 из алгоритма SHA-256?


Σ0 ( A ) = ( A ⋙ 2 ) ⊕ ( A ⋙ 13 ) ⊕ ( A ⋙ 22 ) -- обратима.
Σ1 ( E ) = ( E ⋙ 6 ) ⊕ ( E ⋙ 11 ) ⊕ ( E ⋙ 25 ) -- тоже обратима.
Что такое E0 и E1 я не нашёл.

Таблицу всех значений S0 и S1 можно построить за несколько минут, если есть свободных 16Г памяти. Все они различны, т.е. обратное преобразование однозначно.
Можно ли найти простую обратную функцию -- непонятно.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы