А.Винокуров. Серия "Энциклопедия блочных шифров".
Алгоритм представляет собой сбалансированную сеть Файстеля с начальной и конечной битовыми перестановками, конечная перестановка является обращением начальной. Схема преобразования данных при зашифровании блока изображена на рисунке 1, схема соответствующего алгоритма – на рисунке 2.
![]()
Рис. 1. Цикл шифрования DES - схема преобразования данных.
![]()
Рис. 2. Цикл шифрования DES - схема алгоритма.
Зашифрование 64-битового блока данных T (входной параметр алгоритма,
рис.2, шаг 0) начинается с начальной перестановки битов в нем (IP, шаг
1). Затем шифруемый блок разделяется на две 32-битовые части (шаг 2), с которыми
выполняются 16 раундов преобразования в соответствии с архитектурными принципами
сети Файстеля. Через Hin(X) и Lon(X) обозначены функции,
возвращающие в качестве результата соответственно n старших или
младших битов своего аргумента. На каждом раунде старшая половина блока
модифицируется путем побитового прибавления к ней по модулю 2 (операция
"") результата вычисления функции шифрования
(f), зависящей от младшей половины блока
(Li–1) и 48-битового
ключевого элемента (ki). Между раундами старшая и
младшая половины блока меняются местами. Таким образом, на каждом раунде кроме
последнего младшая половина блока становится старшей, а модифицированная с
помощью функции шифрования старшая – младшей половиной блока (шаг 3). На
последнем раунде происходит то же самое за исключением обмена значениями половин
блока. Затем полублоки объединяются в полный блок (шаг 4), в котором выполняется
конечная битовая перестановка (IP–1,
шаг 5), обратная начальной. Результат последней операции и является выходным
значением цикла шифрования – зашифрованным блоком T'
(шаг 6). Шестнадцать 48-битовых ключевых элементов ki,
1
i
16, используемых в цикле шифрования,
являются параметрами алгоритма и вырабатываются из 56-битового ключа в ходе
рассмотренной ниже процедуры генерации ключевой последовательности.
Процедура расшифрования блока данных идентична процедуре зашифрования с тем
отличием, что ключевые элементы в ней используются в порядке, обратном порядку
их использования при зашифровании. Таким образом, если при зашифровании ключевые
элементы используются в "естественном" порядке возрастания номеров
k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16,
то при расшифровании они должны использоваться в обратном порядке:
k16, k15, k14, k13, k12, k11, k10, k9, k8, k7, k6, k5, k4, k3, k2, k1.
[Список алгоритмов] [Основные характеристики] [Структура алгоритма] [Битовые перестановки] [Функция шифрования] [Узлы замен] [Ключевые элементы] [Историческая справка]
[Начало осмотра] [Что нового] [Статьи] [Выпуски в "Байтах"] [Что скачать] [Криптоалгоритмы] [Глоссарий] [Ссылки] [Гостевая книга] [Форум] [Напиши мне]
Подготовлено 24.02.01. (c) 2001 Андрей Винокуров.