Курсовая работа: Программная реализация алгоритма шифрования DES. Режим ECB

Функция расширения 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-битовых блоков B1 B2 B3 B4 B5 B6 B7 B8 . То есть:

E(Ri -1 ) xorKi = B1 B2 ...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 = b1 b2 b3 b4 b5 b6 , тогда двухбитовое число b1 b6 указывает номер строки матрицы, а b2 b3 b4 b5 - номер столбца. Результатом 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

К-во Просмотров: 636
Бесплатно скачать Курсовая работа: Программная реализация алгоритма шифрования DES. Режим ECB