Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Беззатеев и др. Блоковые шифры.pdf
Скачиваний:
254
Добавлен:
02.04.2015
Размер:
1.75 Mб
Скачать
k =56
n = 64

14

3.3. Алгоритм DES

Алгоритм DES (Data Encryption Standard, Стандарт Шифрования Данных) разработан фирмой IBM как усовершенствованный алгоритм на базе Люцифера, и представляет собой сеть Файстела с длиной блока исходного текста бит, длиной ключа бит и числом циклов, равным 16. Как федеральный стандарт, этот алгоритм был принят в США в 1976 году. Далее при описании данного алгоритма используются следующие обозначения. Если L и R — последовательности бит, то через LR будем обозначать конкатенацию (склеивание) последовательностей L и R , то есть последовательность бит, размерность которой равна сумме размерностей L и R . В этой последовательности биты последовательности R следуют за битами последовательности L . Символом "+" будет обозначаться операция побитового сложения по модулю 2.

Процесс шифрации данных поясняется Рис. 3.1.

K1

f (R0 , K1 )

K2

f (R1, K2 )

Рис.3.1. Преобразование блока исходной информации алгоритмом DES.

Сначала 64 бита исходной информации переставляются в соответствии с Табл. 3.1. Таким образом, 58-й бит блока исходной информации становится 1-м битом, 50-й бит — 2-м битом и так далее.

Полученная последовательность бит разделяется на два блока: L(0) (левый, или старшие биты), и R(0) (правый, или младшие биты), каждый из которых содержит 32 бита. Затем выполняется итеративный процесс шифрования, который записывается следующими формулами:

L(i) = R(i 1), i =1,2,,16 ;

R(i) = L(i 1) + f (R(i 1), K(i)), i =1,2,,16 .

15

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Табл. 3.1. Начальная перестановка

Функция f называется функцией шифрования. Ее аргументами являются блок R(i 1) , полученный на предыдущем шаге итерации, и 48-битный ключ K(i) , который является результатом функции преобразования 56-битного ключа шифра.

На последнем шаге итерации будут получены последовательности L(16) и R(16) , которые конкатенируются в 64-битную последовательность L(16)R(16) . 64 бита полученной последовательно-

сти переставляются в соответствии с Табл. 3.2. Данная перестановка является обратной по отношению к начальной.

Полученная последовательность из 64 бит и будет являться шифрограммой исходного блока из

64 бит.

40

8

48

16

56

 

24

64

32

 

 

 

 

 

 

 

 

 

39

7

47

15

55

23

63

31

 

 

 

 

 

 

 

 

 

38

6

46

14

54

22

62

30

 

 

 

 

 

 

 

 

 

37

5

45

13

53

21

61

29

 

 

 

 

 

 

 

 

 

36

4

44

12

52

20

60

28

 

 

 

 

 

 

 

 

 

35

3

43

11

51

19

59

27

 

 

 

 

 

 

 

 

 

34

2

42

10

50

18

58

26

 

 

 

 

 

 

 

 

 

33

1

41

9

49

17

57

25

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Табл. 3.2. Конечная перестановка

Процесс дешифрации данных является инверсным по отношению к процессу шифрации. Все действия должны быть выполнены в обратном порядке. Это означает, что дешифруемые данные сначала переставляются в соответствии с Табл. 3.1, а затем над последовательностью бит L(16)R(16)

выполняются те же действия, что и в процессе шифрации, но в обратном порядке. Процесс дешифрации может быть описан следующими формулами:

R(i 1) = L(i), i =1,2,,16 ;

L(i 1) = R(i) + f (L(i), K(i)), i =1,2,,16 .

На последнем шаге будут получены последовательности L(0) и R(0) , которые конкатенируются в 64-битный блок L(0)R(0) . В полученном блоке 64 бита переставляются в соответствии с

Табл. 3.2. Результат такого преобразования — исходная последовательность бит (дешифрованная 64-битная последовательность).

Функция шифрования f (R, K ) схематически показана на Рис. 3.2.

16

Рис.3.2. Функция криптографического преобразования f (R, K ) .

Для вычисления функции f используются расширяющая перестановка E (расширение 32 бит до 48), функции S1 , S2 , S3 , S4 , ..., S8 (преобразование 6-битного числа в 4-битное) и функция P

(перестановка бит в 32-битной последовательности). Аргументами функции шифрования являются R(32) и K(48) . Результат функции E — 48-битное число, которое складывается по модулю 2 с

числом K . Таким образом, получается 48-битная последовательность, которая рассматривается как конкатенация 8 строк длиной по 6 бит, то есть:

B(1)B(2)B(3)B(4)B(5)B(6)B(7)B(8) .

Эта последовательность поступает на входы восьми S-box (Рис. 3.3).

Рис.3.3. Преобразование 48-битной последовательности в 32-битную.

Результат функции Si (B(i)) — 4-битная последовательность, которую будем обозначать T (i) . В результате такой конкатенации всех 8 полученных последовательностей T (i) имеем 32-битный блок:

T = T (1)T (2)T (3)T (4)T (5)T (6)T (7)T (8) .

17

Наконец, для получения результата функции шифрования необходимо переставить биты блока T . Для этого применяется функция перестановки P(T ) .

Расширяющая перестановка E , выполняющая расширение 32 бит до 48, определяется Табл. 3.3. В соответствии с этой таблицей первые три бита E — это биты 32, 1, 2, а последние — 31, 32, 1.

32

1

2

 

3

4

