Схема расшифрования
При расшифровании
данных все действия выполняются
в обратном порядке. В 16 циклах расшифрования,
в отличие от шифрования c помощью
прямого преобразования сетью Фейстеля, здесь используется
обратное преобразование сетью Фейстеля.
Ri −
1 = Li
Схема расшифрования
указана на Рис.6.
Ключ ki, i=1,…,16, функция f,
перестановка IP и IP − 1 такие
же как и в процессе шифрования.
Режимы использования
DES
DES может использоваться
в четырёх режимах.
- Режим электронной
кодовой книги (ECB — Electronic
Code Book): обычное
использование DES как блочного
шифра. Шифруемый
текст разбивается на блоки, при этом,
каждый блок шифруется отдельно, не взаимодействуя
с другими блоками (см. Рис.7).
- Режим сцепления
блоков (СВС — Cipher
Block Chaining)
(см. Рис.8). Каждый очередной блок Ci
i>=1, перед зашифровыванием складывается
по модулю 2 со следующим блоком открытого
текста Mi + 1. Вектор C0 —
начальный вектор, он меняется ежедневно
и хранится в секрете.
- Режим
обратной связи по шифротексту (англ. Cipher Feed Back) (см.
Рис.9). В режиме CFB вырабатывается блочная
«гамма» Z0,Z1,...Zi
= DESk(Ci − 1)
. Начальный вектор C0 является
синхропосылкой и предназначен для того,
чтобы разные наборы данных шифровались
по-разному с использованием одного и
того же секретного ключа. Синхропосылка
посылается получателю в открытом виде
вместе с зашифрованным файлом.
- Режим обратной
связи по выходу (OFB — Output
Feed Back) (см.
Рис.10). В режиме OFB вырабатывается блочная
«гамма» Z0,Z1,...
, i>=1
Достоинства
и недостатки режимов:
- В режимах ECB
и OFB искажение при передаче
одного 64-битового блока шифротекста
Ci приводит к искажению после
расшифрования только соответствующего
открытого блока Mi, поэтому
такие режимы используется для передачи
по каналам связи с большим числом искажений.
Криптостойкость
алгоритма DES
Нелинейность
преобразований в DES средствами только
S-блоков, и использование слабых
S-блоков позволяет осуществлять контроль
за шифрованной перепиской. Выбор S-блоков
требует соблюдения нескольких условий:
- Каждая
строка каждого блока должна быть перестановкой
множества {0, 1, 2, …, 15}
- S-блоки
не должны являться линейной или афинной
функцией своих аргументов.
- Изменение
одного бита на входе S-блока должно приводить
к изменению по крайней мере двух битов
на выходе.
- Для каждого
S-блока и любого аргумента х значение
S(x) и
должны различаться по крайней мере двумя
битами.
Из-за небольшого
числа возможных ключей (всего 256),
появляется возможность их полного перебора
на быстродействующей вычислительной
технике за реальное время. В 1998 году Electronic Frontier Foundation используя специальный
компьютер DES-Cracker, удалось взломать DES
за 3 дня.
Слабые ключи
Слабыми ключами
называется ключи k такие, что
DESk(DESk(x))
= x, где x — 64-битный блок.
Известны 4 слабых
ключа, они приведены в таблице
9. Для каждого слабого ключа
существует 232 неподвижные
точки, то
есть, таких 64-битных блоков х, для
которых DESk(x) = x.
Таблица
9. DES-Слабые ключи |
Слабые
ключи(hexadecimal) |
C0 |
D0 |
0101-0101-0101-0101 |
[0]28 |
[0]28 |
FEFE-FEFE-FEFE-FEFE |
[1]28 |
[1]28 |
1F1F-1F1F-0E0E-0E0E |
[0]28 |
[1]28 |
E0E0-E0E0-F1F1-F1F1 |
[1]28 |
[0]28 |
[0]28 обозначает
вектор, состоящий из 28 нулевых битов.
Частично слабые
ключи
В алгоритме DES
существуют слабые и частично слабые
ключи. Частично-слабые ключи — это такие
пары ключей (k1,k2), что
DESk1(DESk2(x))
= x.
Существуют 6
частично-слабых пар ключей, они
приведены в таблице 10. Для каждого
из 12 частично-слабых ключей существуют
232 «анти-неподвижные точки», то
есть такие блоки х, что
Таблица
10. Частично-слабые ключи |
C0 |
D0 |
Пары частично-слабых
ключей |
C0 |
D0 |
[01]14 |
[01]14 |
01FE-01FE-01FE-01FE,----FE01-FE01-FE01-FE01 |
[10]14 |
[10]14 |
[01]14 |
[01]14 |
1FE0-1FE0-1FE0-1FE0,----E0F1-E0F1-E0F1-E0F1 |
[10]14 |
[10]14 |
[01]14 |
[0]28 |
01E0-01E0-01F1-01F1,----E001-E001-F101-F101 |
[10]14 |
[0]28 |
[01]14 |
[1]28 |
1FFE-1FFE-0EFE-0EFE,----FE1F-FE1F-FE0E-FE0E |
[0]28 |
[1]28 |
[0]28 |
[01]14 |
O11F-011F-010E-010E,----1F01-1F01-0E01-0E01 |
[0]28 |
[10]14 |
[1]28 |
[01]14 |
E0FE-E0FE-F1FE-F1FE,----FEE0-FEE0-FEF1-FEF1 |
[1]28 |
[10]14 |
Известные
атаки на DES
Таблица
11. Известные атаки на DES. |
Методы
атаки |
Известные откр.
тексты |
Выбранные отк.
тексты |
Объём памяти |
Количество
операций |
Полный
поиск |
1 |
- |
Незначительный |
255 |
Линейный
Криптоанализ |
243(85%) |
- |
Для текста |
243 |
Линейный
Криптоанализ |
238(10%) |
- |
Для текста |
250 |
Диффер.
Криптоанализ |
- |
247 |
Для текста |
247 |
Диффер.
Криптоанализ |
255 |
- |
Для текста |
255 |
- Метод полного перебора требует одну известную
пару шифрованного и расшифрованного
текста, незначительный объём памяти,
и его выполнение требует около 255
шагов.
- Дифференциальный
криптоанализ —
первую такую атаку на DES заявили Biham и
Shamir. Эта атака требует шифрования 247
открытых текстов выбранных нападающим,
и для её выполнения нужны примерно 247
шагов. Теоретически являясь точкой разрыва,
эта атака непрактична из-за чрезмерных
требований к подбору данных и сложности
организации атаки по выбранному открытому
тексту. Сами авторы этой атаки Biham и Shamir
заявили, что считают DES защищенным для
такой атаки.
- Линейный
криптоанализ
разработан Matsui. Этот метод позволяет
восстановить ключ DES с помощью анализа
243 известных открытых текстов, при
этом требуется примерно 243 шагов
для выполнения. Первый экспериментальный
криптоанализ DES, основанный на открытии
Matsui, был успешно выполнен в течение 50
дней на автоматизированных рабочих местах
12 HP 9735.
Для линейного
и дифференциального криптоанализа
требуется достаточно большой объём
памяти для сохранения выбранных (известных)
открытых текстов до начала атаки.
Увеличение
криптостойкости DES
Чтобы увеличивать криптостойкость DES появляются несколько
вариантов: double
DES (2DES), triple DES
(3DES), DESX, G-DES.
- Методы 2DES
и 3DES основаны на DES, но
увеличивают длину ключей (2DES — 112 бит,
3DES — 168 бит) и поэтому увеличивается криптостойкость.
- Схема 3DES
имеет вид DES(k3,DES(k2,DES(k1,M))),
где k1,k2,k3
ключи для каждого шифра DES. Это вариант
известен как в ЕЕЕ так как три DES операции
являются шифрованием. Существует 3 типа
алгоритма 3DES:
- DES-EEE3: Шифруется три раза
с 3 разными ключами.
- DES-EDE3: 3DES операции шифровка-расшифровка-шифровка
с 3 разными ключами.
- DES-EEE2 и DES-EDE2: Как и предыдущие,
за исключением того, что первая и третья
операции используют одинаковый ключ.
Самый популярный
тип при использовании 3DES — это DES-EDE3,
для него алгоритм выглядит так:
- k1,k2,k3
независимы.
- k1,k2
независимы, а k1 = k3
- k1
= k2 = k3.
- Метод DESX
создан Рональдом
Ривестом
и формально продемонстрирована Killian и
Rogaway. Этод метод — усиленный вариант DES,
поддерживаемый инструментарием RSA
Security. DESX отличается от DES
тем, что каждый бит входного открытого
текста DESX логически суммируется по модулю
2 с 64 битами дополнительного ключа, а затем
шифруется по алгоритму DES. Каждый бит
результата также логически суммируется
по модулю 2 с другими 64 битами ключа. Главной
причиной использования DESX является простой
в вычислительном смысле способ значительного
повысить стойкость DES к атакам полного перебора ключа.
- Метод G-DES
разработан Schaumuller-Bichl для повышения производительности
DES на основе увеличения размером шфрованного
блока. Заявлялось, что G-DES защищен так
же как и DES. Однако, Biham и Shamir показали,
что G-DES с рекомендуемыми
параметрами легко взламывается, а при
любых изменениях параметров шифр становится
ещё менее защищен чем DES.
- Ещё другой
вариант DES использует независимые суб-ключи.
Различно от алгоритма DES, в котором на
основе 56-битного секретного ключа пользователя
алгоритм DES получает шестнадцать 48-битных
суб-ключей для использования в каждом
из 16 раундов, в этом варианте использует
768-битного ключа (разделенного на 16 48-битных
подключей) вместо 16 зависимых 48-битных
ключей, создаваемых по ключевому графику
алгоритма DES. Хотя очевидно, что использование
независимых суб-ключей значительно усложнит
полный поиск ключа, но стойкость к атаке
дифференциальным или линейным криптоанализом
не намного превысит стойкость обычного
DES. По оценке Biham для дифференциального
криптоанализа DES с независимыми подключами
требуется 261 выбранных открытых
текстов, в то время как для линейного
криптоанализа требуется 260 известных
открытых текстов.