DES - блочный шифр.
Безопасность полностью определяется ключом.
На простейшем уровне алгоритм представляет ничего большего, чем комбинация двух основных методов шифрования: смещения и диффузии. Фундаментальным строительным блоком DES является применение к тексту единичной комбинации этих методов (подстановка, а за ней перестановка) зависящей от ключа. Такой блок называется этапом. DES состоит из 16 этапов, одинаковая комбинация методов применяется к открытому тексту 16 раз.
Исходный текст — блок 64 бит. Процесс шифрования состоит из
Исходный текст
(блок 64 бит) преобразуется c помощью начальной перестановки
которая определяется таблицей 1:
| 58 | 50 | 42 | 34 | 26 | 18 | 10 | 2 | 60 | 52 | 44 | 36 | 28 | 20 | 12 | 4 |
| 62 | 54 | 46 | 38 | 30 | 22 | 14 | 6 | 64 | 56 | 48 | 40 | 32 | 24 | 16 | 8 |
| 57 | 49 | 41 | 33 | 25 | 17 | 9 | 1 | 59 | 51 | 43 | 35 | 27 | 19 | 11 | 3 |
| 61 | 53 | 45 | 37 | 29 | 21 | 13 | 5 | 63 | 55 | 47 | 39 | 31 | 23 | 15 | 7 |
.
Полученный после начальной перестановки, 64-битовый блок
участвует в 16-циклах преобразования Фейстеля.
На вход
преобразования поступает выход предыдущего этапа
. Он разбивается на две равные части по 32 бита - левую
и правую
.
Затем эти части преобразуются по правилам
где
- основная функция шифрования (Фейстеля).
На выходе мы получаем новый 64-битовый блок:
.| 32 | 1 | 2 | 3 | 4 | 5 |
| 4 | 5 | 6 | 7 | 8 | 9 |
| 8 | 9 | 10 | 11 | 12 | 13 |
| 12 | 13 | 14 | 15 | 16 | 17 |
| 16 | 17 | 18 | 19 | 20 | 21 |
| 20 | 21 | 22 | 23 | 24 | 25 |
| 24 | 25 | 26 | 27 | 28 | 29 |
| 28 | 29 | 30 | 31 | 32 | 1 |
Аргументами функции
являются 32-битовый вектор
и 48-битовый ключ
, который является результатом преобразования исходного ключа шифрования
.
Для вычисления функции
используются
преобразование, состоящее из 8
-блоков
расширяет 32-битовый вектор
до 48 - битового вектора
дублируя некоторые биты этого вектора. Порядок битов полученного вектора
показан в таблице 2.
складывают по модулю 2 с ключом цикла
и разбивают на восемь 6-битовых частей.
.
преобразуется с помощью
-преобразования в 4-битовый блок
.
.
применяется к выходному блоку
и задается таблицей 4.
| 16 | 7 | 20 | 21 | 29 | 12 | 28 | 17 |
| 1 | 15 | 23 | 26 | 5 | 18 | 31 | 10 |
| 2 | 8 | 24 | 14 | 32 | 27 | 3 | 9 |
| 19 | 13 | 30 | 6 | 22 | 11 | 4 | 25 |
-ом цикле.
Конечная перестановка
действует на
и является обратной к первоначальной перестановке. Конечная перестановка определяется таблицей 8.
| 40 | 8 | 48 | 16 | 56 | 24 | 64 | 32 | 39 | 7 | 47 | 15 | 55 | 23 | 63 | 31 |
| 38 | 6 | 46 | 14 | 54 | 22 | 62 | 30 | 37 | 5 | 45 | 13 | 53 | 21 | 61 | 29 |
| 36 | 4 | 44 | 12 | 52 | 20 | 60 | 28 | 35 | 3 | 43 | 11 | 51 | 19 | 59 | 27 |
| 34 | 2 | 42 | 10 | 50 | 18 | 58 | 26 | 33 | 1 | 41 | 9 | 49 | 17 | 57 | 25 |
Есть 64-битовый начальный ключ
.
| 57 | 49 | 41 | 33 | 25 | 17 | 9 | 1 | 58 | 50 | 42 | 34 | 26 | 18 |
|
| 10 | 2 | 59 | 51 | 43 | 35 | 27 | 19 | 11 | 3 | 60 | 52 | 44 | 36 | |
| 63 | 55 | 47 | 39 | 31 | 23 | 15 | 7 | 62 | 54 | 46 | 38 | 30 | 22 |
|
| 14 | 6 | 61 | 53 | 45 | 37 | 29 | 21 | 13 | 5 | 28 | 20 | 12 | 4 |
и
получаются из
циклическим сдвигом влево. Сдвиг определяется на каждом шаге таблицей 6
| i | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Число сдвига | 1 | 1 | 2 | 2 | 2 | 2 | 2 | 2 | 1 | 2 | 2 | 2 | 2 | 2 | 2 | 1 |
Ключ
состоит из 48 бит, выбранных из битов вектора
(56) согласно таблице 7.
| 14 | 17 | 11 | 24 | 1 | 5 | 3 | 28 | 15 | 6 | 21 | 10 | 23 | 19 | 12 | 4 |
| 26 | 8 | 16 | 7 | 27 | 20 | 13 | 2 | 41 | 52 | 31 | 37 | 47 | 55 | 30 | 40 |
| 51 | 45 | 33 | 48 | 44 | 49 | 39 | 56 | 34 | 53 | 46 | 42 | 50 | 36 | 29 | 32 |
Последняя версия:
Lucifer - это набор перестановок и подстановок, его блоки похожи на блоки DES. В DES результат функции
объединяется с помощью XOR со входом предыдущего этапа, образуя вход следующего этапа. У S-блоков алгоритма Lucifer 4-битовые входы и 4-битовые выходы, вход S-блоков представляет собой перетасованный выход S-блоков предыдущего этапа, входом S-блоков первого этапа является открытый тест. Для выбора используемого S-блока из двух возможных применяется бит ключа. В отличие от DES половины блока между этапами не переставляются и вообще понятие половины блока не используется в алгоритме Lucifer. У этого алгоритма 16-этапов, 128-битовые блоки и более простое, чем в DES, распределение ключей.
Шнаер 226