5

 

 

 

 

 

 

 

4

5

6

7

8

9

 

 

 

 

 

 

 

8

9

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

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Табл. 3.3. Расширяющая перестановка E .

В соответствии с Табл. 3.4 каждая из функций Si (B) преобразует 6-битный вход в 4-битный выход по следующему алгоритму:

первый и последний биты входной последовательности B определяют номер строки K

второй, третий, четвертый и пятый биты последовательности B задают номер колонки L

результат преобразования выбирается из строки K и колонки L .

Например, предположим, что входными для пятой S-box (S5-box) (это биты с 25 по 30 из последовательности с выхода сумматора по модулю два) являются 101100. Первый и последний бит образуют 10, что соответствует третьей строке в таблице S5-box. Средние четыре бита образуют 0110, что соответствует седьмому столбцу в таблице S5-box. Число, находящееся в третьей строке и седьмом столбце таблицы S5-box — 7. Таким образом, блок 101100 преобразуется в 0111.

Преобразование с помощью S-box является принципиальной особенностью алгоритма DES, в отличие от всех остальных преобразований, используемых в алгоритме, данное — нелинейное, и именно оно является определяющим для качества алгоритма. Долгое время различными исследователями предпринимались многочисленные попытки раскрыть "тайну" создания S-box. И лишь после появления публикаций о дифференциальном криптоанализе IBM раскрыла критерии проектирования S-box и перестановочной матрицы P [Cop92, Cop94].

Критериями проектирования S-box являлись:

У каждой S-box 6 входных бит и 4 выходных бита. (Это самый большой размер, который мог быть реализован в одной микросхеме по технологии 1974 года).

Ни один выходной бит S-box не должен быть слишком близок к линейной функции входных бит.

Если зафиксировать крайние левый и правый входные биты S-box, изменяя 4 средних бита, то каждый возможный 4-битный результат получается только один раз.

Если два блока на входе S-box отличаются только в одном бите, результаты должны отличаться по крайней мере в двух битах.

Если два блока на входе S-box отличаются только в двух центральных битах, результаты должны отличаться по крайней мере в двух битах.

Если два блока на входе S-box отличаются в двух первых битах, а их последние два бита совпадают, результаты не должны быть одинаковыми.

Рассмотрим пары 6-битных блоков на входе, отличающиеся друг от друга во всех 6 битах. Всего таких различных пар — 32. S-box должны быть построены так, чтобы не более, чем 8 из 32 пар таких блоков на входе могли бы приводить на выходе к одинаковому различию.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

18

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

 

15

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

S1-box

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

S2-box

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

S3-box

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

S4-box

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

S5-box

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

S6-box

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

S7-box

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

S8-box

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Табл. 3.4. Преобразования подстановки S-box алгоритма DES.

Критериями проектирования перестановки P являлись:

4 выходных бита каждой S-box на i-м цикле распределены так, чтобы два из них влияли бы на средние биты S-box на (i +1) -м цикле, а другие два бита влияли бы на последние биты.

4 выходных бита каждой S-box должны влиять на шесть различных S-box, никакие два бита не влияют на одну и ту же S-box.

Если на i -м цикле выходной бит одной S-box влияет на средние биты другой S-box, то выходной бит этой другой S-box на (i +1) -м цикле не может влиять на средние биты первой

S-box.

19

Функция перестановки бит P(T ) , также используемая для определения функции шифрования,

задается значениями, приведенными в Табл. 3.5. В последовательности T 32 бита переставляются так, чтобы 16-й бит стал первым, 7-й бит — вторым и т.д.

16

7

 

20

21

 

 

 

 

 

29

12

28

17

 

 

 

 

 

1

15

23

26

 

 

 

 

 

5

18

31

10

 

 

 

 

 

2

8

24

14

 

 

 

 

 

32

27

3

9

 

 

 

 

 

19

13

30

6

 

 

 

 

 

22

11

4

25

 

 

 

 

 

 

 

 

 

 

Табл. 3.5. Функция перестановки бит P(T ) .

Алгоритм получения ключей K(i), i =1,2,,16 размерностью 48 бит.

Ключи K(i) определяются по 56-битному ключу шифра после добавления к нему 8 бит проверки

на четность, то есть к каждым семи битам исходного 56-битного ключа добавляется один бит проверки на четность. Таким образом, в результате получается ключ длиной 64 бита. Процесс получения ключей K(i) изображен на Рис. 3.2. Вначале над ключом выполняется функция B , которая

сводится к выбору определенных бит и их перестановке в соответствии с Табл. 3.6.

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Табл. 3.6. Функция B над элементами ключа.

Причем, первые четыре строки определяют, как выбираются биты последовательности C(0) (первым битом C(0) будет 57-й бит ключа шифра, затем 49-й бит и т.д., а последними битами — биты

44 и 36 ключа), а последующие четыре строки приведенной таблицы определяют, каким образом выбираются биты последовательности D(0) .

Для генерации последовательностей C(0) и D(0) не используются биты 8, 16, 24, 32, 40, 48, 56,

64 ключа шифра. Эти биты не влияют на шифрацию и используются, как было сказано выше, для контроля четности. После определения C(0) и D(0) рекурсивно определяются C(i) и D(i) ,

i =1,2,,16 . Для этого применяются операции сдвига влево на один или два бита в зависимости от номера шага. Этот факт отражен в Табл. 3.7.

Номер шага

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Табл. 3.7. Число сдвигов, используемое на различных циклах при генерации подблоков ключа.