Учебники

Feistel Block Cipher

Feistel Cipher не является конкретной схемой блочного шифра. Это модель проектирования, из которой получено много разных блочных шифров. DES – только один пример шифра Фейстеля. Криптографическая система, основанная на структуре шифра Фейстеля, использует один и тот же алгоритм как для шифрования, так и для дешифрования.

Процесс шифрования

В процессе шифрования используется структура Фейстеля, состоящая из нескольких этапов обработки открытого текста, причем каждый этап состоит из этапа «замены», за которым следует этап перестановки.

Структура Фейстеля показана на следующем рисунке –

Фейстел Структура

  • Входной блок для каждого раунда разделен на две половины, которые можно обозначить как L и R для левой половины и правой половины.

  • В каждом раунде правая половина блока R проходит без изменений. Но левая половина, L, проходит через операцию, которая зависит от R и ключа шифрования. Сначала мы применяем функцию шифрования ‘f’, которая принимает два ввода – ключ K и R. Функция производит вывод f (R, K). Затем мы XOR вывод математической функции с L.

  • В реальной реализации шифра Фейстеля, такого как DES, вместо использования полного ключа шифрования во время каждого раунда ключ, зависимый от раунда (подключ), получается из ключа шифрования. Это означает, что в каждом раунде используется другой ключ, хотя все эти подключи связаны с исходным ключом.

  • Шаг перестановки в конце каждого раунда меняет местами модифицированный L и немодифицированный R. Следовательно, L для следующего раунда будет R текущего раунда. И R для следующего раунда будет выходом L текущего раунда.

  • Выше шаги замещения и перестановки образуют «раунд». Количество раундов определяется алгоритмом разработки.

  • После завершения последнего раунда два субблока R и L объединяются в этом порядке, образуя блок зашифрованного текста.

Входной блок для каждого раунда разделен на две половины, которые можно обозначить как L и R для левой половины и правой половины.

В каждом раунде правая половина блока R проходит без изменений. Но левая половина, L, проходит через операцию, которая зависит от R и ключа шифрования. Сначала мы применяем функцию шифрования ‘f’, которая принимает два ввода – ключ K и R. Функция производит вывод f (R, K). Затем мы XOR вывод математической функции с L.

В реальной реализации шифра Фейстеля, такого как DES, вместо использования полного ключа шифрования во время каждого раунда ключ, зависимый от раунда (подключ), получается из ключа шифрования. Это означает, что в каждом раунде используется другой ключ, хотя все эти подключи связаны с исходным ключом.

Шаг перестановки в конце каждого раунда меняет местами модифицированный L и немодифицированный R. Следовательно, L для следующего раунда будет R текущего раунда. И R для следующего раунда будет выходом L текущего раунда.

Выше шаги замещения и перестановки образуют «раунд». Количество раундов определяется алгоритмом разработки.

После завершения последнего раунда два субблока R и L объединяются в этом порядке, образуя блок зашифрованного текста.

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

Процесс дешифрования

Процесс дешифрования в шифре Фейстеля практически аналогичен. Вместо того, чтобы начинаться с блока открытого текста, блок зашифрованного текста подается в начало структуры Фейстеля, а затем процесс в точности повторяет процесс, описанный на данной иллюстрации.

Говорят, что этот процесс почти одинаков и не совсем одинаков. В случае дешифрования единственное отличие состоит в том, что подключи, используемые при шифровании, используются в обратном порядке.

Окончательный обмен «L» и «R» на последнем шаге шифра Фейстеля имеет важное значение. Если они не меняются местами, то полученный зашифрованный текст не может быть расшифрован с использованием того же алгоритма.

Количество раундов

Количество раундов, используемых в шифре Фейстеля, зависит от требуемой защиты от системы. Большее количество раундов обеспечивает более безопасную систему. Но в то же время большее количество циклов означает неэффективные медленные процессы шифрования и дешифрования. Таким образом, число раундов в системах зависит от компромисса между эффективностью и безопасностью.