Алгоритм DES использует комбинацию подстановок и перестановок. DES осуществляет шифрование 64‑битовых блоков данных с помощью 64‑битого ключа, в котором значащими являются 56 бит (остальные 8 бит ‑ проверочные биты для контроля на четность). Расшифрование в DES является операцией, обратной шифрованию, и выполняется путем повторения операций шифрования в обратной последовательности. Обобщенная схема процесса
Шифрование в алгоритме DES (рис. 5.1) заключается в начальной перестановке бит 64‑битого блока, шестнадцати циклах шифрования и, наконец, в конечной перестановке бит.
Следует отметить, что все приводимые таблицы являются стандартными и должны включаться в реализацию алгоритма DES в неизменном виде. Все перестановки и коды в таблицах подобраны разработчиками таким образом, чтобы максимально затруднить процесс взлома шифра.
Пусть из файла исходного текста считан очередной 64‑битовый блок . Этот блок преобразуется с помощью матрицы начальной перестановки IP (табл. 5.1).
Таблица 5.1 | |||||||
Начальная перестановка IP | |||||||
Биты входного блока (64 бита) переставляются в соответствии с матрицей : бит 58 входного блока становится битом 1, бит 50 ‑ битом 2 и т.д. Эту перестановку можно описать выражением . Полученная последовательность бит разделяется на две последовательности: ‑ левые, или старшие, биты, ‑ правые, или младшие, биты ‑ каждая из которых содержит 32 бита.
Затем выполняется итеративный процесс шифрования, состоящий из 16 шагов (циклов). Пусть ‑ результат ‑й итерации: , где (первые 32 бита); (последние 32 бита). Тогда результат ‑й итерации описывается следующими формулами:
Функция называется функцией шифрования. Ее аргументами являются последовательность , получаемая на предыдущем шаге итерации, и 48‑битовыйключ , который является результатом преобразования 64‑битого ключа шифра . (Подробнее функция шифрования и алгоритм получения ключа описаны ниже.)
На последнем шаге итерации получают последовательности и (без перестановки местами), которые конкатенируются в 64‑битую последовательность .
По окончании шифрования осуществляется восстановление позиций бит с помощью матрицы обратной перестановки (табл. 5.2).
Таблица 5.2 | |||||||
Обратная перестановка | |||||||
Процесс разшифрования данных является инверсным по отношению к процессу шифрования. Все действия должны быть выполнены в обратном порядке. Это означает, что расшифровываемые данные сначала переставляются в соответствии с матрицей , а затем над последовательностью бит выполняются те же действия, что и в процессе шифрования, но в обратном порядке.
Итеративный процесс расшифрования может быть описан следующими формулами:
Таким образом, для процесса расшифрования с переставленным входным блоком на первой итерации используется ключ , на второй итерации ‑ и т.д. На 16‑й итерации используется ключ . На последнем шаге итерации будут получены последовательности и , которые конкатенируются в 64‑битую последовательность . Затем в этой последовательности 64 бита переставляются в соответствии с матрицей . Результат такого преобразования ‑ исходная последовательность бит (расшифрованное 64‑битовое значение).