Информационная безопасность. Лекция 8: Симметричные алгоритмы шифрования

Симметричные алгоритмы шифрования
Алгоритм DES

Алгоритм DES (Data Encryption Standard) — федеральный стандарт США, на котором основан международный стандарт ISO 8372-87. DES был поддержан Американским национальным институтом стандартов (ANSI) и рекомендован для применения Американской ассоциацией банков (ABA). DES предусматривает 4 режима работы:

  • ECB (Electronic Codebook) электронная кодовая книга;
  • CBC (Cipher Block Chaining) цепочка блоков;
  • CFB (Cipher Feedback) обратная связь по шифртексту;
  • OFB (Output Feedback) обратная связь по выходу.

ECB — Electronic Codebook (электронная кодовая книга) — каждый блок из 64 битов незашифрованного текста шифруется независимо от остальных блоков, с применением одного и того же ключа шифрования. Типичные приложения — безопасная передача одиночных значений (например, криптографического ключа). Данный режим является самым простым режимом, при котором незашифрованный текст обрабатывается последовательно, блок за блоком. Каждый блок шифруется, используя один и тот же ключ. Если сообщение длиннее, чем длина блока соответствующего алгоритма, то оно разбивается на блоки соответствующей длины, причем последний блок дополняется в случае необходимости фиксированными значениями. При использовании данного режима одинаковые незашифрованные блоки будут преобразованы в одинаковые зашифрованные блоки.

ECB-режим идеален для небольшого количества данных, например, для шифрования ключа сессии.

Существенным недостатком ECB является то, что один и тот же блок незашифрованного текста, появляющийся более одного раза в сообщении, всегда имеет один и тот же зашифрованный вид. Вследствие этого для больших сообщений ECB режим считается небезопасным. Если сообщение имеет много одинаковых блоков, то при криптоанализе данная закономерность будет обнаружена.

CBC — Cipher Block Chaining (цепочка блоков) — вход криптографического алгоритма является результатом применения операции XOR к следующему блоку незашифрованного текста и предыдущему блоку зашифрованного текста. Типичные приложения — общая блокоориентированная передача, аутентификация.

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

clip_image001

Рис. 1.  Схема режима CBC.

CFB — Cipher Feedback (обратная связь по шифртексту). Как и в режиме CBC, используется операция XOR для предыдущего блока зашифрованного текста и следующего блока незашифрованного текста. Таким образом, любой блок зашифрованного текста является функцией от всего предыдущего незашифрованного текста. Входом функции шифрования является регистр сдвига, который первоначально устанавливается в инициализационный вектор Co. Для выхода алгоритма выполняется операция XOR с незашифрованным текстом M1 для получения первого блока зашифрованного текста С1.

clip_image002

Рис. 2.  Схема режима CFB.

OFB — Output Feedback (обратная связь по выходу) — аналогичен CFB, за исключением того, что на вход алгоритма при шифровании следующего блока подается результат шифрования предыдущего блока; только после этого выполняется операция XOR с незашифрованным текстом. Типичные приложения — потокоориентированная передача по зашумленному каналу (например, спутниковая связь).

Основное преимущество режима OFB состоит в том, что если при передаче произошла ошибка, то она не распространяется на следующие зашифрованные блоки, и тем самым сохраняется возможность дешифрования последующих блоков. Например, если появляется ошибочный бит в Сi, то это приведет только к невозможности дешифрования этого блока и получения Mi. Дальнейшая последовательность блоков будет расшифрована корректно. При использовании режима CFB Сi подается в качестве входа в регистр и, следовательно, является причиной последующего искажения потока.

clip_image003

Рис. 3.  Схема режима OFB.

Недостаток OFB в том, что он более уязвим к атакам модификации потока сообщений, чем CFB.

DES является классической сетью Фейстеля с двумя ветвями. Данные шифруются 64-битными блоками, используя 56-битный ключ. Алгоритм преобразует за несколько раундов 64-битный вход в 64-битный выход. Процесс шифрования состоит из четырех этапов. На первом из них выполняется начальная перестановка (IP) 64-битного исходного текста (забеливание), во время которой биты переупорядочиваются в соответствии со

clip_image005

Рис. 4.  Общая схема DES

стандартной таблицей. Следующий этап состоит из 16 раундов одной и той же функции, которая использует операции сдвига и подстановки. На третьем этапе левая и правая половины выхода последней (16-й) итерации меняются местами. Наконец, на четвертом этапе выполняется перестановка IP-1 результата, полученного на третьем этапе. Перестановка IP-1 инверсна начальной перестановке.

clip_image007

Рис.5.  Схема раунда алгоритма DES.

В алгоритме DES существует 8, так называемых, S-боксов. На вход каждого блока Si поступает 6 бит, а на выходе получается 4 бита. 6 бит на входе получается за счет расширения тетрад путем добавления к ним добавочных — начального и конечного битов от соседних соответствующих тетрад. Затем то значение складывается по модулю два со значением Ki, полученным на основании ключа. Этот 48-битовый результат подается на S-боксы. Первый и шестой бит на входе Si отвечают за выбор соответствующей строки в соответствующей таблице Si, а средние четыре бита — за выбор колонки. На их пересечении находится выходное значение соответствующего Si. Например, если Siвх = 0 1010 1, тогда значение строки будет 01(1), значение столбца — 1010(10), Siвых =1100(12) в соответствии с приведенной ниже таблицей.

 

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

1

0

15

7

4

14

2

13

1

10

6

12

11

9

5

3

8

2

4

1

14

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

Так как длина ключа равна 56 битам, существует 256 возможных ключей. На сегодня такая длина ключа недостаточна, поскольку допускает успешное применение лобовых атак. Простейший способ увеличить длину ключа состоит в повторном применении DES с двумя разными ключами. Используя незашифрованное сообщение P и два ключа K1 и K2, зашифрованное сообщение С можно получить следующим образом:

C = Ek2 [Ek1 [P]]

Для дешифрования требуется, чтобы два ключа применялись в обратном порядке:

P = Dk1 [Dk2 [C]]

В этом случае длина ключа равна 56 * 2 = 112 бит.

Тройной DES с двумя ключами

В этом случае выполняется последовательность зашифрование-расшифрование-зашифрование (EDE):

C = EK1 [DK2 [EK1 [P]]]

clip_image009
Рис. 6. Шифрование тройным DES

Не имеет большого значения, что используется на второй стадии: шифрование или дешифрование. В случае использования дешифрования существует только то преимущество, что можно тройной DES свести к обычному одиночному DES, используя K1 = K2:

C = EK1 [DK1 [EK1 [P]]] = EK1 [P]

Тройной DES является достаточно популярной альтернативой DES и используется при управлении ключами в стандартах ANSI X9.17 и ISO 8732 и в PEM (Privacy Enhanced Mail). Известных криптографических атак на тройной DES не существует. Цена подбора ключа в тройном DES равна 2112.

Вы здесь: Главная Информатика Защита информации Информационная безопасность. Лекция 8: Симметричные алгоритмы шифрования