Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по методам и средствам ЗИ.doc
Скачиваний:
107
Добавлен:
23.09.2019
Размер:
831 Кб
Скачать
☆

Общая схема алгоритма.

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

IP

To

L0

R0

T'

f (R0, k1)

k1

L1

R1

f(R1, k2)

k2

L2

R2

L16 R16

IP-1

Tш

Рис.8.1. Структурная схема

преобразования данных по

алгоритму DES

З ашифрование 64-битового блока данных Tо (входной параметр алгоритма) начинается с начальной перестановки битов в нем IP. Затем шифруемый блок разделяется на две 32-битовые части (старшую - L0 и младшую - R0 ), с которыми выполняются 16 раундов преобразования в соответствии с архитектурными принципами сети Файстеля. На каждом раунде старшая половина блока модифицируется путем побитового прибавления к ней по модулю 2 (операция ) результата вычисления функции шифрования (f), зависящей от младшей половины блока (Ri–1) и 48-битового ключевого элемента (ki). Между раундами старшая и младшая половины блока меняются местами. Таким образом, на каждом раунде кроме последнего младшая половина блока становится старшей, а модифицированная с помощью функции шифрования старшая – младшей половиной блока.

На последнем раунде происходит то же самое за исключением обмена значениями половин блока. Затем полублоки объединяются в полный

блок, в котором выполняется конечная битовая перестановка (IP–1), обратная начальной. Результат последней операции и является выходным значением цикла шифрования – зашифрованным блоком Tш. Шестнадцать 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.

Начальная и обратная ей конечная битовые перестановки алгоритма DES являются стандартными и должны включаться в реализацию алгоритма в неизменном виде.

С хема преобразования данных (функция шифрования) приведена на рисунке 8.2.

по 4 бита

Рис. 8.2. Функция шифрования – схема преобразования данных

Н а вход функции шифрования поступает 32-битовая половина шифруемого блока Ri-1, и 48-битовый ключевой элемент ki . Сначала 32-битовый блок данных расширяется до 48 битов дублированием некоторых двоичных разрядов (функция E). Затем полученный расширенный блок побитово суммируется по модулю 2 с ключевым элементом (операция " "). Полученный в результате суммирования 48-битовый блок данных разделяется на восемь 6-битовых элементов данных, обозначенных h1,h2,…,h8 соответственно, причем h1 содержит шесть самых старших битов 48-битового блока, h2 – шесть следующих по старшинству битов и т.д., наконец, h8 – шесть самых младших битов блока. Далее каждое из значений hi преобразуется в новое 4-битовое значение ti с помощью соответствующего узла замен (Si). После этого полученные восемь 4-битовых элементов данных вновь объединяются в 32-битовый блок в том же самом порядке их старшинства. Наконец, в полученном 32-битовом блоке выполняется перестановка битов (IP). Результат последней операции и является выходным значением функции шифрования.

В алгоритме DES ключевые элементы вырабатываются из ключа с использованием сдвигов и битовых выборок-перестановок. Таким образом, – и это очень важно, – ключевые элементы состоят исключительно из битов исходного ключа, "перетасованных" в различном порядке. Ключ имеет размер 64 бита, однако реально для выработки ключевых элементов используются только 56 из них. Самые младшие биты каждого байта ключа не попадают в ключевые элементы и служат исключительно для контроля четности.