Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Основы криптологии. Учебное пособие.pdf
Скачиваний:
0
Добавлен:
11.08.2026
Размер:
570 Кб
Скачать

i = 1,

 

j = (0 + 6)mod8 = 6 S = [5,7,0,3,2,4,6,1];

t = (

7 + 6) mod8 = 5 GS [1] = 4;

i = 2,

j = (6 + 0)mod8 = 6 S = [5,7,6,3,2,4,0,1];

t = (

6 + 0) mod8 = 6 GS [ 2] = 0 ;

i = 3,

j = (6 + 3)mod8 = 1 S = [5,3,6,7,2,4,0,1];

t= ( 7 + 3) mod8 = 2 GS [ 3] = 6

итак далее.

11.СТАНДАРТ ШИФРОВАНИЯ ДАННЫХ DES

Внастоящее время DES является наиболее распространенным блочным алгоритмом, используемым в системах защиты коммерческой информации. Этот алгоритм использует комбинацию методов подстановки и перестановки. Исходный текст для шифрования разбивается на блоки размером 64 бита. Рассмотрим работу этой криптосистемы для случая, когда размерность блоков равна 16 бит и используется 4-битовое представление 16 первых букв русского алфавита: А – 0000, Б – 0001, В – 0010, Г – 0011, Д – 0100, Е

– 0101, Ж – 0110 и т. д.

Зашифруем сообщение: ЖДЁМ (Е вместо Ё).

1

2

3

4

5

6

7

8

 

9

10

11

12

13

14

15

16

0

1

1

0

0

1

0

0

 

0

1

0

1

1

0

1

1

 

 

Ж

 

 

 

Д

 

 

 

Ё

 

 

 

 

М

 

 

16-битовый блок записывается построчно в виде матрицы:

 

 

 

 

 

 

 

 

é0

1

1

 

 

 

 

 

 

 

 

 

 

 

 

 

ê0

1

0

0ú

 

 

 

 

 

 

 

 

 

 

 

 

T = ê

1

0

ú

 

 

 

 

 

 

 

 

 

 

 

 

 

ê0

 

 

 

 

 

 

 

 

 

 

 

 

 

ê

0

1

ú

 

 

 

 

 

 

 

 

 

 

 

 

 

ë1

1û .

 

 

 

 

 

60

Матрица Т преобразуется с помощью матрицы начальной перестановки IP: T0 = IP(T) :

14

9

5

4

ù

é

 

 

 

ê16

10

8

2ú

IP = ê

11

6

 

ú

ê13

ê

12

7

 

ú

ë15

3û ,

так что 14-й бит входного блока станет 1-м битом, 9-й бит – 2-м битом

ит. д.

Врезультате получили Т0 , которая разделяется на две

последовательности: L0 – левая (старшие биты), R0 – правая (младшие биты), каждая из которых содержит по 8 бит.

 

é0

0

0

 

ê1

1

0

1ú

T = ê

 

 

ú

0

ê1

0

1

 

ê

1

0

ú

 

ë1

1û .

Затем осуществляется итерационный процесс шифрования, состоящий из 16 раундов (в нашем примере реализуется один раунд). Итерационный процесс описывается следующей формулой:

Тi = Li Ri ;

L = R

i =

 

 

 

 

1,16

;

 

 

i

i 1

 

 

 

 

 

R = L

Å f (R

,k

) i =

 

 

1,16.

i i 1

 

i 1

i

 

 

 

 

Функция f называется функцией шифрования, Å − операция сложения по mod 2, ki − секретные ключи.

Функция шифрования f применяется к правому блоку Ri1

исостоит из следующих этапов.

1.Функция расширения Е, которая расширяет 8-битовый блок до 12-битового с помощью матрицы Е:

61

é8

1

ê2

3

4ú

Е = ê

5

ú.

ê4

ê

7

ú

ë6

1û

1-м битом расширенного блока станет 8-й бит R0 , 2-м битом – 1-й, 3-м битом – 2-й и т.д.

В результате 8-битовый блок R0

1

2

3

4

5

6

7

8

0

0

0

1

1

0

0

1

расширяется до 12-битового блока:

R0 :

1

2

3

4

5

6

7

8

9

10

11

12

1

0

0

0

0

1

1

1

0

0

0

0

2. Сложение

полученного результата по

mod 2 с

текущим

E(R ) :

 

 

 

 

 

 

 

 

 

 

0

ki

 

 

 

 

k = 010101010101.

 

значением ключа

 

 

 

 

 

 

. В нашем примере 1

 

 

 

 

 

 

 

 

E(R0 ) : 100001110000

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

E(R

k1 :

010101010101

 

 

 

 

 

 

 

0 ) Å k1 :

110100100101

 

 

 

 

 

 

 

Å

 

 

 

 

 

 

 

 

 

 

 

3. Преобразование полученного 12-битового блока в 8-битовый.

Значение E(R0 ) Å k1 разбивается на 4 трехбитовых блока:

 

B1 = (110), B2 = (100),

B3 = (100), B4

= (101).

 

Каждый из этих блоков используется для нахождения номера

элемента в функциях-матрицах S1,

S2 , S3 , S4 , заданных таблично.

н

 

 

 

 

 

 

 

 

 

 

0

 

 

 

 

 

Si

 

 

 

 

 

 

 

 

1

2

 

3

