Сети Фейстела

Большинство блочных алгоритмов являются сетями Фейстела(Felstel networks). Эта идея датируется нача­лом 70-х годов [552, 553]. Возьмите блок длиной п и разделите его на две половины длиной и/2: L и R. Конечно, п должно быть четным. Можно определить итеративный блочный шифр, в котором результат у-го этапа опреде­ляется результатом предыдущего этапа:

U = Дм

К, - это подключ, используемый на /-ом этапе, a f - это произвольная функция этапа.

Эту концепцию можно увидеть в DES, Lucifer, FEAL, Khufu, Khafre, LOKI, COST, CAST, Blowfish и других алгоритмах. Почему это так важно? Гарантируется, что эта функция является обращаемой. Так как для объед и-нения левой половины с результатом функции этапа используется XOR, следующее выражение обязательно я в-ляется истинным:

Цл © Щ.и К,)© Щ.и £,■)= Цл

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