Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Алгоритм шифрования DES
Алгоритм DES использует комбинацию подстановок и перестановок. DES осуществляет шифрование 64-битовых блоков данных с помощью 64-битового ключа, в котором значащими являются 56 бит (остальные 8 бит — проверочные биты для контроля на четность). Дешифрование в DES является операцией, обратной шифрованию, и выполняется путем выполнения операции шифрования в обратной последовательности. Процесс шифрования заключается в начальной перестановке битов 64-битового блока, 16 циклов шифрования и, наконец, в конечной перестановке битов. Следует отметить, что все приводимые таблицы являются стандартными и должны включаться в реализацию алгоритма DES в неизменном виде. Все перестановки и коды в таблицах подобраны разработчиками таким образом, чтобы максимально затруднить процесс расшифровки путем подбора ключа. При описании алгоритма применены следующие обозначения: L и R — последовательности битов. (левая и правая). LR — конкатенация последовательностей L и R, то есть такая последовательность битов, длина которой равна сумме длин L и R; в последовательности LR биты последовательности R следуют за битами последовательности L. Пусть из файла исходного текста считан 64-битовый блок T. Этот блок преобразуется с помощью матрицы начальной перестановки IP.
Таблица 4.1.1 — Матрица начальной перестановки IP
Биты входного блока T (64 бита) переставляются в соответствии с матрицей IP: бит 58 входного блока Т становится битом 1, бит 50 — битом 2 и т. д.. Эту перестановку можно описать выражением Т0=IP(T). Полученная последовательность битов Т0 разделяется на 2 последовательности: L0 — левые или старшие биты, R0 — правые или младшие биты, каждые из которых содержат 32 бита. Затем выполняется итеративный процесс шифрования, состоящий из 16 шагов (циклов). Пусть Тi — результат i-той операции: Тi= LiRi, где Li=t1t2…t32 (первые 32 бита), Ri=t33t34…t64 (последние 32 бита). Тогда результат i-той операции описывается следующими формулами: ; .
Рисунок 4.1.1 — Структура алгоритма DES Функция f называется функцией шифрования. Её аргументами является последовательность Ri-1, получаемые на предыдущем шаге итерации и 48-битовый ключ Ki, который является результатом преобразования 64-битового ключа шифра K. На последнем шаге итерации получают последовательности R16 и L16 (без перестановки местами), которые конкатенируются в 64-битовую последовательность R16L16. По окончанию шифрования осуществляется восстановление позиции битов с помощью матрицы обратной перестановки IP-1.
Таблица 4.1.2 — Матрица обратной перестановки IP-1
Процесс расшифрования данных является инверсным по отношению к процессу шифрования. Все действия должны быть выполнены в обратном порядке. Теперь рассмотрим, что скрывается под преобразованием, обозначенным буквой f. Схема вычисления функции шифрования f(Ri-1, Ki) показана ниже. Для вычисления функции f используются: · функция Е (расширение 32 бит до 48); · функции S1, S2, … S8 (преобразование 6-битового числа в 4-битовое); · функция Р (перестановка битов в 32-битовой последовательности).
Рисунок 4.1.2 — Схема вычисления функции шифрования
Таблица 4.1.3 — Функция расширения Е
Таблица 4.1.4 — Функция P перестановки битов
Таблица 4.1.5 — Функции преобразования S1, S2, … S8
Рисунок 2.13 — Схема алгоритма вычисления ключей Кi Таблица 4.1.6 — Функция G первоначальной подготовки ключа
Данная таблица разделена на две части. Результат преобразования G(K) разбивается на две половины С0 и D0 по 28 бит каждая. Первые четыре строки матрицы G определяют, как выбираются биты последовательности С0. Следующие четыре строки матрицы G определяют, как выбираются биты последовательности. Как видно из таблицы, для генерации последовательности С0 и D0 не используются биты 8, 16, 24, 32, 40, 48, 56 и 64 ключа шифра. Эти биты не влияют на шифрование и могут служить для других целей (например, для контроля по четности). Таким образом, в действительности ключ шифра является 56-битовым. После определения С0 и D0 рекурсивно определяются Сi и Di, i = 1, 2…16. Для этого применяются операции циклического сдвига влево на один или два бита в зависимости от номера шага итерации. Операции сдвига выполняются для последовательностей Сi и Di независимо. Таблица 4.1.7 — Таблица количества сдвигов
Ключ, определяемый на каждом шаге итерации, есть результат выбора конкретных битов из 56-битовой последовательности СiDi и их перестановки. Другими словами, ключ Ki = H(СiDi), где функция H определяется матрицей, завершающей обработку ключа.
Таблица 4.1.8 — Функция H завершающей обработки ключа
|