231
нее, о том, что лавинный эффект не происходит после всего лишь двух раундов
(конечно же, это зависит от длины блока шифра и входной/выходной длины
S-блоков, но с обоснованными параметрами это сработает). Атакующий смо-
жет отличить двухраундовую SPN от универсальной перестановки, если узнает
результат вычисления SPN по двум входным элементам, которые отличаются
одним битом: в двухраундовой SPN много бит из
двух выходных элементов
будет
одинаковые, что есть нечто неожиданное для случайной перестановки.)
6,2,2 Сети Фейстеля
Сети Фейстеля предлагают другой подход для построения блочных шифров. Пре-
имущество сетей Фейстеля над постановочно-перестановочными сетями в том, что
базовые функции в сети Фейстеля, в сравнении с S-блоками, используемыми в SPN,
их не нужно обращать. Сеть Фейстеля, таким образом, предоставляет способ скон-
струировать обращаемую функцию из необращаемых компонентов. Это важно, так
как хороший блочный шифр должен обладать «неструктурным» поведением (поэто-
му он выглядит случайным), но при этом требуя, чтобы все обращаемые компоненты
конструкции по сути представляли из себя структуру. Требование обращаемости также
накладывает дополнительное
ограничение на S-блоки , что затрудняет их разработку.
Сеть Фейстеля работает в серии раундов. В каждом раунде ключевая раундная
функция применяется, способом, описанным ниже . Раундным функциям не обя-
зательно быть обращаемыми. Они будут ,как правило, построены из компонентов
наподобие S-блоков и смешивающих перестановок, но сеть Фейстеля может ра-
ботать с
любыми раундными функциями, независимо от их конструкции.
В сбалансированной сети Фейстеля (единственный тип, который мы будем
рассматривать) раундная функция i (fˆi) принимает в качестве входного элемен-
та подключ ki и A/2-битную строку, а выводит A/2-битную строку.
Как и в слу-
чае с SPN, мастер-ключ k используется, чтобы извлекать подключи для каждого
раунда. Когда какой-то мастер-ключ выбран, таким образом определив каждый
подключ ki, мы определяем fi:{0, 1}A/2 → {0, 1}A/2 через fi(R)
fˆi(ki, R).
Обратите внимание, что раундовые функции fˆi зафиксированы и публично из-
вестны, но fi зависят от мастер-ключа и по этой причине неизвестны атакующему.
Раунд i сети Фейстеля работает следующим образом. Входной элемент раун-
да делится на две половины, обозначенные как Li−1 и Ri−1 («левая» и «правая»
половины, соответственно).
Если длина блока шифра A бит, тогда Li−1 и Ri−1
длиной A/2 каждая. Выходной элемент (Li, Ri) раундов - Li := Ri−1 и Ri := Li−1
⊕
fi(Ri−1).
(6.3)
В r-раундовой сети Фейстеля A-битный входной элемент в сеть разбирается как (L0,
R0), а выходной элемент является A-битным значением (Lr, Rr), полученным после
применения всех r раундов. Трехраундовая сеть Фейстеля показана на Рисунке 6.5.