В криптографии шифр Фейстеля (также известный как блочный шифр Люби-Ракоффа ) — симметричная структура, используемая при построении блочных шифров , названная в честь физика и криптографа немецкого происхождения Хорста Фейстеля , который проводил новаторские исследования во время работы в IBM ; она также широко известна как сеть Фейстеля . Эту схему использует большое количество блочных шифров , включая стандарт шифрования данных США , советский/российский ГОСТ и более поздние шифры Blowfish и Twofish . В шифре Фейстеля шифрование и дешифрование представляют собой очень похожие операции, и обе они состоят из итеративного выполнения функции, называемой « раундовой функцией », фиксированное количество раз.
Многие современные симметричные блочные шифры основаны на сетях Фейстеля. Сети Фейстеля впервые были представлены на коммерческой основе в виде шифра Люцифер компании IBM , разработанного Хорстом Фейстелом и Доном Копперсмитом в 1973 году. Сети Фейстеля приобрели респектабельность, когда федеральное правительство США приняло DES ( шифр, основанный на Люцифере, с изменениями, внесенными АНБ ) в 1976 году. Как и другие компоненты DES, итеративный характер конструкции Фейстеля упрощает реализацию криптосистемы на аппаратном уровне (особенно на аппаратном обеспечении, доступном на момент разработки DES).
Сеть Фейстеля использует функцию раунда — функцию, которая принимает два входных параметра — блок данных и подраздел — и возвращает один выходной сигнал того же размера, что и блок данных. [1] В каждом раунде функция round запускается для половины данных, подлежащих шифрованию, а ее выходные данные подвергаются операции XOR с другой половиной данных. Это повторяется фиксированное количество раз, и конечным результатом являются зашифрованные данные. Важным преимуществом сетей Фейстеля по сравнению с другими конструкциями шифров, такими как сети замены-перестановки, является то, что вся операция гарантированно будет обратимой (то есть зашифрованные данные могут быть расшифрованы), даже если функция округления сама по себе не является обратимой. Раундовую функцию можно сделать сколь угодно сложной, поскольку ее не обязательно делать обратимой. [2] : 465 [3] : 347 Более того, операции шифрования и дешифрования очень похожи, а в некоторых случаях даже идентичны, требуя лишь изменения расписания ключей . Таким образом, размер кода или схемы, необходимой для реализации такого шифрования, уменьшается почти вдвое.
Структура и свойства шифров Фейстеля были тщательно проанализированы криптографами .
Майкл Люби и Чарльз Ракофф проанализировали конструкцию шифра Фейстеля и доказали, что если функция раунда является криптографически безопасной псевдослучайной функцией с использованием K i в качестве начального числа, то 3 раундов достаточно, чтобы сделать блочный шифр псевдослучайной перестановкой , тогда как 4 раунда являются достаточно, чтобы сделать ее «сильной» псевдослучайной перестановкой (что означает, что она остается псевдослучайной даже для противника, который получает доступ оракула к ее обратной перестановке). [4] Из-за этого очень важного результата Люби и Ракоффа шифры Фейстеля иногда называют блочными шифрами Люби-Ракоффа.
Дальнейшие теоретические работы несколько обобщили конструкцию и дали более точные границы безопасности. [5] [6]
Пусть это функция раунда и пусть это дополнительные клавиши для раундов соответственно.
Тогда основная операция выглядит следующим образом:
Разделите блок открытого текста на две равные части: ( , ).
Для каждого раунда вычислите
где означает XOR . Тогда зашифрованный текст .
Расшифровка зашифрованного текста осуществляется путем вычисления
Затем снова открытый текст.
На диаграмме показано как шифрование, так и дешифрование. Обратите внимание на изменение порядка подразделов для расшифровки; это единственная разница между шифрованием и дешифрованием.
Несбалансированные шифры Фейстеля используют модифицированную структуру, в которой и не имеют одинаковой длины. [7] Шифр Skipjack является примером такого шифра. Транспондер цифровой подписи Texas Instruments использует запатентованный несбалансированный шифр Фейстеля для выполнения аутентификации типа «запрос-ответ» . [8]
Перетасовка Торпа — это крайний случай несбалансированного шифра Фейстеля, в котором одна сторона представляет собой один бит. Он имеет лучшую доказуемую надежность, чем сбалансированный шифр Фейстеля, но требует большего количества раундов. [9]
Конструкция Фейстеля также используется в криптографических алгоритмах, отличных от блочных шифров. Например, схема оптимального асимметричного шифрования (OAEP) использует простую сеть Фейстеля для рандомизации зашифрованных текстов в определенных схемах шифрования с асимметричным ключом .
Обобщенный алгоритм Фейстеля можно использовать для создания сильных перестановок в небольших доменах размером не степень двойки (см. Шифрование с сохранением формата ). [9]
Независимо от того, является ли весь шифр шифром Фейстеля или нет, сети, подобные Фейстелю, могут использоваться как компонент конструкции шифра. Например, MISTY1 — это шифр Фейстеля, использующий трехраундовую сеть Фейстеля в своей функции раунда, Skipjack — это модифицированный шифр Фейстеля, использующий сеть Фейстеля в его перестановке G, а Threefish (часть Skein ) — это блочный шифр, не принадлежащий Фейстелю, который использует функцию MIX, подобную Фейстелю.
Фейстель или модифицированный Фейстель:
Обобщенный Фейстель: