Главная
Тактико-технические данные
Шифрование
Расшифрование
Вспомогательные функции
Режимы алгоритма DES
Упражнения
Литература

Схема устройства функции шифрования f показана на рис.3. Для вычисления значения функции f используются функция расширения Е, восьмиблоковое преобразование S, функция Р перестановки битов и цикловые ключи Кi. Опишем эти вспомогательные функции, а также метод генерирования цикловых ключей.

Рис. 3. Схема вычисления функции шифрования f

Функция E, выполняющая расширение 32 бит ключа до 48 бит, определена в таблице 4. В соответствии с таблицей 4 первые три бита E(Ri-1) это биты 32, 1 и 2, а последние – 31, 32 и 1. Полученный результат (обозначим его E(Ri?1)) складывается по модулю 2 (операция XOR) с текущим значением ключа Кi и затем разбивается на восемь 6-битовых блоков B1, B2,... B8:

E(Ri-1) + Кi = B1, B2,..., B8.

Рис. 4. Схема вычисления ключей Кi

Далее каждый из этих блоков используется как номер элемента в функциях-матрицах S1, S2,..., S8, содержащих 4-битовые значения (таблица 5). Эти блоки составляют восьмиблоковое преобразование S. Опишем способ выбора элемента в матрице Sj. Пусть на вход матрицы Sj поступает 6-ти битовый блок Bj=b1b2b3b4b5b6, тогда 2-битовый блок b1b6 указывает номер строки матрицы, а 4-битовое число b2b3b4b5 – номер столбца. Совокупность 6-битовых блоков B1, B2,... B8 обеспечивает выбор 4-битового элемента в каждой из матриц S1, S2,..., S8. В результате получаем 32-битовый блок: S1(B1)S2(B2)S3(B3)S4(B4)S5(B5)S6(B6)S7(B7)S8(B8). Этот блок преобразуется с помощью функции перестановки битов Р (табл.6). Таким образом, функция шифрования f по следующей формуле: f(Ri-1, Ki)=Р(S1(B1), ..., S8(B8)).

На каждой итерации алгоритма используется новое значение 48-битового ключа Ki. Текущее значение ключа Ki вычисляется по начальному ключу К (рис. 4). Ключ К представляет собой 64-битовый блок с 8 битами контроля по четности, расположенными в позициях 8, 16, 24, 32, 40, 56, 64. Для удаления контрольных битов и подготовки ключа к работе используется функция G первоначальной подготовки ключа (табл. 7).

Таблица 5

Функции преобразования S1, S2,..., S8.

Номер столбца

Номер строки

0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

0

14

4

13

1

2

15

11

8

3

10

6

12

5

9

0

7

S1

1

0

15

7

4

14

2

13

1

10

6

12

11

9

5

3

8

2

4

1

4

8

13

6

2

11

15

12

9

7

3

10

5

0

3

15

12

8

2

4

9

1

7

5

11

3

14

10

0

6

13

0

15

1

8

14

6

11

3

4

9

7

2

13

12

0

5

10

S2

1

3

13

4

7

15

2

8

14

12

0

1

10

6

9

11

5

2

0

14

7

11

10

4

13

1

5

8

12

6

9

3

2

15

3

13

8

10

1

3

15

4

2

11

6

7

12

0

5

14

9

0

10

0

9

14

6

3

15

5

1

13

12

7

11

4

2

8

S3

1

13

7

0

9

3

4

6

10

2

8

5

14

12

11

15

1

2

13

6

4

9

8

15

3

0

11

1

2

12

5

10

14

7

3

1

10

13

0

6

9

8

7

4

15

14

3

11

5

2

12

0

7

13

14

3

0

6

9

10

1

2

8

5

11

12

4

15

S4

1

13

8

11

5

6

15

0

3

4

7

2

12

1

10

14

9

2

10

6

9

0

12

11

7

13

15

1

3

14

5

2

8

4

3

3

15

0

6

10

1

13

8

9

4

5

11

12

7

2

14

0

2

12

4

1

7

10

11

6

8

5

3

15

13

0

14

9

S5

1

14

11

2

12

4

7

13

1

5

0

15

10

3

9

8

6

2

4

2

1

11

10

13

7

8

15

9

12

5

6

3

0

14

3

11

8

12

7

1

14

2

13

6

15

0

9

10

4

5

3

0

12

1

10

15

9

2

6

8

0

13

3

4

14

7

5

11

S6

1

10

15

4

2

7

12

9

5

6

1

13

14

0

11

3

8

2

9

14

15

5

2

8

12

3

7

0

4

10

1

13

11

6

3

4

3

2

12

9

5

15

10

11

14

1

7

6

0

8

13

0

4

11

2

14

15

0

8

13

3

12

9

7

5

10

6

1

S7

1

13

0

11

7

4

9

1

10

14

3

5

12

2

15

8

6

2

1

4

11

13

12

3

7

14

10

15

6

8

0

5

9

2

3

6

11

13

8

1

4

10

7

9

5

0

15

14

2

3

12

0

13

2

8

4

6

15

11

1

10

9

3

14

5

0

12

7

S8

1

1

15

13

8

10

3

7

4

12

5

6

11

0

14

9

2

2

7

11

4

1

9

12

14

2

0

6

10

13

15

3

5

8

3

2

1

14

7

4

10

8

13

15

12

9

0

3

5

6

11

Таблица 7 разделена на две части. Результат преобразования G(K) разбивается на две половины C0 и D0 по 28 бит каждая. Первые четыре строки матрицы G определяют, как выбираются биты последовательности C0 (первым битом C0 будет бит 57 ключа шифра, затем бит 49 и так далее, а последними битами – бит 44 и 36 ключа).

Следующие четыре строки матрицы G определяют, как выбираются биты последовательности D0 (т.е. последовательность D0 будет состоять из битов 63, 55, 47, …, 12, 4 ключа шифра). Из таблицы 7 видно, что для генерации последовательностей C0 и D0 не используются биты 8, 16, 24, 32, 40, 48, 56 и 64 ключа шифра. Эти биты не влияют на шифрование и могут служить для других целей, например, для контроля по четности. Таким образом, в действительности ключ шифра является 56-битовым.

После определения C0 и D0 рекурсивно определяются Ci и Di, i = 1, 2, …, 16. Для этого применяются операции циклического сдвига влево на один или два бита в зависимости от номера шага итерации, как показано в табл. 8.

Таблица 8.

Таблица сдвигов si для вычисления ключа.

Номер итерации

Количество si сдвигов влево, бит

Номер итерации

Количество si, сдвигов влево, бит

1

1

9

1

2

1

10

2

3

2

11

2

4

2

12

2

5

2

13

2

6

2

14

2

7

2

15

2

8

2

16

1

Цикловый ключ Кi определяется по формуле Кi=H(CiDi), где функция Н задается матрицей (табл. 9).