logo search
Криптографическая защита информации

6.2. Примеры блочных шифров

Американский стандарт шифрования данных DES

Стандарт шифрования данных DES (Data Encryption Standart) опубликован Национальным бюро стандартов США в 1977 г. В 1980 г. этот алгоритм был принят Национальным институтом стандартов и технологий США (НИСТ) в качестве стандарта шифрования данных для защиты от несанкционированного доступа к важной, но несекретной информации в государственных и коммерческих организациях США.

К достоинствам DES можно отнести простоту ключевой системы, высокую скорость аппаратной и программной реализации, достаточно высокую криптографическую стойкость алгоритма шифрования при заданной длине ключа.

Алгоритм DES, используя комбинацию ряда подстановок и перестановок, осуществляет шифрование 64-битовых блоков данных с помощью 56-битового ключа k.

Процесс шифрования состоит в начальной перестановке битов входного блока, шестнадцати циклах шифрования и, наконец, конечной перестановке битов.

Отметим, что все приводимые ниже таблицы являются стандартными и должны использоваться при реализации ал­горитма DES в неизменном виде. Все перестановки и коды в таблицах подобраны разработчиками таким образом, чтобы максимально затруднить процесс вскрытия шифра путем подбора ключа.

В приводимом ниже описании алгоритма DES использованы следующие обозначения:

Li и Ri – левая и правая половины 64-битного i-го исходного блока;

 – операция побитового сложения векторов-блоков по модулю 2;

ki – 48-битовые ключи;

f – функция шифрования;

IP – начальная перестановка степени 64.

При зашифровании очередного блока Т его биты подвергаются начальной перестановке IP согласно табл. 9.

Таблица 9. Начальная перестановка IP

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

При этом бит 58 блока Т становится битом 1, бит 50 битом 2 и т. д. Полученный после перестановки блок IP(Т) разделяется на две половины: L0, состоящую из 32 старит бит, и R0, состоящую из 32 младших бит.

Затем выполняется итеративный процесс шифрования, состоящий из 16 циклов преобразования Фейстеля. Результат i-й итерации Тi =LiRi определяется формулами (5.1), где Y1 =Li a Y2 =Ri

Результатом последней итерации является блок Т16 =L16R16. По окончании шифрования осуществляется восстановление позиций битов применением к Т16 обратной перестановки IP -1.

При расшифровании данных все действия выполняются в обратном порядке.

Для вычисления значения функции f используются:

функция расширения Е; преобразование S, составленное из восьми преобразований S-блоков S1,S2,...,S8; перестановка Р. Аргументами функции f являются вектор Ri-1 (32 бита) и вектор ki (48 бит). Функция Е "расширяет" 32-битовый вектор Ri-1 до 48-битового вектора Е(Ri-1) путем дублирования некоторых битов вектора Ri-1, при этом порядок следования битов в Е(Ri-1) указан в табл. 10.

Таблица 10

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

Первые три бита в Е(Ri-1) – это соответственно биты 32, 1 и 2 вектора Ri-1, а последние три бита – это соответственно биты 31, 32, 1 вектора Ri-1.

Полученный результат складывается побитно по модулю 2 с текущим значением ключа ki и затем представляется в виде восьми последовательных 6-битовых блоков В1,..., В8.

Далее каждый из блоков Вj трансформируется в 4-битовый блок Вj с помощью подходящей таблицы S-блока Sj , список которых приведен в табл. 11. Преобразование блока Вj в Вj осуществляется следующим образом. Пусть, например, В2 равен 111010. Первый и последний разряды (10) являются двоичной записью числа a. Аналогично средние 4 разряда (1101) представляют число b. В нашем примере a =2, b = 13. Таким образом, пара (a, b) однозначно определяет число, находящееся в таблице S2 на пересечении строки с номером а и столбца с номером b. В данном случае это число равно 3. Записывая его в двоичной форме, получаем В2, равный 0011.

Значение f(Ri-1 , ki) теперь получается применением перестановки битов Р, заданной таблицей 12 к результирующему 32-битовому блоку В1В2…В8.

Таблица 11

НОМЕР СТОЛБЦА

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 4 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 1 6 4 3 2 12 9 5 15 10 11 14 1 7 6 0 8 13

S5

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

Таблица 12

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

На каждой итерации используется текущее значение ключа ki (48 бит), получаемое из исходного ключа k сле­дующим образом.

Сначала пользователи выбирают сам ключ k, содержа­щий 56 случайных значащих битов. Восемь битов, находя­щихся в позициях 8,16,...,64, добавляются в ключ таким образом, чтобы каждый байт содержал нечетное число единиц. Это используется для обнаружения ошибок при обмене и хранении ключей. Значащие 56 бит ключа подвергаются перестановке, приведенной в табл. 13.

Таблица 13

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

