Схема алгоритма
DES работает с 64-битовым блоком открытого текста. После первоначальной перестановки блок разбивается на правую и левую половины длиной по 32 бита. Затем выполняется 16 этапов одинаковых действий, называемых функцией f, в которых данные объединяются с ключом. После шестнадцатого этапа правая и левая половины объединяются и алгоритм завершается заключительной перестановкой (обратной по отношению к первоначальной).
На каждом этапе (см. Рис. 12-2) биты ключа сдвигаются, и затем из 56 битов ключа выбираются 48 битов. Правая половина данных увеличивается до 48 битов с помощью перестановки с расширением, объединяется посредством XOR с 48 битами смещенного и переставленного ключа, проходит через 8 S-блоков, образуя 32 новых бита, и переставляется снова. Эти четыре операции и выполняются функцией f. Затем результат функции f объединяется с левой половиной с помощью другого XOR. В итоге этих действий появляется новая правая половина, а старая правая половина становится новой левой. Эти действия повторяются 16 раз, образуя 16 этапов DES.
Рис. 12-2. Один этап DES.
Если Bi - это результат i-ой итерации, Li и Ri - левая и правая половины Bi, Ki - 48-битовый ключ для этапа i, а f - это функция, выполняющие все подстановки, перестановки и XOR с ключом, то этап можно представить как:
Li = Ri-1
Ri = Li-1 A f(Ri-1, Ki)
Начальная перестановка
Начальная перестановка выполняется еще до этапа 1, при этом входной блок переставляется, как показано в Табл. 12-1. Эту и все другие таблицы этой главы надо читать слева направо и сверху вниз. Например, начальная перестановка перемещает бит 58 в битовую позицию 1, бит 50 - в битовую позицию 2, бит 42 - в битовую позицию 3, и так далее.
Табл. 12-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 |
Начальная перестановка и соответствующая заключительная перестановка не влияют на безопасность DES. (Как можно легко заметить, эта перестановка в первую очередь служит для облегчения побайтной загрузки данных открытого текста и шифротекста в микросхему DES. Не забывайте, что DES появился раньше 16- и 32-битовых микропроцессорных шин.) Так как программная реализация этой многобитовой перестановки нелегка (в отличие от тривиальной аппаратной), во многих программных реализациях DES начальная и заключительные перестановки не используются. Хотя такой новый алгоритм не менее безопасен, чем DES, он не соответствует стандарту DES и, поэтому, не может называться DES.