Pull to refresh

Comments 10

Посмотрите на один раунд сети: вход (L, R) превращается в выход (L, R') = (L, F(L)^R)
А теперь обратно: вход (L, R') = (L, F(L)^R) превращается в выход (L, R'') = (L, F(L)^F(L)^R) = (L, R)
Осталось только добрать нужное количество раундов и менять местами L и R между раундами. Вот и вся магия :)
Просто некоторым такие конструкции >> (L, R'') = (L, F(L)^F(L)^R) = (L, R)
немного взрывают мозг )
И еще важный, если не ключевой момент:
>> Функция F по идее может быть любой выдуманной функцией (хоть сложным хэшем, хоть тупо возвращающей 0)
Это не так, F обязательно должна зависеть от ключа k, т.е. в моем комментарии следует заменить F(L) на F(k, L).
Иначе всегда можно вычислить F(L) и раунд является бессмысленным.
И кроме того функция не должна быть линейной, это тоже снижает безопасность.
Линейной в смысле булевых функций (относительно операции XOR). В этом случае вся сеть становится линейной.
я тут не трогал аспект безопасности, а хотел показать, что её не надо делать обратимой
Dan Boneh в своем crypto-class.org довольно доступно рассказывает про сеть Фейстеля. Магические комбинации L и R становятся ясны.
Sign up to leave a comment.

Articles