Таблица 3
Функция расширения E
32 | 01 | 02 03 04 05 |
04 | 05 | 06 07 08 09 |
08 | 09 | 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 01 |
Результат функции Е(Ri-1) есть 48-битовая последовательность, которая складывается по модулю 2 (операция xor) с 48-битовым ключом Кi. Получается 48-битовая последовательность, которая разбивается на восемь 6-битовых блоков B1B2B3B4B5B6B7B8. То есть:
E(Ri-1) xorKi= B1B2...B8 .
Функции S1, S2, ... , S8 определяются таблицей 4.
криптосистема алгоритм защита информация
Таблица 4
Функции преобразования S1, S2, ..., S8
Номер столбца 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | |||
Номер строк и | 0 1 2 3 | 14 4 13 1 2 15 11 8 3 10 6 12 5 9 0 7 0 15 7 4 14 2 13 1 10 6 12 11 9 5 3 8 4 1 14 8 13 6 2 11 15 12 9 7 3 10 5 0 15 12 8 2 4 9 1 7 5 11 3 14 10 0 6 13 | S1 |
0 1 2 3 | 15 1 8 14 6 11 3 4 9 7 2 13 12 0 5 10 3 13 4 7 15 2 8 14 12 0 1 10 6 9 11 5 0 14 7 11 10 4 13 1 5 8 12 6 9 3 2 15 13 8 10 1 3 15 4 2 11 6 7 12 0 5 14 9 | S2 | |
0 1 2 3 | 10 0 9 14 6 3 15 5 1 13 12 7 11 4 2 8 13 7 0 9 3 4 6 10 2 8 5 14 12 11 15 1 13 6 4 9 8 15 3 0 11 1 2 12 5 10 14 7 1 10 13 0 6 9 8 7 4 15 14 3 11 5 2 12 | S3 | |
0 1 2 3 | 7 13 14 3 0 6 9 10 1 2 8 5 11 12 4 15 13 8 11 5 6 15 0 3 4 7 2 12 1 10 14 9 10 6 9 0 12 11 7 13 15 1 3 14 5 2 8 4 3 15 0 6 10 1 13 8 9 4 5 11 12 7 2 14 | S4 | |
0 1 2 3 | 2 12 4 1 7 10 11 6 8 5 3 15 13 0 14 9 14 11 2 12 4 7 13 1 5 0 15 10 3 9 8 6 4 2 1 11 10 13 7 8 15 9 12 5 6 3 0 14 11 8 12 7 1 14 2 13 6 15 0 9 10 4 5 3 | S5 | |
0 1 2 3 | 12 1 10 15 9 2 6 8 0 13 3 4 14 7 5 11 10 15 4 2 7 12 9 5 6 1 13 14 0 11 3 8 9 14 15 5 2 8 12 3 7 0 4 10 1 13 11 6 4 3 2 12 9 5 15 10 11 14 1 7 6 0 8 13 | S6 | |
0 1 2 3 | 4 11 2 14 15 0 8 13 3 12 9 7 5 10 6 1 13 0 11 7 4 9 1 10 14 3 5 12 2 15 8 6 1 4 11 13 12 3 7 14 10 15 6 8 0 5 9 2 6 11 13 8 1 4 10 7 9 5 0 15 14 2 3 12 | S7 | |
0 1 2 3 | 13 2 8 4 6 15 11 1 10 9 3 14 5 0 12 7 1 15 13 8 10 3 7 4 12 5 6 11 0 14 9 2 7 11 4 1 9 12 14 2 0 6 10 13 15 3 5 8 2 1 14 7 4 10 8 13 15 12 9 0 3 5 6 11 | S8 |
К таблице 4 требуются дополнительные пояснения. Пусть на вход функции-матрицы Sj поступает 6-битовый блок B = b1b2b3b4b5b6, тогда двухбитовое число b1b6 указывает номер строки матрицы, а b2b3b4b5 - номер столбца. Результатом Sj(Bj) будет 4-битовый элемент, расположенный на пересечении указанных строки и столбца [1].
Например, В1=011011. Тогда S1(В1) расположен на пересечении строки 1 и столбца 13. В столбце 13 строки 1 задано значение 5. Значит, S1(011011)=0101.
Применив операцию выбора к каждому из 6-битовых блоков B1, B2, ..., B8, получаем 32-битовую последовательность S1(B1)S2(B2)S3(B3)...S8(B8).
Наконец, для получения результата функции шифрования надо переставить биты этой последовательности. Для этого применяется функция перестановки P (табл.5). Во входной последовательности биты перестанавливаются так, чтобы бит 16 стал битом 1, а бит 7 - битом 2 и т.д.
Таблица 5
Функция перестановки P
16 | 07 | 20 | 21 |
29 | 12 | 28 | 17 |
01 | 15 | 23 | 26 |
05 | 18 | 31 | 10 |
02 | 08 | 24 | 14 |
32 | 27 | 03 | 09 |
19 | 13 | 30 | 06 |
22 | 11 | 04 | 25 |
Таким образом,
f(Ri-1, Ki) = P(S1(B1),...S8(B8))
Как нетрудно заметить, на каждой итерации используется новое значение ключа Ki. Новое значение ключа Кiвычисляется из начального ключа К(рис.4). Ключ К представляет собой 64-битовый блок с 8 битами контроля по четности, расположенными в позициях 8,16,24,32,40,48,56,64. Для удаления контрольных битов и подготовки ключа к работе используется функция Gпервоначальной подготовки ключа (таблица 6)
Рисунок 4 - Блок-схема алгоритма вычисления ключа Ki
Таблица 6
Матрица G первоначальной подготовки ключа
57 | 49 | 41 | 33 | 25 | 17 | 09 |
01 | 58 | 50 | 42 | 34 | 26 | 18 |
10 | 02 | 59 | 51 | 43 | 35 | 27 |
19 | 11 | 03 | 60 | 52 | 44 | 36 |
63 | 55 | 47 | 39 | 31 | 23 | 15 |
07 | 62 | 54 | 46 | 38 | 30 | 22 |
14 | 06 | 61 | 53 | 45 | 37 | 29 |
21 | 13 | 05 | 28 | 20 | 12 | 04 |
Результат преобразования G(K) разбивается на два 28-битовых блока C0 и D0, причем C0 будет состоять из битов 57, 49, ..., 44, 36 ключа K, а D0 будет состоять из битов 63, 55, ..., 12, 4 ключа K. После определения C0 и D0 рекурсивно определяются Ci и Di, i=1...16. Для этого применяют циклический сдвиг влево на один или два бита в зависимости от номера итерации, как показано в таблице 7.
Операции сдвига выполняются для последовательностей Ci и Di независимо. Например, последовательность C3 получается посредством циклического сдвига влево на две позиции последовательности С2, а последовательность D3 – посредством сдвига влево на две позиции последовательности D2,C16 и D16 получаются из С15 и D15 посредством сдвига влево на одну позицию [2].
Таблица 7
Таблица сдвигов для вычисления ключа
Номер итерации | Сдвиг (бит) |
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 | 1 1 2 2 2 2 2 2 1 2 2 2 2 2 2 1 |
Ключ Кiопределяемый на каждом шаге итерации, есть результат выбора конкретных битов из 56-битовой последовательности Сi,Diи их перестановки. То есть ключ Ki=H(Ci,Di), где функция Н определяется матрицей, завершающей обработку ключа (таблица 8)
Таблица 8
Матрица H завершающей обработки ключа
14 17 11 24 01 05
03 28 15 06 21 10
23 19 12 04 26 08
16 07 27 20 13 02
41 52 31 37 47 55
30 40 51 45 33 48
44 49 39 56 34 53
46 42 50 36 29 32
Как следует из табл.8, первым битом ключа Kiбудет 14-й бит последовательности Сi,Di, а вторым- 17-й бит, 47-м битом ключа Kiбудет 29-й битСi,Di,а 48-м битом -32-ой бит Сi,Di.
2. Основные режимы работы алгоритма DES
Алгоритм DESвполне подходит как для шифрований, так и для аутентификации данных. Он позволяет непосредственно преобразовывать 64-битовый входной открытый текст в 64-битовый выходной шифрованный текст, однако данные редко ограничиваются 64 разрядами.
Чтобы воспользоваться алгоритмом DESдля решения разнообразных криптографических задач, разработаны четыре рабочих режима:
-электронная кодовая книга ЕСВ (electroniccodebook);
-сцепление блоков шифра СВС (cipherblockchaining);
-обратная связь по шифртексту CFB(cipherfeedback);
-обратная связь по выходу OFB(outputfeedback).
В курсовой работе мы реализовывали режим «электронная кодовая книга». Изучив теорию, можем приступить к практическому рассмотрению алгоритма. Была разработана программа, наглядно показывающая работу алгоритма DES.
3. Разработка программной реализации алгоритма
В данном разделе курсового проекта приводится описание программного продукта, реализующего алгоритм шифрования DES: показывается логика работы программы, описываются процедуры и функции.
Программа “ResearchDES” написана на языке программирования высокого уровня C++; при разработке использовалась среда BorlandC++ Builder. Исходный текст программы приведен в приложении 1.
Программа представляет собой приложение для операционной системы Windows, которое выполняется следующим образом: пользователь выбирает файл, который содержит необходимое для шифрования сообщение. Получив имя файла, программа открывает его, производит необходимые действия над данными, и записывает полученный результат в нужный пользователю файл.
Предлагаемый программный продукт содержит следующие компоненты:
а) Основной файл mainform.cpp.
б) Алгоритм преобразования исходного сообщения.
в) Алгоритм преобразования входных данных.
Пользователю предлагается ввести ключ, который может быть представлен в двоичном, шестнадцатеричном или текстовом виде. Затем необходимо выбрать источник данных: файл или строка. При шифровании строки, пользователь вводит необходимую информацию, и нажимает кнопку «старт». Вывод зашифрованной информации осуществляется в свободное поле. При шифровании файла, пользователь указывает необходимый файл, выбирает конечный файл и нажимает кнопку «старт». Зашифрованная информация записывается в указанный пользователем конечный файл.