Кафедра: АСОИиУ
Лабораторная работа
«Алгоритм формирования ключей в процессе функционирования DES»
по дисциплине
«Методы и средства защиты информации»
Москва 2009 г.
Оглавление
Техническое задание. 3
Алгоритм формирования ключей в процессе функционирования DES. 3
Работа алгоритма. 4
1 шаг. Перестановки битов ключа с использованием таблицы перестановок. 5
2 шаг. Разбиение ключа. 6
3 шаг. Создание 16-ти подключей путем сдвига. 7
4 шаг. Перестановка битов ключа с использованием таблицы PC1. 8
Исходный код. 9
Пример работы программы.. 15
Техническое задание
1. Реализовать алгоритм формирования ключей в процессе функционирования DES на языке программирования C++.
2. Провести тест программы.
Алгоритм формирования ключей в процессе функционирования DES
Формирование ключей – алгоритм, позволяющий получить по относительно короткому ключу шифрования последовательность раундовых ключей.
Входные данные: Ключ состоит из 8 символов или 8 байт. Соответственно ключ имеет размер 64 байта. Но размер ключа используется только для записи (для организации данных). Фактически, каждый 8 бит отбрасывается и эффективный размер ключа – 56 бит.
Работа алгоритма
1 шаг. Перестановки битов ключа с использованием таблицы перестановок.
Для примера введем:
olga1234
Заданный ключ в двоичном представлении:
0110111101101100011001110110000100110001001100100011001100110100
В начале над ключом шифра выполняется операция B, которая сводится к выбору определенных бит и их перестановке, как это показано в таблицей. Причем, первые четыре строки определяют, как выбираются биты последовательности C(0) (первым битом C(0) будет бит 57 бит ключа шифра, затем бит 49 и т.д., а последними битами биты 44 и 36 ключа шифра), а следующие четыре строки – как выбираются биты последовательности D(0) (т.е. последовательность D(0) будем состоять из битов 63,55,…, 12, 4 ключа шифра).
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
В результате перестановки ключ будет выглядеть так:
00001111111111111111000000000101110101100101100001110011
2 шаг. Разбиение ключа На этом шаге осуществляется разбиение ключа на 2 половины C0 и D0. Каждая половина содержит 28 бит.
C0:
0000111111111111111100000000
D0:
0101110101100101100001110011
3 шаг. Создание 16-ти подключей путем сдвига После определения C(0) и D(0) рекурсивно определяются C(i) и D(i), i=1,2,…, 16. Для этого применяются операции сдвига влево на один или два бита в зависимости от номера шага итерации, как это показано в таблице «Функция сдвига Si». Операции сдвига выполняются для последовательностей C(i) и D(i) независимо. Например, последовательность C(3) получается, посредством сдвига влево на две позиции последовательности C(2), а последовательность D(3) – посредством сдвига влево на две позиции последовательности D(2). Следует иметь в виду, что выполняется циклический сдвиг влево. Например, единичный сдвиг влево последовательности C(i) приведет к тому, что первый бит C(i) станет последним и последовательность бит будет следующая: 2,3,…, 28,1.
Таблица «Функция сдвига Si»
1 1 2 1 3 2 4 2 5 2 6 2 7 2 8 2 9 1 10 2 11 2 12 2 13 2 14 2 15 2 16 1
В результате сдвига получаем следующие пары
Количество сдвигов Созданные пары 1
C1: 0001111111111111111000000000
D1: 1011101011001011000011100110
1
C2: 0011111111111111110000000000
D2: 0111010110010110000111001101
2
C3: 1111111111111111000000000011
D3: 1101011001011000011100110111
2
C4: 1111111111111100000000001111
D4: 0101100101100001110011011101
2
C5: 1111111111110000000000111111
D5: 0110010110000111001101110101
2
C6: 1111111111000000000011111111
D6: 1001011000011100110111010110
2
C7: 1111111100000000001111111111
D7: 0101100001110011011101011001
2
C8: 1111110000000000111111111111
D8: 0110000111001101110101100101
1
C9: 1111100000000001111111111111
D9: 1100001110011011101011001011
2
C10: 1110000000000111111111111111
D10: 0000111001101110101100101100
2
C11: 1000000000011111111111111110
D11: 0011100110111010110010110000
2
C12: 0000000001111111111111111000
D12: 1110011011101011001011000011
2
C13: 0000000111111111111111100000
D13: 1001101110101100101100001110
2
C14: 0000011111111111111110000000
D14: 0110111010110010110000111001
2
C15: 0001111111111111111000000000
D15: 1011101011001011000011100110
1
C16: 0011111111111111110000000000
D16: 0111010110010110000111001101
4 шаг. Перестановка битов ключа с использованием таблицы PC1
До финальной перестановки битов ключей, необходимо слияние каждой пары данных. ............