о

 

 

 

 

 

 

 

 

 

 

62

м

0

3

1

2

0

S1

1

2

3

0

1

 

0

1

3

0

2

S2

1

3

2

1

0

 

0

2

0

3

1

S3

1

1

0

2

3

 

0

0

2

1

3

S4

1

0

1

3

2

 

Выбор элемента в матрице Si осуществляется следующим образом: на вход поступает 3-битовый блок Bi = (b1 b2 b3 ), тогда однобитовое число b1 указывает номер строки, а двухбитовое число

b2b3

– номер столбца. Например,

B = (1\10)

 

− строка 1 и столбец

 

 

1

 

 

 

 

(10)2 = 210

(столбец 2). На пересечении строки и столбца находится

элемент матрицы

S

:

S12 = (0)10

= (00)2

. В итоге

S

= (00)

. Аналогично

 

1

 

 

 

 

 

1

 

 

B = (1\ 00)

S

2

:

S10

= (3)10

= (11)2

 

S

2

= (11)

;

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

B3 = (1\ 00)

S3 : S10

= (1)10

= (01)2

 

S3 = (01) ;

 

 

 

 

 

B = (1\ 01)

S

4

:

S11

= (1)10

= (01)2

 

S

4

= (01)

.

 

 

 

 

 

4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

В итоге имеем 8-битовый блок S:

 

 

 

 

 

 

 

 

 

1

2

 

 

 

3

4

 

 

 

5

 

6

 

7

8

 

0

0

 

 

 

1

1

 

 

 

0

 

1

 

0

1

SК полученному блоку S применяется перестановка: функция Р,

4 7

1 6

8 3 5 2

применив которую находим окончательно функцию шифрования

63

 

 

1

0

ù

 

 

é

 

f (R , k

 

ê0

1ú

0

) = ê

 

ú = (10011100).

0

ê1

 

 

ê

 

ú

 

 

ë0

0û

Согласно алгоритму итерационного процесса вычисляем:

левый блок L1 = R0 = (00011001) ;

правый блок R1 = L0 Å f (R0 , k1 ) = (00111011) Å (10011100) =

=(10100111).

Объединяем блоки:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

é0

0

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ê0

1

 

1

 

0ú

 

 

 

L R = ê

 

 

 

 

ú.

 

 

 

1

1

 

ê1

0

 

0

 

 

 

 

 

 

 

ê

 

 

 

 

ú

 

 

 

 

 

 

ë0

1

 

1

 

1û

 

 

 

 

 

 

 

 

 

По окончании шифрования осуществляем восстановление

позиций битов с помощью матрицы обратной перестановки IP1 :

 

 

 

 

12

8

 

16

4

ù

 

 

 

 

é

 

 

 

 

 

 

 

 

 

ê

3

11

 

15

7

ú

 

 

IP 1

= ê

2

6

 

10

 

ú

 

 

 

 

ê

 

14ú

 

 

 

 

ê

9

1

 

13

5

ú

 

 

 

 

ë

 

û .

 

 

é1

0

1

 

 

 

 

ê1

0

1

1

ú

 

 

 

IP 1(L

, R ) = ê

 

 

 

 

 

ú = (1010101101011000).

1

1

ê0

1

0

1

ú

 

 

 

 

 

ê

 

0

0

 

ú

 

 

 

 

 

ë1

0û

 

 

 

Полученный блок является шифротекстом: МЕБЖ.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

1

0

1

0

1

0

1

1

0

1

0

1

1

0

0

0

 

 

Л

 

 

 

М

 

 

 

Е

 

 

 

И

 

64

Процесс расшифрования данных является инверсным (обратимым) по отношению к процессу шифрования. Это означает, что зашифрованные данные − ЛМЕИ сначала представляются

в соответствии с матрицей, обратной к IP1 :, т. е. IP

 

 

 

 

14

9

5

4

ù

 

 

 

 

 

 

é

 

 

 

 

 

 

 

 

 

ê16

10

8

2ú

 

 

 

 

 

 

ê

11

6

1

ú.

 

 

 

 

 

ê13

ú

 

 

 

 

 

 

ê

 

 

 

ú

 

 

 

 

 

 

ë15 12 7 3û

 

 

 

Осуществим обратную к IP1

перестановку:

é0

0

1

 

 

 

 

 

 

 

ê0

1

1

0ú

 

 

 

 

 

 

10100111).

ê

 

 

 

ú = (00011001

 

 

ê1

0

0

1

ú

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ê

1

1

1

ú

 

 

 

 

 

 

 

ë0

û

 

 

 

 

 

 

 

При шифровании

 

было

L

= R0

,

R1

 

1

 

 

 

при расшифровании

R0 = L1 = (00011001) .

 

 

 

 

 

 

 

 

 

 

Восстановим L0 : L0

= R1 Å f (R0 , k1) .

 

 

 

 

Функция шифрования

f (R0 , k1) находится по тому же алгоритму,

что и при шифровании, т. е.

 

 

 

 

 

 

 

 

f (R0 , k1) = (10011100),

тогда

L0 = R1 Å f (R0 , k1) = (10100111) Å (10011100) = (00111011).

В итоге имеем 16-битовый блок T0 = L0 R0

 

é0

0

0

 

ê1

1

0

1ú

T = ê

 

 

ú

0

ê1

0

1

 

ê

1

0

ú

 

ë1

1û ,

65