Открыть сервис

Шифр Фейстеля

Шифр Фейстеля — это симметричная криптографическая конструкция, используемая для построения блочных шифров. Основная идея заключается в разделении блока данных на две половины и многократном применении к ним необратимой функции (функции Фейстеля), что позволяет получить обратимое шифрование. Конструкция была предложена немецким учёным Хорстом Фейстелем в начале 1970-х годов во время его работы в исследовательском центре IBM. Шифр Фейстеля лёг в основу многих известных алгоритмов, включая DES, ГОСТ 28147-89, Blowfish и Twofish.

История

Предпосылки создания

До появления шифра Фейстеля криптографические алгоритмы часто были либо слишком простыми для взлома, либо требовали сложной аппаратной реализации. В 1960-х годах в IBM велись работы над созданием надёжной системы шифрования для коммерческого использования. Хорст Фейстель, немецкий криптограф, эмигрировавший в США, в 1971 году опубликовал описание конструкции, которая позволяла использовать простые необратимые функции для построения обратимого шифрования. Эта конструкция была запатентована IBM и впоследствии стала основой для стандарта шифрования данных (DES), принятого в 1977 году.

Развитие и стандартизация

В 1970-х годах на основе шифра Фейстеля был разработан алгоритм Lucifer, который стал предшественником DES. После принятия DES в качестве федерального стандарта США в 1977 году конструкция Фейстеля получила широкое распространение. В 1989 году в СССР был принят стандарт ГОСТ 28147-89, также основанный на сети Фейстеля. В 1990-х годах появились усовершенствованные варианты, такие как Blowfish (1993) и Twofish (1998). В 2001 году был принят Advanced Encryption Standard (AES), который использует не сеть Фейстеля, а подстановочно-перестановочную сеть, однако шифр Фейстеля остаётся одной из самых изученных и применяемых конструкций.

Принцип работы

Основная структура

Шифр Фейстеля работает с блоками данных фиксированной длины. Блок делится на две равные половины: левую (L) и правую (R). Процесс шифрования состоит из нескольких раундов. В каждом раунде выполняется следующее преобразование:

  • L<sub>i+1</sub> = R<sub>i</sub>
  • R<sub>i+1</sub> = L<sub>i</sub> ⊕ F(R<sub>i</sub>, K<sub>i</sub>)

где:

  • L<sub>i</sub> и R<sub>i</sub> — левая и правая половины на текущем раунде;
  • K<sub>i</sub> — раундовый ключ, полученный из основного ключа;
  • F — функция Фейстеля (необратимая функция, выполняющая подстановку, перестановку и другие преобразования);
  • ⊕ — операция XOR (исключающее ИЛИ).

После последнего раунда выполняется завершающая перестановка (в некоторых реализациях — обмен половин).

Функция Фейстеля

Функция F не обязана быть обратимой, что является ключевым преимуществом конструкции. Она может включать в себя:

  • подстановку (S-блоки);
  • перестановку (P-блоки);
  • сложение с раундовым ключом;
  • нелинейные преобразования (например, умножение в конечном поле).

Обратимость всего шифра достигается за счёт того, что в каждом раунде одна половина блока сохраняется неизменной, а другая преобразуется с использованием функции от первой половины. Для расшифрования достаточно выполнить те же раунды в обратном порядке, используя те же раундовые ключи в обратной последовательности.

Расшифрование

Расшифрование в шифре Фейстеля аналогично шифрованию, но раундовые ключи применяются в обратном порядке. Для каждого раунда расшифрования:

  • R<sub>i</sub> = L<sub>i+1</sub>
  • L<sub>i</sub> = R<sub>i+1</sub> ⊕ F(L<sub>i+1</sub>, K<sub>i</sub>)

Это свойство делает реализацию шифра и дешифратора практически идентичными, что упрощает аппаратную и программную реализацию.

Классификация и виды

По числу раундов

  • Малораундовые (4–8 раундов) — используются в учебных или лёгких шифрах, не обеспечивают достаточной стойкости.
  • Среднераундовые (16–32 раунда) — типичны для большинства промышленных шифров (DES — 16 раундов, ГОСТ 28147-89 — 32 раунда).
  • Многораундовые (более 32 раундов) — встречаются в шифрах с повышенными требованиями к безопасности.

