Математика криптографии и теория шифрования

Стандарт шифрования данных (DES)

Разбить на страницы
Показывать лекцию целиком

8.1. Введение

Стандарт шифрования данных (DES) блочный шифр с симметричными ключами, разработан Национальным Институтом Стандартов и Технологии (NIST – National Institute of Standards and Technology).

История

В 1973 году NIST издал запрос для разработки предложения национальной криптографической системы с симметричными ключами.

Предложенная IBM модификация проекта, названная Lucifer, была принята как DES. DES были изданы в эскизном виде в Федеральном Регистре в марте 1975 года как Федеральный Стандарт Обработки Информации (FIPS – Federal Information Processing Standard).

После публикации эскиз строго критиковался по двум причинам. Первая: критиковалась сомнительно маленькая длина ключа (только 56 битов), что могло сделать шифр уязвимым к атаке "грубой силой". Вторая причина: критики были обеспокоены некоторым скрытым построением внутренней структуры DES.

Они подозревали, что некоторая часть структуры ( S -блоки) может иметь скрытую лазейку, которая позволит расшифровывать сообщения без ключа. Впоследствии проектировщики IBM сообщили, что внутренняя структура была доработана, чтобы предотвратить криптоанализ.

DES был наконец издан как FIPS 46 в Федеральном Регистре в январе 1977 года. Однако FIPS объявил DES как стандарт для использования в неофициальных приложениях. DES был наиболее широко используемым блочным шифром с симметричными ключами, начиная с его публикации. Позже NIST предложил новый стандарт (FIPS 46-3), который рекомендует использование тройного DES (трехкратно повторенный шифр DES) для будущих приложений. Как мы увидим далее, в лекциях 9-10, предполагается, что более новый стандарт AES заменит DES.

Общие положения

Как показано на рис. 8.1. , DESблочный шифр.

(рис 8.1) Шифрование и дешифрование в DES

На стороне шифрования DES принимает 64 -битовый исходный текст и порождает 64 -битовый зашифрованный текст; на стороне дешифрования DES принимает 64 -битовый зашифрованный текст и порождает 64 -битовый исходный текст. На обеих сторонах для шифрования и дешифрования применяется один и тот же 56 -битовый ключ.

8.2. Структура DES

Рассмотрим сначала шифрование, а потом дешифрование. Процесс шифрования состоит из двух перестановок ( P -блоки) — они называются начальные и конечные перестановки, — и шестнадцати раундов Файстеля. Каждый раунд использует различные сгенерированные 48 -битовые ключи. Алгоритм генерации будет рассмотрен в этой лекции позднее. Рисунок 8.2 показывает элементы шифра DES на стороне шифрования.

Начальные и конечные перестановки

Рисунок 8.3 показывает начальные и конечные перестановки ( P -блоки). Каждая из перестановок принимает 64 -битовый вход и переставляет его элементы по заданному правилу. Мы показали только небольшое число входных портов и соответствующих выходных портов. Эти перестановки — прямые перестановки без ключей, которые инверсны друг другу. Например, в начальной перестановке 58 -й бит на входе переходит в первый бит на выходе. Аналогично, в конечной перестановке первый входной бит переходит в 58 -й бит на выходе. Другими словами, если между этими двумя перестановками не существует раунда, 58 -й бит, поступивший на вход устройства начальной перестановки, будет доставлен на 58 -й выход финальной перестановкой.

(рис 8.3) Общая структура DES (рис 8.2) Начальные и конечные шаги перестановки DES

Правила перестановки для этого P -блока показаны в таблице 8.1. Таблицу можно представить как 64 -элементный массив. Заметим, что работу с таблицей мы обсуждали, значение каждого элемента определяет номер входного порта, а порядковый номер (индекс) элемента определяет номер выходного порта.

Таблица начальных и конечных перестановок
Начальные перестановки Конечные перестановки
58 50 42 34 26 18 10 02 40 08 48 16 56 24 64 32
60 52 44 36 28 20 12 04 39 07 47 15 55 23 63 31
62 54 46 38 30 22 14 06 38 06 46 14 54 22 62 30
64 56 48 40 32 24 16 08 37 05 45 13 53 21 61 29
57 49 41 33 25 17 09 01 36 04 44 12 52 20 60 28
59 51 43 35 27 19 11 03 35 03 43 11 51 19 59 27
61 53 45 37 29 21 13 05 34 02 42 10 50 18 58 26
63 55 47 39 31 23 15 07 33 01 41 09 49 17 57 25

Эти две перестановки не имеют никакого значения для криптографии в DES. Обе перестановки – без ключей и предопределенны. Причина, почему они включены в DES, не ясна и не была указана проектировщиками DES. Можно предположить, что DES был проектом, который предполагалось реализовать в аппаратных средствах (на чипах), и что эти две сложные перестановки должны были затруднить программное моделирование механизма шифрования.

Пример 8.1

Найдите выход начального блока перестановки, когда на вход поступает шестнадцатеричная последовательность, такая как

0x0002 0000 0000 0001

Решение

Вход имеет только две единицы — (бит 15 и бит 64 ); выход должен также иметь только две единицы (прямая перестановка). Используя таблицу 8.1, мы можем найти выход, связанный с этими двумя битами. Бит 15 на входе становится битом 63 в выходе. Бит 64 во входе становится битом 25 в выходе. На выходе будем иметь только две единицы — бит 25 и бит 63.

Результат в шестнадцатеричном исчислении

0x0000 0080 0000 0002

Пример 8.2

Докажем, что начальные и финальные перестановки инверсны друг другу. Преобразуем полученную выходную последовательность во входную.

0x0000 0080 0000 0002

Решение

Единичные биты — 25 и 63, другие биты равны нулю. В конечной перестановке 25 -й бит переходит в 64 -й, а 63 -й — в 15 -й. Результат

0x0002000000000001
Начальные и конечные перестановки – это прямые P -блоки, которые инверсны друг другу. Они не имеют значения для криптографии DES.

Раунды

DES использует 16 раундов. Каждый раунд DES применяет шифр Файстеля, как это показано на рис. 8.4.

(рис 8.4) Раунд в DES (сторона шифрования)

Раунд принимает LI-1 RI-1 от предыдущего раунда (или начального блока перестановки) и создает для следующего раунда LI И RI, которые поступают на следующий раунд (или конечный блок перестановки). Как мы указали в лекции 7, можно принять, что каждый раунд имеет два элемента шифра (смеситель и устройство замены). Каждый из этих элементов является обратимым. Устройство замены — очевидно обратимо, оно меняет местами левую половину текста с правой половиной. Смеситель является обратимым, потому что операция ИСКЛЮЧАЮЩЕЕ ИЛИ обратима. Все необратимые элементы сосредоточены в функции f (RI-1,KI).

Функция DES

Основной блок DES — функция DES. Функция DES с помощью 48 -битового ключа зашифровывает 32 самых правых бит RI-1, чтобы получить на выходе 32 -битовое слово. Эта функция содержит, как это показано на рис. 8.5, четыре секции: отбеливатель (whitener), P -блок расширения, группу S -блоков и прямой P -блок.

P-блок расширения. Так как вход RI-1 имеет длину 32 бита, а ключ KI — длину 48 битов, мы сначала должны расширить RI-1 до 48 бит. RI-1 разделяется на 8 секций по 4 бита. Каждая секция на 4 бита расширяется до 6 бит. Эта перестановка расширения следует по заранее определенным правилам. Для секции значения входных бит 1, 2, 3 и 4 присваиваются битам 2, 3, 4 и 5 соответственно на выходе. Выходной бит 1 формируется на основе входного бита 4 из предыдущей секции; бит выхода 6 формируется из бита 1 в следующей секции. Если секции 1 и 8 рассматривать как соседние секции, то те же самые правила применяются к битам 1 и 32. Рисунок 8.6 показывает входы и выходы в перестановке расширения.

Хотя отношения между входом и выходом могут быть определены математически, но чтобы определить этот P -блок, DES использует таблицу 8.2. Обратите внимание, что число выходов 48, но диапазон значений — только от 1 до 32. Некоторые из входов идут к больше чем одному выходу. Например, значение входного бита 5 становится значением битов выхода 6 и 8.

(рис 8.6) Функция DES (рис 8.5) Перестановка расширения
Таблица P-блока расширения
32 01 02 03 04 05
04 05 06 07 08 09
08 09 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 31 31 32 01

Отбеливатель (whitener). После расширения DES использует операцию XOR (ИСКЛЮЧАЮЩЕЕ ИЛИ) над расширенной частью правой секции и ключом раунда. Заметим, что правая секция и ключ имеют длину 48 бит. Также заметим, что ключ раунда использует только эту операцию.

S-блоки. S -блоки смешивают информацию (операция перемешивания). DES использует S -блоки, каждый с 6 -ю входными битами и 4 -мя выходными (см. рис. 8.7).

(рис 8.7) S - блоки

Данные из 48 битов от второй операции DES разделены на восемь кусков по 6 битов, и каждый кусок поступает в блок. Результат каждого блока — кусок на 4 бита; когда они объединены, результат выражается в 32 -битовом тексте. Подстановка в каждом блоке следует по заранее определенным правилам, основанным на таблице из 4 -х строк и 16 -ти столбцов. Комбинация битов 1 и 6 на входе определяет одну из четырех строк; комбинация битов от 2 -го до 5 -го определяет один из шестнадцати столбцов, как показано на рис. 8.8. Далее мы поясним это примерами.

(рис 8.8) Правила для S- блока

Поскольку для каждого S -блока есть собственная таблица, необходимо иметь восемь таблиц, например таких, как это показано в таблицах 8.3-8.10. Значение входа (номер строки и номер столбца) и значения выхода даются как десятичные номера, чтобы сэкономить место на странице. В реальности они могут быть заменены двоичными числами.

S-блок 1
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
014 04 13 01 02 15 11 08 03 10 06 12 05 09 00 07
100 15 07 04 14 02 13 10 03 06 12 11 09 05 03 08
204 01 14 07 13 06 02 11 15 12 09 07 03 10 05 00
315 12 08 02 04 09 01 07 05 11 03 14 10 00 06 13
S-блок 2
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
015 01 08 14 06 11 03 04 09 07 02 13 12 00 05 10
103 13 04 07 15 02 08 14 12 00 01 10 06 09 11 05
200 14 07 11 10 04 13 01 05 08 12 06 09 03 02 15
313 08 10 01 03 15 04 02 11 06 07 12 00 05 14 09
S-блок 3
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
010 00 09 14 06 03 15 05 01 13 12 07 11 04 02 08
113 07 00 09 03 04 06 10 02 08 05 14 12 11 15 01
213 06 04 09 08 15 03 00 11 01 02 12 05 10 14 07
301 10 13 00 06 09 08 07 04 15 14 03 11 05 02 12
S-блок 4
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
007 13 14 03 00 06 09 10 01 02 08 05 01 12 04 15
113 08 11 05 06 15 00 03 04 07 02 12 01 10 14 09
210 06 09 00 12 11 07 13 15 01 03 14 05 02 08 04
303 15 00 06 10 01 13 08 09 04 05 11 12 07 02 14
S-блок 5
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
002 12 04 01 07 10 11 06 08 05 03 15 13 00 14 09
114 11 02 12 04 07 13 01 05 00 15 10 03 09 08 06
204 02 01 11 10 13 07 08 15 09 12 05 06 03 00 14
311 08 12 07 01 14 02 13 06 15 00 09 10 04 05 03
S-блок 6
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
012 01 10 15 09 02 06 08 00 13 03 04 14 07 05 11
110 15 04 02 07 12 09 05 06 01 13 14 00 11 03 08
209 14 15 05 02 08 12 03 07 00 04 10 01 13 11 06
304 03 02 12 09 05 15 10 11 14 01 07 10 00 08 13
S-блок 7
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
004 11 02 14 15 00 08 13 03 12 09 07 05 10 06 01
113 00 11 07 04 09 01 10 14 03 05 12 02 15 08 06
201 04 11 13 12 03 07 14 10 15 06 08 00 05 09 02
306 11 13 08 01 04 10 07 09 05 00 15 14 02 03 12
S-блок 8
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
013 02 08 04 06 15 11 01 10 09 03 14 05 00 12 07
101 15 13 08 10 03 07 04 12 05 06 11 10 14 09 02
207 11 04 01 09 12 14 02 00 06 10 10 15 03 05 08
302 01 14 07 04 10 05 13 15 19 09 09 03 05 06 11

Пример 8.3

Входная последовательность S блока 1 — $$\underline 1 0001\underline 1$$. Какая последовательность будет на выходе?

Решение

Если мы запишем первый и шестой биты вместе, мы получим в двоичном исчислении 11, который выражается как число 3 при десятичном исчислении. Остающаяся часть битов 0001 в двоичном исчислении является 1 в десятичном исчислении. Мы ищем значение строки 3 и столбца 1 в таблице 8.3 ( S -блок 1 ). Результат — 12 в десятичном исчислении или 1100 в двоичном исчислении. Тогда вход 1100011 дает выход 1100.

Пример 8.4

Входная последовательность S -блока 8 — $$\underline 0 0000\underline 0$$. Какая последовательность будет на выходе?

Решение

Если мы запишем первый и шестые биты вместе, то получим в двоичном исчислении число 00, которое выражается числом 0 при десятичном исчислении. Остающаяся часть битов — 0000 в двоичном исчислении, то есть 0 в десятичном исчислении. Мы ищем значение строки 0 и столбца 0 в таблице 8.10 ( S -блок 8 ). Результат — 13 в десятичном исчислении или 1101 в двоичном исчислении. Тогда вход 000000 дает выход 1101.

Прямая перестановка — последняя операция в функции DES — прямая перестановка с 32 битами на входе и 32 битами на выходе. Отношения "вход-выход" для этой операции показаны в Таблице 8.11. Они следуют тем же самым общим правилам, как и предыдущие таблицы перестановки. Например, седьмой бит входа становится вторым битом выхода.

