Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Конспект лекції ТМЗІ.doc
Скачиваний:
103
Добавлен:
23.02.2016
Размер:
1.07 Mб
Скачать
    1. Шифрование по стандарту des

Алгоритм, изложенный в стандарте DES (Data Encryption Standard), наиболее распространен и широко применяется для шифрования данных в США. Он был разработан фирмой IBM для собственных целей, но после проверки Агентством Национальной Безопасности США был рекомендован к применению в качестве федерального стандарта шифрования. Алгоритм DES не является закрытым и был опубликован для широкого ознакомления. Алгоритм предназначен для зашифровки и расшифровки блоков данных длиной по 64 бита под управлением 64-битового ключа. Расшифровка должна выполняться с использованием того же ключа, что при зашифровке, но с обращением порядка адресации битов ключа, так что процесс расшифровки обратен процессу зашифровки.

Рассмотрим сначала процесс шифрования и расшифровывания каждого блока в отдельности.

      1. Алгоритм шифрования:

  1. Обработка ключа.

    1. Получите 64-битный ключ от пользователя. (Каждый 8-й бит (младший значащий бит каждого байта) рассматривается как бит паритета. Для того, чтобы ключ имел правильный паритет, каждый байт должен содержать четное число единиц. Теперь этот ключ можно непосредственно вводить, или он может быть результатом хеширования чего-нибудь другого. Для этой цели нет стандартных алгоритмов хеширования.

    2. Вычисление порядка ключей

      1. Выполните следующие перестановки на 64-х битном ключе. (Биты паритета выброшены, ключ уменьшается до 56 бит).

Переставленная Выборка 1 (рс1)

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

      1. Разделите переставленный ключ на две половины. Первые 28 бит названы С[0], последние - D[0].

      2. Вычислите 16 подключей. Начните с i=1.

        1. Выполните один или два циклических сдвига влево на оба C[i-1] иD[i-1] чтобы получитьC[i] иD[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

1.2.3.2. Переставьте конкотанацию C[i]D[i] как показано ниже. Это будетK[i] длиной в 48 бит.

Переставленная Выборка 2 (рс2)

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

        1. Переход к 1.2.3.1 до тех пор пока k[16] не вычислено.

  1. Обработка 64- битного блока данных.

    1. Возьмите 64-х битный блок данных. Если блок короче чем 64 бита, его следует заполнить до 64.

    2. Выполните следующие перестановки над блоком данных.