По типу функции Фейстеля

  • Классическая сеть Фейстеля — функция F не зависит от номера раунда (кроме ключа).
  • Модифицированная сеть Фейстеля — функция F может изменяться от раунда к раунду (например, в ГОСТ 28147-89 используется разная функция в зависимости от режима).
  • Обобщённая сеть Фейстеля — блок делится на более чем две части (например, на 4 части в шифре CAST-256).

По размеру блока

  • Малые блоки (32–64 бита) — устаревшие, уязвимы для атак на основе словаря (DES — 64 бита).
  • Средние блоки (64–128 бит) — наиболее распространённые (Blowfish — 64 бита, Twofish — 128 бит).
  • Большие блоки (128–256 бит) — современные, обеспечивают высокую стойкость.

Применение

Коммерческие стандарты

  • DES (Data Encryption Standard) — принят в США в 1977 году, использовался до 2000-х годов. Длина ключа — 56 бит, блок — 64 бита. Из-за малой длины ключа в настоящее время считается небезопасным.
  • 3DES (Triple DES) — улучшенная версия DES, применяющая три последовательных шифрования с разными ключами. Используется в финансовых системах до сих пор.
  • ГОСТ 28147-89 — российский стандарт шифрования, принятый в 1989 году. Длина ключа — 256 бит, блок — 64 бита, 32 раунда. Активно применяется в государственных и коммерческих системах РФ.

Открытые алгоритмы

  • Blowfish — разработан Брюсом Шнайером в 1993 году. Длина ключа от 32 до 448 бит, блок — 64 бита. Использовался в VPN и файловых системах (например, в OpenBSD).
  • Twofish — финалист конкурса AES (1998–2000). Длина ключа до 256 бит, блок — 128 бит. Применяется в некоторых криптографических библиотеках.
  • Camellia — японский алгоритм, одобренный ISO/IEC. Используется в TLS и IPsec.

Специализированные применения

  • Аппаратные реализации — шифр Фейстеля часто реализуется в виде интегральных схем (например, в смарт-картах и банковских терминалах) благодаря простоте и симметричности.
  • Криптографические протоколы — используется в протоколах аутентификации и шифрования данных (например, в Kerberos).

Криптоанализ и стойкость

Атаки на шифр Фейстеля

  • Дифференциальный криптоанализ — основан на анализе различий между парами шифротекстов. Для DES был предложен в 1990 году, но конструкция оказалась устойчивой при 16 раундах.
  • Линейный криптоанализ — использует линейные аппроксимации функции F. Для DES требует 2<sup>47</sup> известных открытых текстов, что практически нереализуемо.
  • Атаки на основе времени — возможны при неоптимальной реализации (например, на процессорах с кэшем).
  • Атаки на основе связанных ключей — уязвимость некоторых реализаций ГОСТ 28147-89.

Факторы стойкости

Стойкость шифра Фейстеля зависит от:

  • числа раундов (чем больше, тем выше стойкость);
  • качества функции F (нелинейность, лавинный эффект);
  • длины ключа и блока;
  • защиты от боковых каналов (аппаратная реализация).

Современное состояние

На 2025 год шифры на основе сети Фейстеля с достаточным числом раундов (32 и более) и длиной ключа не менее 128 бит считаются криптостойкими. Однако для новых проектов рекомендуется использовать AES или другие современные алгоритмы, прошедшие широкий анализ.

Интересные факты

  • Хорст Фейстель в 1970 году был одним из первых, кто предложил использовать электронные схемы для реализации криптографических алгоритмов.
  • В DES функция F включает 8 S-блоков, каждый из которых представляет собой таблицу подстановки размером 4×16 бит.
  • Шифр Фейстеля иногда называют «сетью Фейстеля» (Feistel network) или «конструкцией Фейстеля».
  • В некоторых реализациях (например, в ГОСТ 28147-89) функция F может быть разной для разных раундов, что усложняет криптоанализ.
  • Шифр Фейстеля используется не только в шифровании, но и в хеш-функциях (например, в MD5 и SHA-1, хотя они основаны на модифицированной конструкции).

Источники

  • Хорст Фейстель. «Cryptography and Computer Privacy». Scientific American, 1973.
  • Брюс Шнайер. «Applied Cryptography». John Wiley & Sons, 1996.
  • ГОСТ 28147-89. «Системы обработки информации. Защита криптографическая. Алгоритм криптографического преобразования».
  • NIST. «Data Encryption Standard (DES)». Federal Information Processing Standards Publication 46-3, 1999.
  • Брюс Шнайер. «Description of a New Variable-Length Key, 64-Bit Block Cipher (Blowfish)». Fast Software Encryption, 1994.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →