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