Эта перестановка определяется двумя блоками С0 и D0 по 28 бит в каждом (они занимают соответственно верхнюю и нижнюю половины таблицы). Так, первые три бита в С0 есть соответственно 57, 49, 41 биты ключа. Затем индуктивно определяются блоки Сi и Di , i = 1,…,16.

Если уже определены C i-1 и Di-1, тo Сi, и Di получаются из них одним или двумя левыми циклическими сдвигами согласно табл. 14.

Таблица 14

i

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

Число сдвигов

1

1

2

2

2

2

2

2

1

2

2

2

2

2

1

Теперь определим ключи ki, 1  i  16. Ключ ki состоит из 48 битов, выбираемых из битов блока СiDi согласно таблице 15. Первыми тремя битами в ki являются биты 14, 17, 11 из блока СiDi. Отметим, что 8 из 56 бит (с номерами 9, 18, 22, 25, 35, 38, 43, 54) из СiDi отсутствуют в ki.

Таблица 15

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

Сделаем несколько замечаний.

Нелинейность преобразований, осуществляемых DES, определяется только S-блоками. Их выбор не имеет достаточно обстоятельного обоснования. Высказывались мнения о том, что S-блоки имеют некоторую "лазейку", позволяющую осуществлять контроль за шифрованной перепиской. Официальная же версия такова. В 1976 г. АНБ заявило, что выбор S-блоков определен следующими требованиями:

– каждая строка табличного задания каждого S-блока должна являться перестановкой множества {0,1,...,15};

– S-блоки не должны являться линейными или аффинными функциями своих входов;

– изменение одного бита входа S-блока должно приводить к изменению, по крайней мере, двух битов выхода;

– для каждого S-блока и любого входа х значение S(x) и S(x(0,0,1,1,0,0)) должны различаться, по крайней мере, двумя битами.

Криптоанализ DES приводит ко многим нелинейным системам уравнений. Дело в том, что каждый бит блока шифртекста является функцией от всех битов блока открытого текста и ключа. Известные аналитические методы вскрытия DES не дают существенного выигрыша по сравнению с полным перебором всего множества из 256 ключей. К недостаткам алгоритма DES относится небольшое (по современным меркам) число ключей, что дает возможность их полного перебора на быстродействующей вычислительной технике за реальное время.

Официально DES являлся стандартом шифрования данных до 31 декабря 1998 г. В 1997 г. был объявлен конкурс на новый стандарт, который был назван AES (Advanced Encryption Standard). 2 октября 2000 г. Национальный институт стандартов и технологий (НИСТ) США объявил победителя "конкуpca AES". Однако для того, чтобы этот алгоритм завоевал мировое признание, необходимы серьезные исследования его свойств специалистами различных стран.

Стандарт шифрования данных ГОСТ 28147-89

В России установлен единый алгоритм криптографического преобразования данных для систем обработки информации в сетях ЭВМ, отдельных вычислительных комплексах и ЭВМ. Он определяется ГОСТом 28147-89. Этот алгоритм предназначен для аппаратной и программной реализации, удовлетворяет необходимым криптографическим требованиям и не накладывает ограничений на степень секретности и защищаемой информации. Алгоритм реализует шифрование 64-битовых блоков данных с помощью 256-битового ключа.

Открытые данные, подлежащие зашифрованию, разбиваются на 64-разрядные блоки. Процедура зашифрования 64-разрядного блока Т0 включает 32 цикла (j =1,…,32). 256 бит ключа k задаются в виде восьми 32-разрядных подключей ki:

k = k7k6k5k4k3k2k1k0.

Последовательность битов блока

Т0 = (а1(0),…,а32(0), b1(0),…,b32(0))

разбивается на две половины по 32 бита (взятые в обратном порядке):

а(0)=(а32(0),…,а1(0)),

b(0)=(b32(0),…,b1(0)).

Уравнения шифрования на j цикле шифрования представляются в виде:

при j = 1,…,24,

при j = 25,…,31,

Вычисление значения функции f производится в два этапа. На первом этапе ее 32-битовый аргумент х разбивается на восемь последовательных 4-битовых вектора, каждый из которых преобразуется в некоторый 4-битовый вектор соответствующим узлом замены Si, i = 1,…,8. Каждый узел замены можно представить в виде таблицы-перестановки шестнадцати чисел от 0 до 15, представленных в виде двоичных векторов длины 4. Восемь преобразованных S -блоками векторов последовательно соединяются в 32-битовый вектор S(x). На втором этапе с помощью регистра сдвига R производится циклический сдвиг вектора S(x) влево на 11 позиций.

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

Результатом зашифрования блока Т0 является блок Тш составленный после 32-го цикла шифрования в следующем порядке:

Тш = (а1(32),…,а32(32), b1(32),…,b32(32)).

Алгоритм шифрования, определяемый ГОСТом 28147-89, из-за значительно большей длины ключа является существенно более стойким, нежели алгоритм шифрования DES.