Таблица прямой перестановки
16 07 20 21 29 12 28 17
01 15 23 26 05 18 31 10
02 08 24 14 32 27 03 09
19 13 30 06 22 11 04 25

Шифр и обратный шифр

Используя смеситель и устройство замены, мы можем создать шифр и обратный шифр для каждого из 16 -ти раундов. Шифр используется на стороне шифрования; обратный шифр — на стороне дешифрования. Алгоритмы создания шифра и обратного шифра аналогичны.

Первый способ

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

Мы доказали в лекции 7, что смеситель и устройство замены самоинверсны. Конечные и начальные перестановки также инверсны друг другу. Левая секция исходного текста на стороне шифрования шифруется L0 как L16, и L16 дешифруется на стороне дешифратора как L0. Аналогичная ситуация с R0 и R16.

Нужно запомнить очень важное положение, которое касается шифров: ключи раундов ( K1 и K16 ) применяются при шифровании и дешифровании в обратном порядке. На стороне шифрования первый раунд применяет ключ K1, а раунд 16 — ключ K16 ; при дешифровании раунд 1 использует ключ K16, а раунд 16 — ключ K1.

В первом методе последний раунд не имеет устройства замены. (рис 8.9) DES шифр и обратный шифр для первого способа

Алгоритм

Алгоритм 8.1. приведен в псевдокодах для шифрования и соответствует четырем шагам первого метода. Коды для остальных могут быть сделаны как упражнение.

Cipher (plainBlock[64], Round Keys[16,48])
{
   pemute (64,64, plainBlock, inBlock, IntialPermutationTable)
   spilt (64, 32, inBlock, leftBlock, right Block)
   for (round = 1 to 16)
   {
      mixer (leftBlock, right Block, RoundKey[round])
      if (round!=16) swapper(leftBlock, right Block)
   }
   combine (32, 64, leftBlock, right Block, outBlock)
   pemute (64,64, outBlock, cipherBlock, FinalPermutationTable)

mixer (leftBlock[48], right Block[48], RoundKey[48])
{
   copy (32, rightBlock, T1)
   function (T1, RoundKey,T2)
   exclusive Or (32, leftBlock, T2,T3)
   copy (32, rightBlock, T1)
}

swapper (leftBlock[32], right Block[32])
{
   copy (32, leftBlock, T)
   copy (32, rightBlock, leftBlock)
   copy (32, T, rightBlock)
}

Substitute (in block[32], outblock[48], SubstituteTables[8,4,16])
{
   for(I = 1 to 8)
   {
      row <- 2 x inBlock[i x 6+1] + inBlock[i x 6+6]
      col <- 8 x inBlock[i x 6+2] + 4 x inBlock[i x 6+3]+2 x inBlock[i x 6+4] + inBlock[i x 6+5]

      value = SubstituteTables[i][row][col]

      outBlock[i x 4+1] <- value/ 8         value <- value mod 8
      outBlock[i x 4+2] <- value/ 4         value <- value mod 4
      outBlock[i x 4+3] <- value/ 2         value <- value mod 8
      outBlock[i x 4+4] <- value
   }
}
}

Альтернативный способ

При первом способе раунд 16 отличается от других раундов тем, что там не применяется устройство замены. Это необходимо, чтобы сделать последний и первый смесители в шифре одинаковыми. Мы можем делать все 16 раундов одинаковыми, добавляя к 16 -му раунду дополнительное устройство замены (два устройства замены позволяют нейтрализовать друг друга). Разработку этой схемы мы оставляем для упражнений.

Генерация ключей

Генератор ключей создает шестнадцать ключей по 48 битов из ключа шифра на 56 битов. Однако ключ шифра обычно дается как ключ из 64 -х битов, в котором 8 дополнительных битов являются битами проверки. Они отбрасываются перед фактическим процессом генерации ключей, который показан на рис. 8. 10.

Удаление битов проверки

Предварительный процесс перед расширением ключей — перестановка сжатия, которую мы называем удалением битов проверки. Он удаляет биты четности (биты 8, 16, 24, 32..., 64 ) из 64 -битового ключа и переставляет остальную часть битов согласно таблице 8.12. Остающееся значение на 56 битов — фактический ключ шифра, который используется, чтобы генерировать ключи раунда. Биты удаляются с помощью перестановки ( P -блока сжатия), как это показано в таблице 8.12.

Таблица удаления проверочных битов
57 49 41 33 25 17 09 01
58 50 42 34 26 18 10 02
59 51 43 35 27 19 11 03
60 52 44 36 63 55 47 39
31 23 15 07 62 54 46 37
30 22 14 06 61 53 45 37
29 21 13 05 28 20 12 04
(рис 8.10) Генерация ключей

Сдвиг влево

После прямой перестановки ключ разделен на две части по 28 битов. Каждая часть сдвигается влево (циклический сдвиг) на один или два бита. В раундах 1, 2, 9 и 16 смещение – на один бит, в других раундах — на два бита. Затем эти две части объединяются, чтобы создать часть в 56 бит. Таблица 8.13 показывает число сдвигов манипуляций для каждого раунда.

Число сдвигаемых бит
Раунд 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Число бит 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 1

Перестановка сжатия

Перестановка сжатия ( P -блок) изменяет 56 битов на 48 битов, которые используются для формирования ключа раунда. Перестановка сжатия показана в таблице 8.14.

Таблица сжатия ключа
14 17 11 24 01 05 03 28
15 06 21 10 23 19 12 04
26 08 16 07 27 20 13 02
41 52 31 37 47 55 30 40
51 45 33 48 44 49 39 56
34 53 46 42 50 36 29 32

Алгоритм

Теперь напишем простой алгоритм для создания ключа из ключа с проверочными битами. Алгоритм 8.2 использует несколько процедур алгоритма 8.1. Имеется и одна новая процедура — левый сдвиг ( ShiftLeft ). Обратите внимание, что T — временный блок.

Key_Generator (keyWithParities[64], RoundKeys[16. 48]. SinfTable[16])
 {                                                      '                  
 permute (64, 56, keyWithParities, cipherKey, ParityDropTable)
spilt (56, 28, cipherKey, leftKey, rightKey) 
for (round = 1 to 16) 
   {                                                                      
   shiftLeft (leftKey, ShiftTable[round1])                                    I
   shiftLeft (rightKey, ShiftTable [round])
   combine (28, 56, leftKey, rightKey, preRoundKey)
   permute (56, 48, preRoundKey, RoundKeys[round], KevCompressionTable)
   }
}

shiftLeft (block[28], NumOfShifts)
{
   for (i = 1 to numShifts)
   {
      T <- block[ 1]
      for (j = 2 to 28)
      {
          block [j-1] <- block [j]
      }
      block[28] <- T
   }
}

Примеры

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

Пример 8.5

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

Plaintext: 123456ABCD 132536	Key: AABB09182736CCDD
Cipher Text: COB7ASD05F3AS29C

Покажем результат каждого раунда и текста, созданного до и после раундов. Таблица 8.15 показывает результаты первых шагов перед началом раунда. Исходный текст — прошедший через начальную перестановку для получения различных 64 бит ( 16 шестнадцатеричных цифр).

Трассировка данных в примере 8.5
Исходный текст: 123456ABCD 132536
После первоначальной перестановки: 14A7D67818CA18D После разбиения: L0= 14A7D678 R0 = 18CA18D
Раунд Левая Правая Ключ раунда
Раунд 1 18CA18AD 5A78E394 194CD072DE8C
Раунд 2 5A78E394 4A1210F6 4568581ABCCE
Раунд 3 4A1210F6 B8089591 06EDA4ACF5B5
Раунд 4 B8089591 236779C2 DA2D032B6EE3
Раунд 5 236779C2 A15A4B87 69A629FEC913
Раунд 6 A15A4B87 2E8F9C65 C1948E87475E
Раунд 7 2E8F9C65 A9FC20A3 708AD2DDB3C0
Раунд 8 A9FC20A3 308BEE97 34F822F0C66D
Раунд 9 308BEE97 10AF9D37 84BB4473DCCC
Раунд 10 10AF9D37 6CA6CB20 02765708B5BF
Раунд 11 6CA6CB20 FF3C485F 6D5560AF7CA5
Раунд 12 FF3C485F 22A5963B C2C1E96A4BF3
Раунд 13 22A5963B 387CCDAA 99C31397C91F
Раунд 14 387CCDAA BD2DD2AB 251B8BC717D0
Раунд 15 BD2DD2AB CF26B472 3330C5D9A36D
Раунд 16 19BA9212 CF26B472 181C5D75C66D
После объединения: 19BA9212 CF26B472
Зашифрованный текст: C0B7A8D05F3A829C (после конечной перестановки)

Таблица показывает результат 16 раундов, которые включают смешивание и замену (исключая последний раунд). Результаты последних раундов ( L16 и R16 ) объединены. Наконец, текст проходит конечную перестановку, для того чтобы получить зашифрованный текст.

Следует отметить некоторые положения. Правая секция каждого раунда совпадает с левой секцией следующего раунда. Причина в том, что правая секция проходит через смеситель без изменения, а устройство замены переносит ее в левую секцию. Например, R1 передается через смеситель второго раунда без изменения, но затем, пройдя устройство замены, он становится L2. Второе интересное положение: на последнем раунде мы не имеем устройства замены. Именно поэтому R15 становится R16 вместо того чтобы стать L16.

Пример 8.6

Давайте рассмотрим, как Боб в пункте назначения может расшифровать зашифрованный текст, полученный от Алисы, с помощью совпадающего ключа. Для экономии времени мы разберем только несколько раундов. Таблица 8.16 показывает интересующие нас точки. Первое правило: ключи раунда должны использоваться в обратном порядке. Сравните таблицу 8.15 и таблицу 8.16. Ключ раунда 1 — такой же как ключ для раунда 16. Значения L0 и R0 при дешифрации те же самые, что и значения L16 и R16 при шифровании. Аналогичные совпадения будут получены и в других раундах. Это доказывает не только, что шифр и обратный шифр инверсны друг другу, но также то, что каждый раунд при шифрации имеет соответствующий раунд при дешифрации в обратном шифре. Результат свидетельствует, что начальные и конечные перестановки также являются инверсиями друг друга.

Трассировка данных в примере 8.6
Зашифрованный текст: C0B7A8D05F3A829C
После первоначальной перестановки: 19BA9212 CF26B472 После разбиения: L0= 19BA9212 R0 = CF26B472
Раунд Левая Правая Ключ раунда
Раунд 1 CF26B472 BD2DD2AB 181C5D75C66D
Раунд 2 BD2DD2AB 387CCDAA 3330C5D9A36D
......... ......... ......... .........
Раунд 15 5A78E394 18CA182AD 4568581ABCCE
Раунд 16 19BA9212 18CA18AD 194CD072DE8C
После объединения: 14A7D67818CA18D
Исходный текст: 123456ABCD 132536 (после конечной перестановки)

8.3. Анализ DES

DES был подвергнут тщательному анализу. Были проведены испытания, чтобы измерить интенсивность некоторых желательных свойств в блочном шифре. Элементы DES прошли исследования на соответствие некоторым критериям. Ниже мы обсудим некоторые из них.

Свойства

Два желательных свойства блочного шифра — эффект лавины и законченность.

Лавинный эффект

Лавинный эффект означает, что небольшие изменения в исходном тексте (или ключе) могут вызвать значительные изменения в зашифрованном тексте. Было доказано, что DES имеет все признаки этого свойства.

Пример 8.7

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

Исходный текст: 0000000000000000              Ключ: 22234512987ABB23
Зашифрованный текст: 4789FD476E82A5F1

Исходный текст: 0000000000000001              Ключ: 22234512987ABB23
Зашифрованный текст: OA4ED5C15A63FEA3

Хотя два блока исходного текста отличаются только самым правым битом, блоки зашифрованного текста отличаются на 29 бит. Это означает, что изменение приблизительно в 1,5 процентах исходного текста создают изменение приблизительно 45 процентов зашифрованного текста. Таблица 8.17 показывает изменение в каждом раунде. Можно увидеть, что существенные изменения возникают уже в третьем раунде.

Число различных бит в примере 8.7
Раунд 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Разница в битах 1 6 20 29 30 33 32 29 32 39 33 28 30 31 30 29

Эффект полноты

Эффект полноты заключается в том, что каждый бит зашифрованного текста должен зависеть от многих битов исходного текста. Рассеивание и перемешивание, произведенное P -блоками и S -блоками в DES, указывает на очень сильный эффект полноты.

Критерии разработок DES

Проект DES был предъявлен IBM в 1994 году. Многочисленные испытания DES показали, что он удовлетворяет некоторым из заявленных критериев. Ниже кратко обсуждаются некоторые проблемы разработок DES.

S-блоки

