Сеть Фейстиля - алгоритм

Основное определение

Сеть Фейстеля - это многократно повторяющиеся преобразования состояния блока данных (для упрощения будем читать что это - последовательность бит) - для очередной ячейки сети входными значениями (для преобразования) служат выходные значения предыдущей ячейки (то есть данные преобразованные ранее). Является симметричным алгоритмом

Блоки

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

Иллюстрация схемы работы

посматривайте на эту схему, когда будете читать про алгоритм =))

сеть фейстеля - схема работы, фкн вгу воронеж

Алгоритм - принцип работы (шифрование)

  1. Каждый блок данных который мы шифруем, мы разбиваем на два подблока - правый и левый
  2. Правый подблок мы преобразуем с помощью некоторой функции $\Large f$ используя при этом ключ $\Large k_{n}$ (n - номер ячейки(очередного преобразования) для каждого следующего преобразования - то есть каждой следующей ячейки сети ключ $\Large k$ будет меняться 0 в этом-то и есть вся фишка ))) а затем складываем выходное значение $\Large f$ по модулю 2 с правым подблоком
  3. ------------------------------------------------------------
    Так, здесь я даю вам время перевести дух (немного отдохнуть) - и заодно уточнить - преобразование с помощью функции $\Large f$ подразумевает что входными значениями для этой функции являются -во первых - левый подблок, а во-вторых - ключ $\Large k$ - а вот результат функции, при этих двух аргументах мы и складываем по модулю 2 с правым подблоком -------
    Следующий этап - формирование значений для входа следующей ячейки - как вы догадались нам снова нужны правый и левый подблоки
    -----------------------------------------------------------------
  4. Итак, теперь левым подблоком (для очередного применения функции $\Large f$ но теперь уже с ключом $\Large k_{n+1}$ ) мы будем считать выход функции $\Large f$ из предыдущей ячейки (см. пункт 2), а правым - опять же левый подблок предыдущего этапа (ячейки) но до его преобразования функцией $\Large f$
  5. Подобный переход от ячейки к ячейки повторяется некоторое число раз (в зависимости от конкретной реализации алгоритма)

Расшифровка

Расшифровка происходит в обратном порядке, а именно (первым будет использовать тот ключ, который на этапе шифрования использовался последним) -применяется всё так же функция $\Large f$