Мы обсудили общие критерии построения S -блоков в лекции 7. Здесь мы только обсуждаем критерии, выбранные для DES. Структура блоков обеспечивает перемешивание и рассеивание от каждого раунда до следующего. Согласно этому положению и некоторому анализу, мы можем упомянуть несколько свойств S -блоков.

  • Входы каждой строки есть перестановки значений между 0 и 15.
  • S -блоки — нелинейные. Другими словами, выход — не аффинное преобразование. (См. лекции 4 (аффинное преобразование) и 5, где рассматривалась линейность и S -блоков.)
  • Если мы изменяем единственный бит на входе, на выходе будут изменены два или больше бита.
  • Если два входа S -блока отличаются только двумя средними битами (битами 3 и 4 ), выходная информация должна отличаться по крайней мере двумя битами. Другими словами, S (x) и $$S(x \oplus 001100)$$ должны отличаться по крайней мере двумя битами, где x — вход и S(x) — выход.
  • Если два входа в S -блок отличаются первыми двумя битами (биты 1 и 2 ) и последними двумя битами ( 5 и 6 ), два выхода должны быть различны. Другими словами, мы должны иметь следующее отношение: $$S\left( x \right) \ne S(x \oplus 11bc00) $$, в котором b и с — произвольные биты.
  • Есть только 32 шестибитовые пары "вход-выход" ( xi и xj ), в которых $${x_i} \oplus {x_j} \ne {\left( {000000} \right)_2}$$. Эти 32 входных пары создают 32 пары слова выхода по 4 бита. Если мы создаем какие-то различия между 32 выходами пар, $$d = {y_i} \oplus {y_j}$$, то из этих d должны быть одинаковыми не больше чем 8.
  • Такой же критерий, как в пункте 6, применяется к трем S -блокам.
  • В любом S -блоке, если единственный входной бит сохраняется как константа ( 0 или 1 ), то другие биты изменяются случайно так, чтобы разности между числом нулей и единиц были минимизированы.
  • P-блоки

    Между двумя рядами S -блоков (в двух последующих раундах), есть один прямой P -блок ( 32 на 32 ) и один P -блок расширения ( 32 на 48 ). Эти два P -блока вместе обеспечивают рассеивание битов. Мы уже говорили об общем принципе построения P -блока в лекции 7. Здесь мы обсудим только прикладные P -блоки, используемые в DES. В структуре P -блоков были реализованы следующие критерии:

  • Каждый вход S -блока подключается к выходу другого S -блока (в предыдущем раунде).
  • Ни один вход к данному S -блоку не соединяется с выходом от того же самого блока (в предыдущем раунде).
  • Четыре бита от каждого S -блока идут в шесть различных S -блоков (в следующем раунде).
  • Ни один из двух битов выхода от S -блока не идет в тот же самый S -блок (в следующем раунде).
  • Если число блоков S -блоков 8, то S1, S2,..., S 8.
  • Выход Sj-2 переходит в один из первых двух битов Sj (в следующем раунде).
  • Бит выхода от Si-1 переходит в один из последних двух битов Sj (в следующем раунде).
  • Выход Sj +1 переходит в один из двух средних битов Sj (в следующем раунде).
  • Для каждого S -блока два бита выхода идут в первые или последние два бита S -блока в следующем раунде. Другие два бита выхода идут в средние биты S -блока в следующем раунде.
  • Если выход от Sj переходит в один из средних битов в Sk (в следующем раунде), то бит выхода от Sk не может идти в средний бит Sj. Если мы допускаем j = k, то подразумеваем, что ни один средний бит S -блока не может идти в один из средних битов того же самого S -блока в следующем раунде.
  • Число раундов

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

    Слабости DES

    В течение прошлых нескольких лет критики нашли некоторые слабости в DES.

    Мы кратко укажем на некоторые слабости, которые были обнаружены в структуре шифра.

    S-блоки. В литературе указываются по крайней мере три проблемы S -блоков.

  • В S -блоке 4 три бита выхода могут быть получены тем же самым способом, что и первый бит выхода: дополнением некоторых из входных битов.
  • Два специально выбранных входа к массиву S -блока могут создать тот же самый выход.
  • Можно получить тот же самый выход в одном единственном раунде, изменяя биты только в трех соседних S -блоках.
  • P-блоки. В структуре P -блока были найдены одна загадка и одна слабость.

  • Не ясно, почему проектировщики DES использовали начальную и конечную перестановки. Эти перестановки не вносят никаких новых свойств с точки зрения безопасности.
  • В перестановке расширения (в функции) первые и четвертые биты последовательностей на 4 бита повторяются.
  • Слабость в ключе шифра

    Размер ключа. Критики утверждают, что самая серьезная слабость DES — это размер ключа ( 56 битов). Чтобы предпринять атаку грубой силы данного блока зашифрованного текста, злоумышленники должны проверить 256 ключей.

    a. Используя доступную сегодня технологию, можно проверить один миллион ключей в секунду. Это означает, что потребуется более чем две тысячи лет, чтобы выполнить атаку грубой силы на DES, используя компьютер только с одним процессором.

    b. Если мы можем сделать компьютер с одним миллионом чипов процессоров (параллельная обработка), то сможем проверить все множество ключей приблизительно за 20 часов. Когда был введен DES, стоимость такого компьютера была более чем несколько миллионов долларов, но она быстро снизилась. Специальный компьютер был создан в 1998 году — и нашел ключ за 112 часов.

    c. Компьютерные сети могут моделировать параллельную обработку. В 1977 году команда исследователей использовала 3500 компьютеров, подключенных к Internet, чтобы найти ключ RSA за 120 дней. Множество ключей было разделено среди всех этих компьютеров, и каждый компьютер был ответственен за проверку части домена DES. Если 3500 связанных в сеть компьютеров могут найти ключ через 120 дней, то секретное общество из 42 000 членов может найти ключ через 10 дней.

    Приведенное выше показывает, что DES с размером ключа шифра 56 битов не обеспечивает достаточной безопасности. Позже в этой лекции мы увидим, что есть одно решение этой проблемы – это использование тройного DES(3DES) с двумя ключами ( 112 битов) или тройного DES с тремя ключами (биты 16 ).

    Слабые ключи. Четыре ключа из 256 возможных ключей называются слабыми ключами. Слабые ключи — это одни из тех, которые после операции удаления проверочных бит (используя таблицу 8.12) состоят из всех нулей или всех единиц или половины нулей и половины единиц. Такие ключи показаны в таблице 8.18.

    Слабые ключи
    Ключи до удаления проверочных бит (64 бита) Действующие ключи (56 бит)
    0101 0101 0101 0101 0000000 0000000
    1F1F 1F1F 1F1F 1F1F 0000000 FFFFFFF
    E0E0 E0E0 E0E0 E0E0 FFFFFFF 0000000
    FEFE FEFE FEFE FEFE FFFFFFF FFFFFFF

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

    Это происходит по той причине, что алгоритм генерирования ключей сначала делит ключ шифра на две половины. Смещение или перестановка блока не изменяют блок, если он состоит из всех нулей, или всех единиц, или наполовину из нулей и единиц.

    В чем опасность использования слабых ключей? Если мы зашифровали блок слабым ключом и впоследствии расшифровали результат тем же самым слабым ключом, мы получаем первоначальный блок. Процесс создает один и тот же первоначальный блок, если мы расшифровываем блок дважды. Другими словами, каждый слабый ключ есть инверсия самого себя: Ek. (Ek (P)) = P, как это показано на рис. 8.11.

    (рис 8.11) Двойное шифрование и дешифрование со слабым ключом

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

    Пример 8.8

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

    Ключ: 0x0101 0101 0101 0101	
    Зашифрованный текст: 0x814FE938589154F7
    Исходный текст: 0xl234.56887654321	
    	
    Ключ: 0x0101 0101 0101 0101	
    Исходный текст: 0x814FE938589154F7	
    Зашифрованный текст: 0xl234.56887654321

    Полуслабые ключи. Имеются шесть ключевых пар, которые названы полуслабыми ключами. Этим шесть пар показаны в таблице 8.19 (формат на 64 бита перед удалением проверочных бит). Полуслабые ключи создают только два различных ключа раунда и затем повторяют их восемь раз. Кроме того, ключи раунда, созданные от каждой пары, — одни и те же в различном порядке.

    Полуслабые ключи
    Первый ключ в паре Второй ключ в паре
    01FE 01FE 01FE 01FE FE01 FE01 FE01 FE01
    1FEO 1FEO OEF1 OEF1 E01F E01F F10E F10E
    01EO 01E1 01F1 01F1 E001 E001 F101 F101
    1FFE 1FFE OEFE OEFE FE1F FE1F FEOE FEOE
    011F 011F 010E 010E 1F01 1F01 OE01 OE01
    EOFE EOFE FIFE FIFE FEEO FEEO FEF1 FEFl

    Чтобы проиллюстрировать идею, мы создали ключи раунда от первой пары, как показано ниже:

    Ключ раунда 1	9153E54319BD 	6EAC1ABCE642
    Ключ раунда 2	6EAC1ABCE642	9153E54319BD
    Ключ раунда 3	6EAC1ABCE642	9153E54319BD
    Ключ раунда 4	6EAC1ABCE642	9153E54319BD
    Ключ раунда 5	6EAC1ABCE642	9153E54319BD
    Ключ раунда 6	6EAC1ABCE642	9153E54319BD
    Ключ раунда 7	6EAC1ABCE642	9153E54319BD
    Ключ раунда 8	6EAC1ABCE642	9153E54319BD
    Ключ раунда 9	9153E54319BD	6EAC1ABCE642
    Ключ раунда 10	9153E54319BD	6EAC1ABCE642
    Ключ раунда 11	9153E54319BD	6EAC1ABCE642
    Ключ раунда 12	9153E54319BD	6EAC1ABCE642
    Ключ раунда 13 	9153E54319BD	6EAC1ABCE642
    Ключ раунда 14	9153E54319BD	6EAC1ABCE642
    Ключ раунда 15	9153E54319BD	6EAC1ABCE642
    Ключ раунда 16	6EAC1ABCE642	9153E54319BD

    Как показывает список, имеется восемь одинаковых ключей раунда в каждом полуслабом ключе. Кроме того, ключи раунда 1 в первом множестве — те же самые, что и ключи раунда 16 во втором; ключи раунда 2 в первом — те же самые, что и ключи раунда 15 во втором, и так далее. Это означает, что ключи инверсны друг другу: Ek2. (Ek1E (P)) = P, как показано на рис. 8.12.

    (рис 8.12) Пара полуслабых ключей при шифровании и дешифровании

    Возможно слабые ключи. Также имеется 48 ключей, которые называются возможно слабыми ключами. Возможно слабый ключ создает только четыре различных ключа раунда; другими словами, шестнадцать ключей раундов разделены на четыре группы, и каждая группа состоит из четырех одинаковых ключей раунда.

    Пример 8.9

    Какова вероятность случайного выбора слабого, полуслабого или возможно слабого ключа?

    Решение

    Множество ключей DES равно 256. Общее количество вышеупомянутых ключей — 64 (4 + 12 + 48). Вероятность выбора одного из этих ключей равна $$8,8 \times {10^{ - 16}}$$, т.е. исключительно мала.

    Ключевое дополнение. Среди множества ключей (256) некоторые ключи могут быть получены инверсией (изменение из 0 в 1 или 1 в 0 ) каждого бита в ключе. Ключевое дополнение упрощает процесс криптоанализа. Ева может использовать только половину возможных ключей ( 255 ), чтобы выполнить атаку грубой силы, потому что

    C=E(K,P) ->  C=E(K,P)

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

    Пример 8.10

    Давайте проверим эти сведения о ключах дополнения. Мы используем произвольный ключ и исходный текст, для того чтобы найти соответствующий зашифрованный текст. Если мы имеем ключевое дополнение и исходный текст, то получим i дополнение предыдущего зашифрованного текста (таблица 8.20).

    Результаты примера 8.10
    Оригинал Дополнение
    Ключ 1234123412341234 EDCBEDCBEDCBEDCB
    Исходный текст 12345678ABCDEF12 EDCBA987543210ED
    Зашифрованный текст E112BE1DEFC7A367 1EED41E210385C98

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

    8.4. Многократное применение DES

    Как мы уже видели, основная критика DES направлена на длину ключа. Возможные технологии и возможности параллельных процессоров делают реальной атаку грубой силы. Одно из решений для улучшения безопасности — это отказ от DES и разработка нового шифра. Это решение мы рассмотрим в лекциях 9-10 при применении AES. Второе решение — многократное (каскадное) применение множества ключей. Это решение, которое использовалось некоторое время, не требует инвестиций в новое программное обеспечение и аппаратные средства. Ниже рассмотрен такой подход.

    Как мы узнали в лекции 7, подстановка, которая размещает все возможные входы во все возможные выходы, является группой с отображениями элементов множества и набором операций. В этом случае использование двух последовательных отображений бесполезно, потому что мы можем всегда найти третье отображение, которое эквивалентно композиции этих двух (свойство замкнутости). Это означает, что если DES — группа, то однократный DES с ключом k3 делает то же самое (рисунок 8.13).

    (рис 8.13) Композиция отображений

    К счастью DES — не группа. Она базируется на следующих двух параметрах:

    а. Номер возможных входов или выходов в DESN = 264. Это означает, что N!= (264)! = 10347 380 000 000 000 000 000 отображений. Один из способов способ сделать DES группой — это поддержать все эти отображения с размером ключа log2 (264!) — 270 битов. Но мы знаем, что длина ключа в DES56 бит (только маленькая часть этого требуемого огромного ключа).

    б. Другой способ сделать DES группой – сделать, чтобы множество отображений было подмножеством множества в смысле зависимости от первого параметра; но было доказано, что группы, созданные из группы с помощью первого параметра, имеют ключевой размер 56 битов.

    Если DES не является группой, то очень маловероятно, что мы можем найти ключ k3, такой, что

    Ek2(Ek1(P)) = Ek3(P)

    Это означает, что мы можем использовать двукратные или трехкратные DES, чтобы увеличить размер ключа.

    Двукратный DES

    Первый подход состоит в том, чтобы использовать двукратный DES (2DES). При этом подходе мы применяем два типа шифров DES для шифрования и два типа обратных шифров для дешифрования. Каждый тип использует различный ключ, что означает, что размер ключа теперь удвоился ( 112 битов). Однако двукратный DES уязвим к атаке знания открытого текста, как это обсуждается в следующем разделе.

    На первый взгляд двукратные DES увеличивают число испытаний при поиске ключа от 256 (в однократном DES) к 2112 (в двукратном DES). Однако при использовании атаки знания исходного текста, называемой атакой сведения к середине, можно доказать, что двукратный DES улучшает эту устойчивость (до 257 по испытаниям), но не чрезвычайно (к 2112 ). Рисунок 8.14 показывает диаграмму для двукратного DES. Алиса использует два ключа, k1 и k2, чтобы зашифровывать исходный текст P в зашифрованный текст C ; Боб использует зашифрованный текст C и два ключа, k2 и k1, для восстановления P.

    (рис 8.14) Атака сведения к середине в двукратном DES

    В средней точке М — текст, созданный первым шифрованием или первым дешифрованием. Для обеспечения правильной работы он должен быть одинаковым для шифрования и дешифрования. Другими словами, мы имеем два отношения:

    M = EK1(P) и M = EK2(C)

    Предположим, что Ева перехватила предыдущую пару P и C (атака знания исходного текста). Базируясь на первом отношении из упомянутых выше, Ева зашифровывает P, используя все возможные значения (256) k1, и записывает все значения, полученные для М. Базируясь на вторых отношениях, упомянутых выше, Ева расшифровывает C, используя все возможные значения ( 256 ) k2. Она записывает все значения, полученные для М. Далее Ева создает две таблицы, отсортированные согласно значениям M. Она сравнивает значения для М, пока не находит те пары k1 и k2, для которых значение М является одним и тем же в обеих таблицах (как показано на рис. 8.15). Обратите внимание, что должна быть по крайней мере одна пара, потому что она делает исчерпывающий поиск комбинации двух ключей.

    1. Если есть только одно соответствие. Ева нашла два ключа ( k1 и k2 ). Если есть больше чем один кандидат, Ева перемещается в следующий шаг.

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

    (рис 8.15) Таблицы для атаки "сведения к середине"

    Было доказано, что после применения второго шага к нескольким перехваченным парам "зашифрованный текст — исходный текст" ключи были найдены. Это означает, что вместо того чтобы использовать поиск ключей с помощью 2112 испытаний, Ева использует 256 испытаний поиска ключа и проверяет два раза (несколько больше испытаний требуется, если найден на первом шаге единственный кандидат). Другими словами, двигаясь от однократного DES до двукратного DES, мы увеличили объем испытаний от 256 до 257 (а не до 2112, как это кажется при поверхностном подходе).

    Трехкратный DES

    Для того чтобы улучшить безопасность DES, был предложен трехкратный DES (3DES). Он использует три каскада DES для шифрования и дешифрования. Сегодня используются две версии трехкратных DES: трехкратный DES с двумя ключами и трехкратный DES с тремя ключами.

    Трехкратный DES с двумя ключами

    В трехкратном DES с двумя ключами есть только два ключа: k1 и k2. Первый и третий каскады используют k1 ; второй каскад использует k2. Чтобы сделать трехкратный DES совместимым с DES, средний каскад применяет дешифрование (обратный шифр) на стороне шифрования и шифрование (шифр) на стороне дешифрования. Таким способом сообщение, зашифрованное DES-ключом k, может быть расшифровано трехкратным DES, если k1 = k2 = k. Хотя трехкратный DES с двумя ключами также уязвим при атаке "знания исходного текста", он гораздо устойчивее, чем двукратный DES. Он был принят для банков. Рисунок 8.16 показывает трехкратный DES с двумя ключами.

    Трехкратный DES с тремя ключами

    Возможность атак "знания исходного текста" при трехкратном DES с двумя ключами "соблазнила" некоторые приложения использовать трехкратный DES с тремя ключами. Алгоритм может применять три каскада шифра DES на стороне шифрования и три каскада обратных шифров на стороне дешифрования. Для совместимости с однократным DES сторона шифрования использует EDE, а сторона дешифрования — DED. E (encryption) — каскад шифрования, D (decryption) — каскад дешифрования. Совместимость с однократным DES обеспечивается при k1 = k и установкой k2 и k3 к одному и тому же произвольному ключу, выбранному приемником. Трехкратный DES с тремя ключами используется многими приложениями, такими как PGP (Pretty Good Privacy), поскольку гарантирует очень хорошую конфиденциальность.

    (рис 8.16) Трехкратный DES с двумя ключами

    8.5. Безопасность DES

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

    Атака грубой силы

    Мы уже обсуждали слабость шифра с коротким ключом. Слабость ключа совместно с другими рассмотренными недостатками, делает очевидным, что DES может быть взломан с числом испытаний 255. Однако сегодня большинство приложений использует либо 3DES с двумя ключами (размер ключа 2112 ), либо 3DES с тремя ключами (размер ключа 2168 ). Эти две многократных версии DES позволяют ему показывать существенную стойкость к атакам грубой силы.

    Дифференциальный криптоанализ

    Мы в лекции 7 уже обсуждали методику дифференциального криптоанализа для современных блочных шифров. DES не является устойчивым к такому виду атаки. Однако многое указывает, что разработчики DES уже знали об этом типе атаки и проектировали S -блоки и специально выбрали число раундов, чтобы сделать DES стойким к этому типу атаки. Сегодня показано, что DES может быть взломан, используя дифференциальный криптоанализ, если мы имеем 247 выборок исходного текста или 255 известных исходных текстов. Хотя это выглядит более эффективно, чем в атаке грубой силы, предположить, что кто-то знает 247 выборок исходного текста или 255 выборок исходного текста, практически невозможно. Поэтому мы можем сказать, что DES является стойким к дифференциальному криптоанализу. Также показано, что увеличение числа раундов до 20 увеличивает число требуемых выборок исходного текста для атаки более чем до 264. Такое увеличение невозможно, потому что число блоков исходного текста в DES только 264.

    Линейный криптоанализ

    Мы обсуждали методику линейного криптоанализа для современных блочных шифров в лекции 7. Линейный криптоанализ — более новая методика, чем дифференциальный криптоанализ. DES более уязвим к применению линейного криптоанализа, чем к дифференциальному криптоанализу — вероятно потому, что этот тип атак не был известен проектировщикам DES и S -блоки не являются очень стойкими к линейному криптоанализу. Показано, что DES может быть взломан с использованием 243 пары известных исходных текстов. Однако с практической точки зрения перехват такого количества пар очень маловероятен.

    8.6. Рекомендованная литература

    Нижеследующие книги и сайты обеспечивают более детальную информацию о предметах, которые мы обсуждали в этой лекции.

    Книги

    [Sta06], [Sti06], [Rhe03], [Sal03], [Mao04] и [TW06] — это книги, которые рассматривают DES.

    Сайты

    Нижеследующие сайты содержат боле подробную информацию о темах, обсужденных в этой лекции,

  • http://www.itl.nist.gov/fipspubs/np46-2.htm
  • www.nist.gov/director/prog-ofc/report01-2.pdf
  • www.engr.mun.ca/-how ard/PAPERS/ldc_tutorial.ps
  • islab.oregonstate.edu/koc/ece575/notes/dc 1.pdf
  • homes.esat.kuleuven.be / ~ abiryuko/Cryptan/matsui_des
  • 8.7. Итоги

  • Стандарт шифрования данных (DES) — блочный шифр с симметричными ключами, изданный национальным Институтом Стандартов и Технологии (NIST) как FIPS 46 в Федеральном Регистре.
  • На стороне шифрования DES принимает исходный текст на 64 бита и создает зашифрованный текст на 64 бита. На стороне дешифрования DES принимает зашифрованный текст на 64 бита и создает блок на 64 бита исходного текста. Ключ шифра на 56 битов одного типа используется и для шифрования, и для дешифрования.
  • Процесс шифрования состоит из двух перестановок ( P -блоки), которые называются начальными и конечными перестановками, и шестнадцати раундов Файстеля. Каждый раунд DES — шифр Файстеля с двумя элементами (смеситель и устройство замены). Каждый из этих элементов является обратимым.
  • Основой DES является функция DES. Функция DES применяет ключ на 48 битов к самым правым 32 битам, чтобы получить на выходе 32 бита. Эта функция составлена из четырех операций: перестановки расширения, отбеливателя (который добавляет ключ), группы S -блоков и прямой перестановки.
  • Генератор ключей раунда создает из ключа шифра на 56 битов шестнадцать ключей по 48 битов. Однако ключ шифра обычно представляется как ключ на 64 бита, в котором 8 дополнительных битов являются проверочными битами — они отбрасываются перед фактическим процессом генерирования ключей.
  • DES показывает хорошие рабочие характеристики по отношению к эффектам полноты (законченности) и лавины. К числу слабостей DES относятся: построение шифра ( S -блоки и P -блоки) и ключ шифра (длина), слабые ключи, полуслабые ключи, возможно слабые ключи и дополнение ключей.
  • Так как DES — не группа, одно из решений по улучшению безопасности DES состоит в том, чтобы пользоваться многократными DES, которые используют кратное число применения ключей (двукратный или трехкратный DES). Двукратный DES уязвим к атаке сведения к середине, поэтому в обычных приложениях используется трехкратный DES с двумя ключами или с тремя ключами.
  • Разработка S -блоков и число раундов сделали DES почти обладающим иммунитетом от дифференциального криптоанализа. Однако DES уязвим при применении линейного криптоанализа, если злоумышленники смогут собрать достаточно много исходных текстов.
  • 8.8. Набор для практики

    Обзорные вопросы

  • Каков размер блока в DES? Каков размер ключа шифра в DES? Каков размер ключей раунда в DES?
  • Каково число раундов в DES?
  • Сколько смесителей и устройств замены используется в первом способе шифрования и обратного дешифрования? Сколько их используется при втором способе?
  • Сколько перестановок используется в алгоритме шифра DES?
  • Сколько операций ИСКЛЮЧАЮЩЕЕ ИЛИ используется в DES-шифре?
  • Почему DES-функции необходима расширяющая перестановка?
  • Почему генератор ключей раунда нуждается в удалении проверочных бит?
  • Какова разность между слабым ключом, полуслабым ключом и возможно слабым ключом?
  • Что такое двукратный DES? Какая атака двукратного DES сделала его бесполезным?
  • Что такое трехкратный DES? Что такое трехкратный DES с двумя ключами? Что такое трехкратный DES с тремя ключами?
  • Упражнения

  • Ответьте на следующие вопросы об S -блоках в DES:
  • покажите результат прохождения 110111 через S -блок 3.
  • покажите результат прохождения 001100 через S -блок 4.
  • покажите результат прохождения 000000 через S -блок 7.
  • покажите результат прохождения 111111 через S -блок 2.
  • Нарисуйте таблицу, которая показывает результат прохождения 000000 через все 8 S -блоков. Рассмотрите результат на выходе.
  • Нарисуйте таблицу, которая показывает результат прохождения 111111 через все 8 S -блоков. Рассмотрите результат на выходе.
  • Проверьте третий критерий для S -блока 3, используя следующие пары входов:
  • 000000 и 000001
  • 111111 и 111011
  • Проверьте четвертый критерий построения S -блока 2, используя следующие пары входа:
  • 001100 и 110000
  • 110011 и 001 111
  • Проверьте пятый критерий построения S -блока 4, используя следующие пары входов:
  • 001100 и 110000
  • 110011 и 001 111
  • Создайте 32 6 -битовые входные пары, чтобы проверить шестой критерий построения S -блока 5.
  • Покажите, как выполнены восемь критериев построения S -блока 7.
  • Докажите первый критерий построения P -блоков, проверив входы к S -блоку 2 раунда 2.
  • Докажите второй критерий построения для P -блоков, проверяя входы к S -блоку раунда 4.
  • Докажите третий критерий построения P -блоков, проверяя выход S -блока раунда 3.
  • Докажите четвертый критерий построения P -блоков, проверяя выход S -блока 6 раунда 12.
  • Докажите пятый критерий проекта для P -блоков, проверяя отношение между S -блоками 3, 4 и 5 в раундах 10 и 11.
  • Докажите шестой критерий построения P -блоков, проверяя отношение S -блока конечного пункта произвольного блока.
  • Докажите седьмой критерий проекта для P -блоков, проверяя отношения между S -блоком 5 в раунде 4 и S -блоком 7 в раунде 5.
  • Измените рисунок 8.9, используя альтернативный подход.
  • Докажите, что обратный шифр на рис. 8.9 — фактически инверсия шифра DES с тремя раундами. Стартуя с исходного текста и начального шифра, докажите, что вы можете получить тот же самый исходный текст в конце процесса применения обратного шифра.
  • Тщательно изучите ключ при перестановке сжатия таблицы 8.14.
  • Какие входные порты отсутствуют на выходе?
  • Все ли левые 24 бита выхода идут от всех левых 28 входных бит?
  • Все ли правые 24 бита выхода идут от всех 28 входных битов?
  • Покажите результат следующих шестнадцатеричных данных

    0110 10234110 1023

    после прохождения их через начальный блок перестановки.

  • Покажите результат следующих шестнадцатеричных данных

    AAAA BBBB CCCC DDDD

    после прохождения их через конечный блок перестановки.

  • Если ключ с проверочными битами ( 64 бита ) — 0123 ABCD 2562 1456, найдите ключ первого раунда.
  • Используя блок исходного текста всех нулей и ключ на 56 битов из всех нулей, докажите слабость ключевого дополнения, предполагающую, что DES состоит только из одного раунда.
  • Вы можете изобрести атаку "сведение к середине" для трехкратного DES?
  • Напишите псевдокод для переставляющей процедуры, используемой в алгоритме 8.1:
    permute (n,m, inBlock [n], outBlock [m], permutationTable [m])
  • Напишите псевдокод для процедуры разбиения, используемой в алгоритме 8.1:
    spilt(n, m, inBlock [n], leftBlock, rightBlock [m])
  • Напишите псевдокод для процедуры объединения, используемой в алгоритме 8.1:
    combine (n, m, leftBlock [n], rightBlock [n1, outBlock [m])
  • Напишите псевдокод для процедуры ИСКЛЮЧАЮЩЕЕ ИЛИ, используемой в алгоритме 8.1:
    exclusiveOr (n, firstInBlock [n], второй! nBlock [n], outBlock [n])
  • Измените алгоритм 8.1, чтобы представить альтернативный подход.
  • Дополните алгоритм 8.1, чтобы использовать его и для шифрования, и для дешифрования.
  • Страницы:

    8.1. Введение

    Стандарт шифрования данных (DES) блочный шифр с симметричными ключами, разработан Национальным Институтом Стандартов и Технологии (NIST – National Institute of Standards and Technology).

    История

    В 1973 году NIST издал запрос для разработки предложения национальной криптографической системы с симметричными ключами.

    Предложенная IBM модификация проекта, названная Lucifer, была принята как DES. DES были изданы в эскизном виде в Федеральном Регистре в марте 1975 года как Федеральный Стандарт Обработки Информации (FIPS – Federal Information Processing Standard).

    После публикации эскиз строго критиковался по двум причинам. Первая: критиковалась сомнительно маленькая длина ключа (только 56 битов), что могло сделать шифр уязвимым к атаке "грубой силой". Вторая причина: критики были обеспокоены некоторым скрытым построением внутренней структуры DES.

    Они подозревали, что некоторая часть структуры ( S -блоки) может иметь скрытую лазейку, которая позволит расшифровывать сообщения без ключа. Впоследствии проектировщики IBM сообщили, что внутренняя структура была доработана, чтобы предотвратить криптоанализ.

    DES был наконец издан как FIPS 46 в Федеральном Регистре в январе 1977 года. Однако FIPS объявил DES как стандарт для использования в неофициальных приложениях. DES был наиболее широко используемым блочным шифром с симметричными ключами, начиная с его публикации. Позже NIST предложил новый стандарт (FIPS 46-3), который рекомендует использование тройного DES (трехкратно повторенный шифр DES) для будущих приложений. Как мы увидим далее, в лекциях 9-10, предполагается, что более новый стандарт AES заменит DES.

    Общие положения

    Как показано на рис. 8.1. , DESблочный шифр.

    (рис 8.1) Шифрование и дешифрование в DES

    На стороне шифрования DES принимает 64 -битовый исходный текст и порождает 64 -битовый зашифрованный текст; на стороне дешифрования DES принимает 64 -битовый зашифрованный текст и порождает 64 -битовый исходный текст. На обеих сторонах для шифрования и дешифрования применяется один и тот же 56 -битовый ключ.

    8.2. Структура DES

    Рассмотрим сначала шифрование, а потом дешифрование. Процесс шифрования состоит из двух перестановок ( P -блоки) — они называются начальные и конечные перестановки, — и шестнадцати раундов Файстеля. Каждый раунд использует различные сгенерированные 48 -битовые ключи. Алгоритм генерации будет рассмотрен в этой лекции позднее. Рисунок 8.2 показывает элементы шифра DES на стороне шифрования.

    Начальные и конечные перестановки

    Рисунок 8.3 показывает начальные и конечные перестановки ( P -блоки). Каждая из перестановок принимает 64 -битовый вход и переставляет его элементы по заданному правилу. Мы показали только небольшое число входных портов и соответствующих выходных портов. Эти перестановки — прямые перестановки без ключей, которые инверсны друг другу. Например, в начальной перестановке 58 -й бит на входе переходит в первый бит на выходе. Аналогично, в конечной перестановке первый входной бит переходит в 58 -й бит на выходе. Другими словами, если между этими двумя перестановками не существует раунда, 58 -й бит, поступивший на вход устройства начальной перестановки, будет доставлен на 58 -й выход финальной перестановкой.

    (рис 8.3) Общая структура DES (рис 8.2) Начальные и конечные шаги перестановки DES

    Правила перестановки для этого P -блока показаны в таблице 8.1. Таблицу можно представить как 64 -элементный массив. Заметим, что работу с таблицей мы обсуждали, значение каждого элемента определяет номер входного порта, а порядковый номер (индекс) элемента определяет номер выходного порта.

    Таблица начальных и конечных перестановок
    Начальные перестановки Конечные перестановки
    58 50 42 34 26 18 10 02 40 08 48 16 56 24 64 32
    60 52 44 36 28 20 12 04 39 07 47 15 55 23 63 31
    62 54 46 38 30 22 14 06 38 06 46 14 54 22 62 30
    64 56 48 40 32 24 16 08 37 05 45 13 53 21 61 29
    57 49 41 33 25 17 09 01 36 04 44 12 52 20 60 28
    59 51 43 35 27 19 11 03 35 03 43 11 51 19 59 27
    61 53 45 37 29 21 13 05 34 02 42 10 50 18 58 26
    63 55 47 39 31 23 15 07 33 01 41 09 49 17 57 25

    Эти две перестановки не имеют никакого значения для криптографии в DES. Обе перестановки – без ключей и предопределенны. Причина, почему они включены в DES, не ясна и не была указана проектировщиками DES. Можно предположить, что DES был проектом, который предполагалось реализовать в аппаратных средствах (на чипах), и что эти две сложные перестановки должны были затруднить программное моделирование механизма шифрования.

    Пример 8.1

    Найдите выход начального блока перестановки, когда на вход поступает шестнадцатеричная последовательность, такая как

    0x0002 0000 0000 0001

    Решение

    Вход имеет только две единицы — (бит 15 и бит 64 ); выход должен также иметь только две единицы (прямая перестановка). Используя таблицу 8.1, мы можем найти выход, связанный с этими двумя битами. Бит 15 на входе становится битом 63 в выходе. Бит 64 во входе становится битом 25 в выходе. На выходе будем иметь только две единицы — бит 25 и бит 63.

    Результат в шестнадцатеричном исчислении

    0x0000 0080 0000 0002

    Пример 8.2

    Докажем, что начальные и финальные перестановки инверсны друг другу. Преобразуем полученную выходную последовательность во входную.

    0x0000 0080 0000 0002

    Решение

    Единичные биты — 25 и 63, другие биты равны нулю. В конечной перестановке 25 -й бит переходит в 64 -й, а 63 -й — в 15 -й. Результат

    0x0002000000000001
    Начальные и конечные перестановки – это прямые P -блоки, которые инверсны друг другу. Они не имеют значения для криптографии DES.

    Раунды

    DES использует 16 раундов. Каждый раунд DES применяет шифр Файстеля, как это показано на рис. 8.4.

    (рис 8.4) Раунд в DES (сторона шифрования)

    Раунд принимает LI-1 RI-1 от предыдущего раунда (или начального блока перестановки) и создает для следующего раунда LI И RI, которые поступают на следующий раунд (или конечный блок перестановки). Как мы указали в лекции 7, можно принять, что каждый раунд имеет два элемента шифра (смеситель и устройство замены). Каждый из этих элементов является обратимым. Устройство замены — очевидно обратимо, оно меняет местами левую половину текста с правой половиной. Смеситель является обратимым, потому что операция ИСКЛЮЧАЮЩЕЕ ИЛИ обратима. Все необратимые элементы сосредоточены в функции f (RI-1,KI).

    Функция DES

    Основной блок DES — функция DES. Функция DES с помощью 48 -битового ключа зашифровывает 32 самых правых бит RI-1, чтобы получить на выходе 32 -битовое слово. Эта функция содержит, как это показано на рис. 8.5, четыре секции: отбеливатель (whitener), P -блок расширения, группу S -блоков и прямой P -блок.

    P-блок расширения. Так как вход RI-1 имеет длину 32 бита, а ключ KI — длину 48 битов, мы сначала должны расширить RI-1 до 48 бит. RI-1 разделяется на 8 секций по 4 бита. Каждая секция на 4 бита расширяется до 6 бит. Эта перестановка расширения следует по заранее определенным правилам. Для секции значения входных бит 1, 2, 3 и 4 присваиваются битам 2, 3, 4 и 5 соответственно на выходе. Выходной бит 1 формируется на основе входного бита 4 из предыдущей секции; бит выхода 6 формируется из бита 1 в следующей секции. Если секции 1 и 8 рассматривать как соседние секции, то те же самые правила применяются к битам 1 и 32. Рисунок 8.6 показывает входы и выходы в перестановке расширения.

    Хотя отношения между входом и выходом могут быть определены математически, но чтобы определить этот P -блок, DES использует таблицу 8.2. Обратите внимание, что число выходов 48, но диапазон значений — только от 1 до 32. Некоторые из входов идут к больше чем одному выходу. Например, значение входного бита 5 становится значением битов выхода 6 и 8.

    (рис 8.6) Функция DES (рис 8.5) Перестановка расширения
    Таблица P-блока расширения
    32 01 02 03 04 05
    04 05 06 07 08 09
    08 09 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 31 31 32 01

    Отбеливатель (whitener). После расширения DES использует операцию XOR (ИСКЛЮЧАЮЩЕЕ ИЛИ) над расширенной частью правой секции и ключом раунда. Заметим, что правая секция и ключ имеют длину 48 бит. Также заметим, что ключ раунда использует только эту операцию.

    S-блоки. S -блоки смешивают информацию (операция перемешивания). DES использует S -блоки, каждый с 6 -ю входными битами и 4 -мя выходными (см. рис. 8.7).

    (рис 8.7) S - блоки

    Данные из 48 битов от второй операции DES разделены на восемь кусков по 6 битов, и каждый кусок поступает в блок. Результат каждого блока — кусок на 4 бита; когда они объединены, результат выражается в 32 -битовом тексте. Подстановка в каждом блоке следует по заранее определенным правилам, основанным на таблице из 4 -х строк и 16 -ти столбцов. Комбинация битов 1 и 6 на входе определяет одну из четырех строк; комбинация битов от 2 -го до 5 -го определяет один из шестнадцати столбцов, как показано на рис. 8.8. Далее мы поясним это примерами.

    (рис 8.8) Правила для S- блока

    Поскольку для каждого S -блока есть собственная таблица, необходимо иметь восемь таблиц, например таких, как это показано в таблицах 8.3-8.10. Значение входа (номер строки и номер столбца) и значения выхода даются как десятичные номера, чтобы сэкономить место на странице. В реальности они могут быть заменены двоичными числами.

    S-блок 1
    0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
    014 04 13 01 02 15 11 08 03 10 06 12 05 09 00 07
    100 15 07 04 14 02 13 10 03 06 12 11 09 05 03 08
    204 01 14 07 13 06 02 11 15 12 09 07 03 10 05 00
    315 12 08 02 04 09 01 07 05 11 03 14 10 00 06 13
    S-блок 2
    0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
    015 01 08 14 06 11 03 04 09 07 02 13 12 00 05 10
    103 13 04 07 15 02 08 14 12 00 01 10 06 09 11 05
    200 14 07 11 10 04 13 01 05 08 12 06 09 03 02 15
    313 08 10 01 03 15 04 02 11 06 07 12 00 05 14 09
    S-блок 3
    0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
    010 00 09 14 06 03 15 05 01 13 12 07 11 04 02 08
    113 07 00 09 03 04 06 10 02 08 05 14 12 11 15 01
    213 06 04 09 08 15 03 00 11 01 02 12 05 10 14 07
    301 10 13 00 06 09 08 07 04 15 14 03 11 05 02 12
    S-блок 4
    0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
    007 13 14 03 00 06 09 10 01 02 08 05 01 12 04 15
    113 08 11 05 06 15 00 03 04 07 02 12 01 10 14 09
    210 06 09 00 12 11 07 13 15 01 03 14 05 02 08 04
    303 15 00 06 10 01 13 08 09 04 05 11 12 07 02 14
    S-блок 5
    0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
    002 12 04 01 07 10 11 06 08 05 03 15 13 00 14 09
    114 11 02 12 04 07 13 01 05 00 15 10 03 09 08 06
    204 02 01 11 10 13 07 08 15 09 12 05 06 03 00 14
    311 08 12 07 01 14 02 13 06 15 00 09 10 04 05 03
    S-блок 6
    0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
    012 01 10 15 09 02 06 08 00 13 03 04 14 07 05 11
    110 15 04 02 07 12 09 05 06 01 13 14 00 11 03 08
    209 14 15 05 02 08 12 03 07 00 04 10 01 13 11 06
    304 03 02 12 09 05 15 10 11 14 01 07 10 00 08 13
    S-блок 7
    0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
    004 11 02 14 15 00 08 13 03 12 09 07 05 10 06 01
    113 00 11 07 04 09 01 10 14 03 05 12 02 15 08 06
    201 04 11 13 12 03 07 14 10 15 06 08 00 05 09 02
    306 11 13 08 01 04 10 07 09 05 00 15 14 02 03 12
    S-блок 8
    0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
    013 02 08 04 06 15 11 01 10 09 03 14 05 00 12 07
    101 15 13 08 10 03 07 04 12 05 06 11 10 14 09 02
    207 11 04 01 09 12 14 02 00 06 10 10 15 03 05 08
    302 01 14 07 04 10 05 13 15 19 09 09 03 05 06 11

    Пример 8.3

    Входная последовательность S блока 1 — $$\underline 1 0001\underline 1$$. Какая последовательность будет на выходе?

    Решение

    Если мы запишем первый и шестой биты вместе, мы получим в двоичном исчислении 11, который выражается как число 3 при десятичном исчислении. Остающаяся часть битов 0001 в двоичном исчислении является 1 в десятичном исчислении. Мы ищем значение строки 3 и столбца 1 в таблице 8.3 ( S -блок 1 ). Результат — 12 в десятичном исчислении или 1100 в двоичном исчислении. Тогда вход 1100011 дает выход 1100.

    Пример 8.4

    Входная последовательность S -блока 8 — $$\underline 0 0000\underline 0$$. Какая последовательность будет на выходе?

    Решение

    Если мы запишем первый и шестые биты вместе, то получим в двоичном исчислении число 00, которое выражается числом 0 при десятичном исчислении. Остающаяся часть битов — 0000 в двоичном исчислении, то есть 0 в десятичном исчислении. Мы ищем значение строки 0 и столбца 0 в таблице 8.10 ( S -блок 8 ). Результат — 13 в десятичном исчислении или 1101 в двоичном исчислении. Тогда вход 000000 дает выход 1101.

    Прямая перестановка — последняя операция в функции DES — прямая перестановка с 32 битами на входе и 32 битами на выходе. Отношения "вход-выход" для этой операции показаны в Таблице 8.11. Они следуют тем же самым общим правилам, как и предыдущие таблицы перестановки. Например, седьмой бит входа становится вторым битом выхода.

    Таблица прямой перестановки
    16 07 20 21 29 12 28 17
    01 15 23 26 05 18 31 10
    02 08 24 14 32 27 03 09
    19 13 30 06 22 11 04 25

    Шифр и обратный шифр

    Используя смеситель и устройство замены, мы можем создать шифр и обратный шифр для каждого из 16 -ти раундов. Шифр используется на стороне шифрования; обратный шифр — на стороне дешифрования. Алгоритмы создания шифра и обратного шифра аналогичны.

    Первый способ

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

    Мы доказали в лекции 7, что смеситель и устройство замены самоинверсны. Конечные и начальные перестановки также инверсны друг другу. Левая секция исходного текста на стороне шифрования шифруется L0 как L16, и L16 дешифруется на стороне дешифратора как L0. Аналогичная ситуация с R0 и R16.

    Нужно запомнить очень важное положение, которое касается шифров: ключи раундов ( K1 и K16 ) применяются при шифровании и дешифровании в обратном порядке. На стороне шифрования первый раунд применяет ключ K1, а раунд 16 — ключ K16 ; при дешифровании раунд 1 использует ключ K16, а раунд 16 — ключ K1.

    В первом методе последний раунд не имеет устройства замены. (рис 8.9) DES шифр и обратный шифр для первого способа

    Алгоритм

    Алгоритм 8.1. приведен в псевдокодах для шифрования и соответствует четырем шагам первого метода. Коды для остальных могут быть сделаны как упражнение.

    Cipher (plainBlock[64], Round Keys[16,48])
    {
       pemute (64,64, plainBlock, inBlock, IntialPermutationTable)
       spilt (64, 32, inBlock, leftBlock, right Block)
       for (round = 1 to 16)
       {
          mixer (leftBlock, right Block, RoundKey[round])
          if (round!=16) swapper(leftBlock, right Block)
       }
       combine (32, 64, leftBlock, right Block, outBlock)
       pemute (64,64, outBlock, cipherBlock, FinalPermutationTable)
    
    mixer (leftBlock[48], right Block[48], RoundKey[48])
    {
       copy (32, rightBlock, T1)
       function (T1, RoundKey,T2)
       exclusive Or (32, leftBlock, T2,T3)
       copy (32, rightBlock, T1)
    }
    
    swapper (leftBlock[32], right Block[32])
    {
       copy (32, leftBlock, T)
       copy (32, rightBlock, leftBlock)
       copy (32, T, rightBlock)
    }
    
    Substitute (in block[32], outblock[48], SubstituteTables[8,4,16])
    {
       for(I = 1 to 8)
       {
          row <- 2 x inBlock[i x 6+1] + inBlock[i x 6+6]
          col <- 8 x inBlock[i x 6+2] + 4 x inBlock[i x 6+3]+2 x inBlock[i x 6+4] + inBlock[i x 6+5]
    
          value = SubstituteTables[i][row][col]
    
          outBlock[i x 4+1] <- value/ 8         value <- value mod 8
          outBlock[i x 4+2] <- value/ 4         value <- value mod 4
          outBlock[i x 4+3] <- value/ 2         value <- value mod 8
          outBlock[i x 4+4] <- value
       }
    }
    }

    Альтернативный способ

    При первом способе раунд 16 отличается от других раундов тем, что там не применяется устройство замены. Это необходимо, чтобы сделать последний и первый смесители в шифре одинаковыми. Мы можем делать все 16 раундов одинаковыми, добавляя к 16 -му раунду дополнительное устройство замены (два устройства замены позволяют нейтрализовать друг друга). Разработку этой схемы мы оставляем для упражнений.

    Генерация ключей

    Генератор ключей создает шестнадцать ключей по 48 битов из ключа шифра на 56 битов. Однако ключ шифра обычно дается как ключ из 64 -х битов, в котором 8 дополнительных битов являются битами проверки. Они отбрасываются перед фактическим процессом генерации ключей, который показан на рис. 8. 10.

    Удаление битов проверки

    Предварительный процесс перед расширением ключей — перестановка сжатия, которую мы называем удалением битов проверки. Он удаляет биты четности (биты 8, 16, 24, 32..., 64 ) из 64 -битового ключа и переставляет остальную часть битов согласно таблице 8.12. Остающееся значение на 56 битов — фактический ключ шифра, который используется, чтобы генерировать ключи раунда. Биты удаляются с помощью перестановки ( P -блока сжатия), как это показано в таблице 8.12.

    Таблица удаления проверочных битов
    57 49 41 33 25 17 09 01
    58 50 42 34 26 18 10 02
    59 51 43 35 27 19 11 03
    60 52 44 36 63 55 47 39
    31 23 15 07 62 54 46 37
    30 22 14 06 61 53 45 37
    29 21 13 05 28 20 12 04
    (рис 8.10) Генерация ключей

    Сдвиг влево

    После прямой перестановки ключ разделен на две части по 28 битов. Каждая часть сдвигается влево (циклический сдвиг) на один или два бита. В раундах 1, 2, 9 и 16 смещение – на один бит, в других раундах — на два бита. Затем эти две части объединяются, чтобы создать часть в 56 бит. Таблица 8.13 показывает число сдвигов манипуляций для каждого раунда.

    Число сдвигаемых бит
    Раунд 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
    Число бит 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 1

    Перестановка сжатия

    Перестановка сжатия ( P -блок) изменяет 56 битов на 48 битов, которые используются для формирования ключа раунда. Перестановка сжатия показана в таблице 8.14.

    Таблица сжатия ключа
    14 17 11 24 01 05 03 28
    15 06 21 10 23 19 12 04
    26 08 16 07 27 20 13 02
    41 52 31 37 47 55 30 40
    51 45 33 48 44 49 39 56
    34 53 46 42 50 36 29 32

    Алгоритм

    Теперь напишем простой алгоритм для создания ключа из ключа с проверочными битами. Алгоритм 8.2 использует несколько процедур алгоритма 8.1. Имеется и одна новая процедура — левый сдвиг ( ShiftLeft ). Обратите внимание, что T — временный блок.

    Key_Generator (keyWithParities[64], RoundKeys[16. 48]. SinfTable[16])
     {                                                      '                  
     permute (64, 56, keyWithParities, cipherKey, ParityDropTable)
    spilt (56, 28, cipherKey, leftKey, rightKey) 
    for (round = 1 to 16) 
       {                                                                      
       shiftLeft (leftKey, ShiftTable[round1])                                    I
       shiftLeft (rightKey, ShiftTable [round])
       combine (28, 56, leftKey, rightKey, preRoundKey)
       permute (56, 48, preRoundKey, RoundKeys[round], KevCompressionTable)
       }
    }
    
    shiftLeft (block[28], NumOfShifts)
    {
       for (i = 1 to numShifts)
       {
          T <- block[ 1]
          for (j = 2 to 28)
          {
              block [j-1] <- block [j]
          }
          block[28] <- T
       }
    }

    Примеры

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

    Пример 8.5

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

    Plaintext: 123456ABCD 132536	Key: AABB09182736CCDD
    Cipher Text: COB7ASD05F3AS29C

    Покажем результат каждого раунда и текста, созданного до и после раундов. Таблица 8.15 показывает результаты первых шагов перед началом раунда. Исходный текст — прошедший через начальную перестановку для получения различных 64 бит ( 16 шестнадцатеричных цифр).

    Трассировка данных в примере 8.5
    Исходный текст: 123456ABCD 132536
    После первоначальной перестановки: 14A7D67818CA18D После разбиения: L0= 14A7D678 R0 = 18CA18D
    Раунд Левая Правая Ключ раунда
    Раунд 1 18CA18AD 5A78E394 194CD072DE8C
    Раунд 2 5A78E394 4A1210F6 4568581ABCCE
    Раунд 3 4A1210F6 B8089591 06EDA4ACF5B5
    Раунд 4 B8089591 236779C2 DA2D032B6EE3
    Раунд 5 236779C2 A15A4B87 69A629FEC913
    Раунд 6 A15A4B87 2E8F9C65 C1948E87475E
    Раунд 7 2E8F9C65 A9FC20A3 708AD2DDB3C0
    Раунд 8 A9FC20A3 308BEE97 34F822F0C66D
    Раунд 9 308BEE97 10AF9D37 84BB4473DCCC
    Раунд 10 10AF9D37 6CA6CB20 02765708B5BF
    Раунд 11 6CA6CB20 FF3C485F 6D5560AF7CA5
    Раунд 12 FF3C485F 22A5963B C2C1E96A4BF3
    Раунд 13 22A5963B 387CCDAA 99C31397C91F
    Раунд 14 387CCDAA BD2DD2AB 251B8BC717D0
    Раунд 15 BD2DD2AB CF26B472 3330C5D9A36D
    Раунд 16 19BA9212 CF26B472 181C5D75C66D
    После объединения: 19BA9212 CF26B472
    Зашифрованный текст: C0B7A8D05F3A829C (после конечной перестановки)

    Таблица показывает результат 16 раундов, которые включают смешивание и замену (исключая последний раунд). Результаты последних раундов ( L16 и R16 ) объединены. Наконец, текст проходит конечную перестановку, для того чтобы получить зашифрованный текст.

    Следует отметить некоторые положения. Правая секция каждого раунда совпадает с левой секцией следующего раунда. Причина в том, что правая секция проходит через смеситель без изменения, а устройство замены переносит ее в левую секцию. Например, R1 передается через смеситель второго раунда без изменения, но затем, пройдя устройство замены, он становится L2. Второе интересное положение: на последнем раунде мы не имеем устройства замены. Именно поэтому R15 становится R16 вместо того чтобы стать L16.

    Пример 8.6

    Давайте рассмотрим, как Боб в пункте назначения может расшифровать зашифрованный текст, полученный от Алисы, с помощью совпадающего ключа. Для экономии времени мы разберем только несколько раундов. Таблица 8.16 показывает интересующие нас точки. Первое правило: ключи раунда должны использоваться в обратном порядке. Сравните таблицу 8.15 и таблицу 8.16. Ключ раунда 1 — такой же как ключ для раунда 16. Значения L0 и R0 при дешифрации те же самые, что и значения L16 и R16 при шифровании. Аналогичные совпадения будут получены и в других раундах. Это доказывает не только, что шифр и обратный шифр инверсны друг другу, но также то, что каждый раунд при шифрации имеет соответствующий раунд при дешифрации в обратном шифре. Результат свидетельствует, что начальные и конечные перестановки также являются инверсиями друг друга.

    Трассировка данных в примере 8.6
    Зашифрованный текст: C0B7A8D05F3A829C
    После первоначальной перестановки: 19BA9212 CF26B472 После разбиения: L0= 19BA9212 R0 = CF26B472
    Раунд Левая Правая Ключ раунда
    Раунд 1 CF26B472 BD2DD2AB 181C5D75C66D
    Раунд 2 BD2DD2AB 387CCDAA 3330C5D9A36D
    ......... ......... ......... .........
    Раунд 15 5A78E394 18CA182AD 4568581ABCCE
    Раунд 16 19BA9212 18CA18AD 194CD072DE8C
    После объединения: 14A7D67818CA18D
    Исходный текст: 123456ABCD 132536 (после конечной перестановки)

    8.3. Анализ DES

    DES был подвергнут тщательному анализу. Были проведены испытания, чтобы измерить интенсивность некоторых желательных свойств в блочном шифре. Элементы DES прошли исследования на соответствие некоторым критериям. Ниже мы обсудим некоторые из них.

    Свойства

    Два желательных свойства блочного шифра — эффект лавины и законченность.

    Лавинный эффект

    Лавинный эффект означает, что небольшие изменения в исходном тексте (или ключе) могут вызвать значительные изменения в зашифрованном тексте. Было доказано, что DES имеет все признаки этого свойства.

    Пример 8.7

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

    Исходный текст: 0000000000000000              Ключ: 22234512987ABB23
    Зашифрованный текст: 4789FD476E82A5F1
    
    Исходный текст: 0000000000000001              Ключ: 22234512987ABB23
    Зашифрованный текст: OA4ED5C15A63FEA3

    Хотя два блока исходного текста отличаются только самым правым битом, блоки зашифрованного текста отличаются на 29 бит. Это означает, что изменение приблизительно в 1,5 процентах исходного текста создают изменение приблизительно 45 процентов зашифрованного текста. Таблица 8.17 показывает изменение в каждом раунде. Можно увидеть, что существенные изменения возникают уже в третьем раунде.

    Число различных бит в примере 8.7
    Раунд 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
    Разница в битах 1 6 20 29 30 33 32 29 32 39 33 28 30 31 30 29

    Эффект полноты

    Эффект полноты заключается в том, что каждый бит зашифрованного текста должен зависеть от многих битов исходного текста. Рассеивание и перемешивание, произведенное P -блоками и S -блоками в DES, указывает на очень сильный эффект полноты.

    Критерии разработок DES

    Проект DES был предъявлен IBM в 1994 году. Многочисленные испытания DES показали, что он удовлетворяет некоторым из заявленных критериев. Ниже кратко обсуждаются некоторые проблемы разработок DES.

    S-блоки

    Мы обсудили общие критерии построения S -блоков в лекции 7. Здесь мы только обсуждаем критерии, выбранные для DES. Структура блоков обеспечивает перемешивание и рассеивание от каждого раунда до следующего. Согласно этому положению и некоторому анализу, мы можем упомянуть несколько свойств S -блоков.

  • Входы каждой строки есть перестановки значений между 0 и 15.
  • S -блоки — нелинейные. Другими словами, выход — не аффинное преобразование. (См. лекции 4 (аффинное преобразование) и 5, где рассматривалась линейность и S -блоков.)
  • Если мы изменяем единственный бит на входе, на выходе будут изменены два или больше бита.
  • Если два входа S -блока отличаются только двумя средними битами (битами 3 и 4 ), выходная информация должна отличаться по крайней мере двумя битами. Другими словами, S (x) и $$S(x \oplus 001100)$$ должны отличаться по крайней мере двумя битами, где x — вход и S(x) — выход.
  • Если два входа в S -блок отличаются первыми двумя битами (биты 1 и 2 ) и последними двумя битами ( 5 и 6 ), два выхода должны быть различны. Другими словами, мы должны иметь следующее отношение: $$S\left( x \right) \ne S(x \oplus 11bc00) $$, в котором b и с — произвольные биты.
  • Есть только 32 шестибитовые пары "вход-выход" ( xi и xj ), в которых $${x_i} \oplus {x_j} \ne {\left( {000000} \right)_2}$$. Эти 32 входных пары создают 32 пары слова выхода по 4 бита. Если мы создаем какие-то различия между 32 выходами пар, $$d = {y_i} \oplus {y_j}$$, то из этих d должны быть одинаковыми не больше чем 8.
  • Такой же критерий, как в пункте 6, применяется к трем S -блокам.
  • В любом S -блоке, если единственный входной бит сохраняется как константа ( 0 или 1 ), то другие биты изменяются случайно так, чтобы разности между числом нулей и единиц были минимизированы.
  • P-блоки

    Между двумя рядами S -блоков (в двух последующих раундах), есть один прямой P -блок ( 32 на 32 ) и один P -блок расширения ( 32 на 48 ). Эти два P -блока вместе обеспечивают рассеивание битов. Мы уже говорили об общем принципе построения P -блока в лекции 7. Здесь мы обсудим только прикладные P -блоки, используемые в DES. В структуре P -блоков были реализованы следующие критерии:

  • Каждый вход S -блока подключается к выходу другого S -блока (в предыдущем раунде).
  • Ни один вход к данному S -блоку не соединяется с выходом от того же самого блока (в предыдущем раунде).
  • Четыре бита от каждого S -блока идут в шесть различных S -блоков (в следующем раунде).
  • Ни один из двух битов выхода от S -блока не идет в тот же самый S -блок (в следующем раунде).
  • Если число блоков S -блоков 8, то S1, S2,..., S 8.
  • Выход Sj-2 переходит в один из первых двух битов Sj (в следующем раунде).
  • Бит выхода от Si-1 переходит в один из последних двух битов Sj (в следующем раунде).
  • Выход Sj +1 переходит в один из двух средних битов Sj (в следующем раунде).
  • Для каждого S -блока два бита выхода идут в первые или последние два бита S -блока в следующем раунде. Другие два бита выхода идут в средние биты S -блока в следующем раунде.
  • Если выход от Sj переходит в один из средних битов в Sk (в следующем раунде), то бит выхода от Sk не может идти в средний бит Sj. Если мы допускаем j = k, то подразумеваем, что ни один средний бит S -блока не может идти в один из средних битов того же самого S -блока в следующем раунде.
  • Число раундов

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

    Слабости DES

    В течение прошлых нескольких лет критики нашли некоторые слабости в DES.

    Мы кратко укажем на некоторые слабости, которые были обнаружены в структуре шифра.

    S-блоки. В литературе указываются по крайней мере три проблемы S -блоков.

  • В S -блоке 4 три бита выхода могут быть получены тем же самым способом, что и первый бит выхода: дополнением некоторых из входных битов.
  • Два специально выбранных входа к массиву S -блока могут создать тот же самый выход.
  • Можно получить тот же самый выход в одном единственном раунде, изменяя биты только в трех соседних S -блоках.
  • P-блоки. В структуре P -блока были найдены одна загадка и одна слабость.

  • Не ясно, почему проектировщики DES использовали начальную и конечную перестановки. Эти перестановки не вносят никаких новых свойств с точки зрения безопасности.
  • В перестановке расширения (в функции) первые и четвертые биты последовательностей на 4 бита повторяются.
  • Слабость в ключе шифра

    Размер ключа. Критики утверждают, что самая серьезная слабость DES — это размер ключа ( 56 битов). Чтобы предпринять атаку грубой силы данного блока зашифрованного текста, злоумышленники должны проверить 256 ключей.

    a. Используя доступную сегодня технологию, можно проверить один миллион ключей в секунду. Это означает, что потребуется более чем две тысячи лет, чтобы выполнить атаку грубой силы на DES, используя компьютер только с одним процессором.

    b. Если мы можем сделать компьютер с одним миллионом чипов процессоров (параллельная обработка), то сможем проверить все множество ключей приблизительно за 20 часов. Когда был введен DES, стоимость такого компьютера была более чем несколько миллионов долларов, но она быстро снизилась. Специальный компьютер был создан в 1998 году — и нашел ключ за 112 часов.

    c. Компьютерные сети могут моделировать параллельную обработку. В 1977 году команда исследователей использовала 3500 компьютеров, подключенных к Internet, чтобы найти ключ RSA за 120 дней. Множество ключей было разделено среди всех этих компьютеров, и каждый компьютер был ответственен за проверку части домена DES. Если 3500 связанных в сеть компьютеров могут найти ключ через 120 дней, то секретное общество из 42 000 членов может найти ключ через 10 дней.

    Приведенное выше показывает, что DES с размером ключа шифра 56 битов не обеспечивает достаточной безопасности. Позже в этой лекции мы увидим, что есть одно решение этой проблемы – это использование тройного DES(3DES) с двумя ключами ( 112 битов) или тройного DES с тремя ключами (биты 16 ).

    Слабые ключи. Четыре ключа из 256 возможных ключей называются слабыми ключами. Слабые ключи — это одни из тех, которые после операции удаления проверочных бит (используя таблицу 8.12) состоят из всех нулей или всех единиц или половины нулей и половины единиц. Такие ключи показаны в таблице 8.18.

    Слабые ключи
    Ключи до удаления проверочных бит (64 бита) Действующие ключи (56 бит)
    0101 0101 0101 0101 0000000 0000000
    1F1F 1F1F 1F1F 1F1F 0000000 FFFFFFF
    E0E0 E0E0 E0E0 E0E0 FFFFFFF 0000000
    FEFE FEFE FEFE FEFE FFFFFFF FFFFFFF

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

    Это происходит по той причине, что алгоритм генерирования ключей сначала делит ключ шифра на две половины. Смещение или перестановка блока не изменяют блок, если он состоит из всех нулей, или всех единиц, или наполовину из нулей и единиц.

    В чем опасность использования слабых ключей? Если мы зашифровали блок слабым ключом и впоследствии расшифровали результат тем же самым слабым ключом, мы получаем первоначальный блок. Процесс создает один и тот же первоначальный блок, если мы расшифровываем блок дважды. Другими словами, каждый слабый ключ есть инверсия самого себя: Ek. (Ek (P)) = P, как это показано на рис. 8.11.

    (рис 8.11) Двойное шифрование и дешифрование со слабым ключом

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

    Пример 8.8

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

    Ключ: 0x0101 0101 0101 0101	
    Зашифрованный текст: 0x814FE938589154F7
    Исходный текст: 0xl234.56887654321	
    	
    Ключ: 0x0101 0101 0101 0101	
    Исходный текст: 0x814FE938589154F7	
    Зашифрованный текст: 0xl234.56887654321

    Полуслабые ключи. Имеются шесть ключевых пар, которые названы полуслабыми ключами. Этим шесть пар показаны в таблице 8.19 (формат на 64 бита перед удалением проверочных бит). Полуслабые ключи создают только два различных ключа раунда и затем повторяют их восемь раз. Кроме того, ключи раунда, созданные от каждой пары, — одни и те же в различном порядке.

    Полуслабые ключи
    Первый ключ в паре Второй ключ в паре
    01FE 01FE 01FE 01FE FE01 FE01 FE01 FE01
    1FEO 1FEO OEF1 OEF1 E01F E01F F10E F10E
    01EO 01E1 01F1 01F1 E001 E001 F101 F101
    1FFE 1FFE OEFE OEFE FE1F FE1F FEOE FEOE
    011F 011F 010E 010E 1F01 1F01 OE01 OE01
    EOFE EOFE FIFE FIFE FEEO FEEO FEF1 FEFl

    Чтобы проиллюстрировать идею, мы создали ключи раунда от первой пары, как показано ниже:

    Ключ раунда 1	9153E54319BD 	6EAC1ABCE642
    Ключ раунда 2	6EAC1ABCE642	9153E54319BD
    Ключ раунда 3	6EAC1ABCE642	9153E54319BD
    Ключ раунда 4	6EAC1ABCE642	9153E54319BD
    Ключ раунда 5	6EAC1ABCE642	9153E54319BD
    Ключ раунда 6	6EAC1ABCE642	9153E54319BD
    Ключ раунда 7	6EAC1ABCE642	9153E54319BD
    Ключ раунда 8	6EAC1ABCE642	9153E54319BD
    Ключ раунда 9	9153E54319BD	6EAC1ABCE642
    Ключ раунда 10	9153E54319BD	6EAC1ABCE642
    Ключ раунда 11	9153E54319BD	6EAC1ABCE642
    Ключ раунда 12	9153E54319BD	6EAC1ABCE642
    Ключ раунда 13 	9153E54319BD	6EAC1ABCE642
    Ключ раунда 14	9153E54319BD	6EAC1ABCE642
    Ключ раунда 15	9153E54319BD	6EAC1ABCE642
    Ключ раунда 16	6EAC1ABCE642	9153E54319BD

    Как показывает список, имеется восемь одинаковых ключей раунда в каждом полуслабом ключе. Кроме того, ключи раунда 1 в первом множестве — те же самые, что и ключи раунда 16 во втором; ключи раунда 2 в первом — те же самые, что и ключи раунда 15 во втором, и так далее. Это означает, что ключи инверсны друг другу: Ek2. (Ek1E (P)) = P, как показано на рис. 8.12.

    (рис 8.12) Пара полуслабых ключей при шифровании и дешифровании

    Возможно слабые ключи. Также имеется 48 ключей, которые называются возможно слабыми ключами. Возможно слабый ключ создает только четыре различных ключа раунда; другими словами, шестнадцать ключей раундов разделены на четыре группы, и каждая группа состоит из четырех одинаковых ключей раунда.

    Пример 8.9

    Какова вероятность случайного выбора слабого, полуслабого или возможно слабого ключа?

    Решение

    Множество ключей DES равно 256. Общее количество вышеупомянутых ключей — 64 (4 + 12 + 48). Вероятность выбора одного из этих ключей равна $$8,8 \times {10^{ - 16}}$$, т.е. исключительно мала.

    Ключевое дополнение. Среди множества ключей (256) некоторые ключи могут быть получены инверсией (изменение из 0 в 1 или 1 в 0 ) каждого бита в ключе. Ключевое дополнение упрощает процесс криптоанализа. Ева может использовать только половину возможных ключей ( 255 ), чтобы выполнить атаку грубой силы, потому что

    C=E(K,P) ->  C=E(K,P)

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

    Пример 8.10

    Давайте проверим эти сведения о ключах дополнения. Мы используем произвольный ключ и исходный текст, для того чтобы найти соответствующий зашифрованный текст. Если мы имеем ключевое дополнение и исходный текст, то получим i дополнение предыдущего зашифрованного текста (таблица 8.20).

    Результаты примера 8.10
    Оригинал Дополнение
    Ключ 1234123412341234 EDCBEDCBEDCBEDCB
    Исходный текст 12345678ABCDEF12 EDCBA987543210ED
    Зашифрованный текст E112BE1DEFC7A367 1EED41E210385C98

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

    8.4. Многократное применение DES

    Как мы уже видели, основная критика DES направлена на длину ключа. Возможные технологии и возможности параллельных процессоров делают реальной атаку грубой силы. Одно из решений для улучшения безопасности — это отказ от DES и разработка нового шифра. Это решение мы рассмотрим в лекциях 9-10 при применении AES. Второе решение — многократное (каскадное) применение множества ключей. Это решение, которое использовалось некоторое время, не требует инвестиций в новое программное обеспечение и аппаратные средства. Ниже рассмотрен такой подход.

    Как мы узнали в лекции 7, подстановка, которая размещает все возможные входы во все возможные выходы, является группой с отображениями элементов множества и набором операций. В этом случае использование двух последовательных отображений бесполезно, потому что мы можем всегда найти третье отображение, которое эквивалентно композиции этих двух (свойство замкнутости). Это означает, что если DES — группа, то однократный DES с ключом k3 делает то же самое (рисунок 8.13).

    (рис 8.13) Композиция отображений

    К счастью DES — не группа. Она базируется на следующих двух параметрах:

    а. Номер возможных входов или выходов в DESN = 264. Это означает, что N!= (264)! = 10347 380 000 000 000 000 000 отображений. Один из способов способ сделать DES группой — это поддержать все эти отображения с размером ключа log2 (264!) — 270 битов. Но мы знаем, что длина ключа в DES56 бит (только маленькая часть этого требуемого огромного ключа).

    б. Другой способ сделать DES группой – сделать, чтобы множество отображений было подмножеством множества в смысле зависимости от первого параметра; но было доказано, что группы, созданные из группы с помощью первого параметра, имеют ключевой размер 56 битов.

    Если DES не является группой, то очень маловероятно, что мы можем найти ключ k3, такой, что

    Ek2(Ek1(P)) = Ek3(P)

    Это означает, что мы можем использовать двукратные или трехкратные DES, чтобы увеличить размер ключа.

    Двукратный DES

    Первый подход состоит в том, чтобы использовать двукратный DES (2DES). При этом подходе мы применяем два типа шифров DES для шифрования и два типа обратных шифров для дешифрования. Каждый тип использует различный ключ, что означает, что размер ключа теперь удвоился ( 112 битов). Однако двукратный DES уязвим к атаке знания открытого текста, как это обсуждается в следующем разделе.

    На первый взгляд двукратные DES увеличивают число испытаний при поиске ключа от 256 (в однократном DES) к 2112 (в двукратном DES). Однако при использовании атаки знания исходного текста, называемой атакой сведения к середине, можно доказать, что двукратный DES улучшает эту устойчивость (до 257 по испытаниям), но не чрезвычайно (к 2112 ). Рисунок 8.14 показывает диаграмму для двукратного DES. Алиса использует два ключа, k1 и k2, чтобы зашифровывать исходный текст P в зашифрованный текст C ; Боб использует зашифрованный текст C и два ключа, k2 и k1, для восстановления P.

    (рис 8.14) Атака сведения к середине в двукратном DES

    В средней точке М — текст, созданный первым шифрованием или первым дешифрованием. Для обеспечения правильной работы он должен быть одинаковым для шифрования и дешифрования. Другими словами, мы имеем два отношения:

    M = EK1(P) и M = EK2(C)

    Предположим, что Ева перехватила предыдущую пару P и C (атака знания исходного текста). Базируясь на первом отношении из упомянутых выше, Ева зашифровывает P, используя все возможные значения (256) k1, и записывает все значения, полученные для М. Базируясь на вторых отношениях, упомянутых выше, Ева расшифровывает C, используя все возможные значения ( 256 ) k2. Она записывает все значения, полученные для М. Далее Ева создает две таблицы, отсортированные согласно значениям M. Она сравнивает значения для М, пока не находит те пары k1 и k2, для которых значение М является одним и тем же в обеих таблицах (как показано на рис. 8.15). Обратите внимание, что должна быть по крайней мере одна пара, потому что она делает исчерпывающий поиск комбинации двух ключей.

    1. Если есть только одно соответствие. Ева нашла два ключа ( k1 и k2 ). Если есть больше чем один кандидат, Ева перемещается в следующий шаг.

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

    (рис 8.15) Таблицы для атаки "сведения к середине"

    Было доказано, что после применения второго шага к нескольким перехваченным парам "зашифрованный текст — исходный текст" ключи были найдены. Это означает, что вместо того чтобы использовать поиск ключей с помощью 2112 испытаний, Ева использует 256 испытаний поиска ключа и проверяет два раза (несколько больше испытаний требуется, если найден на первом шаге единственный кандидат). Другими словами, двигаясь от однократного DES до двукратного DES, мы увеличили объем испытаний от 256 до 257 (а не до 2112, как это кажется при поверхностном подходе).

    Трехкратный DES

    Для того чтобы улучшить безопасность DES, был предложен трехкратный DES (3DES). Он использует три каскада DES для шифрования и дешифрования. Сегодня используются две версии трехкратных DES: трехкратный DES с двумя ключами и трехкратный DES с тремя ключами.

    Трехкратный DES с двумя ключами

    В трехкратном DES с двумя ключами есть только два ключа: k1 и k2. Первый и третий каскады используют k1 ; второй каскад использует k2. Чтобы сделать трехкратный DES совместимым с DES, средний каскад применяет дешифрование (обратный шифр) на стороне шифрования и шифрование (шифр) на стороне дешифрования. Таким способом сообщение, зашифрованное DES-ключом k, может быть расшифровано трехкратным DES, если k1 = k2 = k. Хотя трехкратный DES с двумя ключами также уязвим при атаке "знания исходного текста", он гораздо устойчивее, чем двукратный DES. Он был принят для банков. Рисунок 8.16 показывает трехкратный DES с двумя ключами.

    Трехкратный DES с тремя ключами

    Возможность атак "знания исходного текста" при трехкратном DES с двумя ключами "соблазнила" некоторые приложения использовать трехкратный DES с тремя ключами. Алгоритм может применять три каскада шифра DES на стороне шифрования и три каскада обратных шифров на стороне дешифрования. Для совместимости с однократным DES сторона шифрования использует EDE, а сторона дешифрования — DED. E (encryption) — каскад шифрования, D (decryption) — каскад дешифрования. Совместимость с однократным DES обеспечивается при k1 = k и установкой k2 и k3 к одному и тому же произвольному ключу, выбранному приемником. Трехкратный DES с тремя ключами используется многими приложениями, такими как PGP (Pretty Good Privacy), поскольку гарантирует очень хорошую конфиденциальность.

    (рис 8.16) Трехкратный DES с двумя ключами

    8.5. Безопасность DES

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

    Атака грубой силы

    Мы уже обсуждали слабость шифра с коротким ключом. Слабость ключа совместно с другими рассмотренными недостатками, делает очевидным, что DES может быть взломан с числом испытаний 255. Однако сегодня большинство приложений использует либо 3DES с двумя ключами (размер ключа 2112 ), либо 3DES с тремя ключами (размер ключа 2168 ). Эти две многократных версии DES позволяют ему показывать существенную стойкость к атакам грубой силы.

    Дифференциальный криптоанализ

    Мы в лекции 7 уже обсуждали методику дифференциального криптоанализа для современных блочных шифров. DES не является устойчивым к такому виду атаки. Однако многое указывает, что разработчики DES уже знали об этом типе атаки и проектировали S -блоки и специально выбрали число раундов, чтобы сделать DES стойким к этому типу атаки. Сегодня показано, что DES может быть взломан, используя дифференциальный криптоанализ, если мы имеем 247 выборок исходного текста или 255 известных исходных текстов. Хотя это выглядит более эффективно, чем в атаке грубой силы, предположить, что кто-то знает 247 выборок исходного текста или 255 выборок исходного текста, практически невозможно. Поэтому мы можем сказать, что DES является стойким к дифференциальному криптоанализу. Также показано, что увеличение числа раундов до 20 увеличивает число требуемых выборок исходного текста для атаки более чем до 264. Такое увеличение невозможно, потому что число блоков исходного текста в DES только 264.

    Линейный криптоанализ

    Мы обсуждали методику линейного криптоанализа для современных блочных шифров в лекции 7. Линейный криптоанализ — более новая методика, чем дифференциальный криптоанализ. DES более уязвим к применению линейного криптоанализа, чем к дифференциальному криптоанализу — вероятно потому, что этот тип атак не был известен проектировщикам DES и S -блоки не являются очень стойкими к линейному криптоанализу. Показано, что DES может быть взломан с использованием 243 пары известных исходных текстов. Однако с практической точки зрения перехват такого количества пар очень маловероятен.

    8.6. Рекомендованная литература

    Нижеследующие книги и сайты обеспечивают более детальную информацию о предметах, которые мы обсуждали в этой лекции.

    Книги

    [Sta06], [Sti06], [Rhe03], [Sal03], [Mao04] и [TW06] — это книги, которые рассматривают DES.

    Сайты

    Нижеследующие сайты содержат боле подробную информацию о темах, обсужденных в этой лекции,

  • http://www.itl.nist.gov/fipspubs/np46-2.htm
  • www.nist.gov/director/prog-ofc/report01-2.pdf
  • www.engr.mun.ca/-how ard/PAPERS/ldc_tutorial.ps
  • islab.oregonstate.edu/koc/ece575/notes/dc 1.pdf
  • homes.esat.kuleuven.be / ~ abiryuko/Cryptan/matsui_des
  • 8.7. Итоги

  • Стандарт шифрования данных (DES) — блочный шифр с симметричными ключами, изданный национальным Институтом Стандартов и Технологии (NIST) как FIPS 46 в Федеральном Регистре.
  • На стороне шифрования DES принимает исходный текст на 64 бита и создает зашифрованный текст на 64 бита. На стороне дешифрования DES принимает зашифрованный текст на 64 бита и создает блок на 64 бита исходного текста. Ключ шифра на 56 битов одного типа используется и для шифрования, и для дешифрования.
  • Процесс шифрования состоит из двух перестановок ( P -блоки), которые называются начальными и конечными перестановками, и шестнадцати раундов Файстеля. Каждый раунд DES — шифр Файстеля с двумя элементами (смеситель и устройство замены). Каждый из этих элементов является обратимым.
  • Основой DES является функция DES. Функция DES применяет ключ на 48 битов к самым правым 32 битам, чтобы получить на выходе 32 бита. Эта функция составлена из четырех операций: перестановки расширения, отбеливателя (который добавляет ключ), группы S -блоков и прямой перестановки.
  • Генератор ключей раунда создает из ключа шифра на 56 битов шестнадцать ключей по 48 битов. Однако ключ шифра обычно представляется как ключ на 64 бита, в котором 8 дополнительных битов являются проверочными битами — они отбрасываются перед фактическим процессом генерирования ключей.
  • DES показывает хорошие рабочие характеристики по отношению к эффектам полноты (законченности) и лавины. К числу слабостей DES относятся: построение шифра ( S -блоки и P -блоки) и ключ шифра (длина), слабые ключи, полуслабые ключи, возможно слабые ключи и дополнение ключей.
  • Так как DES — не группа, одно из решений по улучшению безопасности DES состоит в том, чтобы пользоваться многократными DES, которые используют кратное число применения ключей (двукратный или трехкратный DES). Двукратный DES уязвим к атаке сведения к середине, поэтому в обычных приложениях используется трехкратный DES с двумя ключами или с тремя ключами.
  • Разработка S -блоков и число раундов сделали DES почти обладающим иммунитетом от дифференциального криптоанализа. Однако DES уязвим при применении линейного криптоанализа, если злоумышленники смогут собрать достаточно много исходных текстов.
  • 8.8. Набор для практики

    Обзорные вопросы

  • Каков размер блока в DES? Каков размер ключа шифра в DES? Каков размер ключей раунда в DES?
  • Каково число раундов в DES?
  • Сколько смесителей и устройств замены используется в первом способе шифрования и обратного дешифрования? Сколько их используется при втором способе?
  • Сколько перестановок используется в алгоритме шифра DES?
  • Сколько операций ИСКЛЮЧАЮЩЕЕ ИЛИ используется в DES-шифре?
  • Почему DES-функции необходима расширяющая перестановка?
  • Почему генератор ключей раунда нуждается в удалении проверочных бит?
  • Какова разность между слабым ключом, полуслабым ключом и возможно слабым ключом?
  • Что такое двукратный DES? Какая атака двукратного DES сделала его бесполезным?
  • Что такое трехкратный DES? Что такое трехкратный DES с двумя ключами? Что такое трехкратный DES с тремя ключами?
  • Упражнения

  • Ответьте на следующие вопросы об S -блоках в DES:
  • покажите результат прохождения 110111 через S -блок 3.
  • покажите результат прохождения 001100 через S -блок 4.
  • покажите результат прохождения 000000 через S -блок 7.
  • покажите результат прохождения 111111 через S -блок 2.
  • Нарисуйте таблицу, которая показывает результат прохождения 000000 через все 8 S -блоков. Рассмотрите результат на выходе.
  • Нарисуйте таблицу, которая показывает результат прохождения 111111 через все 8 S -блоков. Рассмотрите результат на выходе.
  • Проверьте третий критерий для S -блока 3, используя следующие пары входов:
  • 000000 и 000001
  • 111111 и 111011
  • Проверьте четвертый критерий построения S -блока 2, используя следующие пары входа:
  • 001100 и 110000
  • 110011 и 001 111
  • Проверьте пятый критерий построения S -блока 4, используя следующие пары входов:
  • 001100 и 110000
  • 110011 и 001 111
  • Создайте 32 6 -битовые входные пары, чтобы проверить шестой критерий построения S -блока 5.
  • Покажите, как выполнены восемь критериев построения S -блока 7.
  • Докажите первый критерий построения P -блоков, проверив входы к S -блоку 2 раунда 2.
  • Докажите второй критерий построения для P -блоков, проверяя входы к S -блоку раунда 4.
  • Докажите третий критерий построения P -блоков, проверяя выход S -блока раунда 3.
  • Докажите четвертый критерий построения P -блоков, проверяя выход S -блока 6 раунда 12.
  • Докажите пятый критерий проекта для P -блоков, проверяя отношение между S -блоками 3, 4 и 5 в раундах 10 и 11.
  • Докажите шестой критерий построения P -блоков, проверяя отношение S -блока конечного пункта произвольного блока.
  • Докажите седьмой критерий проекта для P -блоков, проверяя отношения между S -блоком 5 в раунде 4 и S -блоком 7 в раунде 5.
  • Измените рисунок 8.9, используя альтернативный подход.
  • Докажите, что обратный шифр на рис. 8.9 — фактически инверсия шифра DES с тремя раундами. Стартуя с исходного текста и начального шифра, докажите, что вы можете получить тот же самый исходный текст в конце процесса применения обратного шифра.
  • Тщательно изучите ключ при перестановке сжатия таблицы 8.14.
  • Какие входные порты отсутствуют на выходе?
  • Все ли левые 24 бита выхода идут от всех левых 28 входных бит?
  • Все ли правые 24 бита выхода идут от всех 28 входных битов?
  • Покажите результат следующих шестнадцатеричных данных

    0110 10234110 1023

    после прохождения их через начальный блок перестановки.

  • Покажите результат следующих шестнадцатеричных данных

    AAAA BBBB CCCC DDDD

    после прохождения их через конечный блок перестановки.

  • Если ключ с проверочными битами ( 64 бита ) — 0123 ABCD 2562 1456, найдите ключ первого раунда.
  • Используя блок исходного текста всех нулей и ключ на 56 битов из всех нулей, докажите слабость ключевого дополнения, предполагающую, что DES состоит только из одного раунда.
  • Вы можете изобрести атаку "сведение к середине" для трехкратного DES?
  • Напишите псевдокод для переставляющей процедуры, используемой в алгоритме 8.1:
    permute (n,m, inBlock [n], outBlock [m], permutationTable [m])
  • Напишите псевдокод для процедуры разбиения, используемой в алгоритме 8.1:
    spilt(n, m, inBlock [n], leftBlock, rightBlock [m])
  • Напишите псевдокод для процедуры объединения, используемой в алгоритме 8.1:
    combine (n, m, leftBlock [n], rightBlock [n1, outBlock [m])
  • Напишите псевдокод для процедуры ИСКЛЮЧАЮЩЕЕ ИЛИ, используемой в алгоритме 8.1:
    exclusiveOr (n, firstInBlock [n], второй! nBlock [n], outBlock [n])
  • Измените алгоритм 8.1, чтобы представить альтернативный подход.
  • Дополните алгоритм 8.1, чтобы использовать его и для шифрования, и для дешифрования.
  • Вернуться к учебному плану