- •Современные симметричные криптоалгоритмы
- •1.1. Базовые требования к симметричным шифрам
- •1.2. Упрощенная модель
- •1.3. Поточные шифры
- •1.4. Блочные шифры
- •1.5. Сеть Фейстеля
- •1.6.2. Основные характеристики и структура алгоритма
- •1.6.3. Алгоритм разворачивания ключа
- •1.6.4. Стойкость алгоритма des
- •1.7.2. Режим ecb (Electronic Code Book)
- •1.7.3. Режим cbc (Cipher Block Chaining)
- •Библиографический список
1.3. Поточные шифры
Рис. 1.2 дает простую, но яркую иллюстрацию поточного шифра. Следует обратить внимание, что схема поточного шифра в значительной степени похожа на предыдущую упрощенную модель. Тем не менее, случайный поток битов теперь генерируется по короткому секретному ключу с помощью открытого алгоритма, называемого генератором ключевого потока. Здесь биты шифротекста получаются по правилу:
,
где
– биты шифротекста,
– биты открытого текста,
– биты ключевого потока,
– операция сложения по модулю 2.

Рис. 1.2. Общая схема поточного шифра
Поскольку процесс шифрования – это сложение по модулю 2, расшифрование является, по существу, той же самой операцией:
.
Поточные шифры просты и удобны для реализации. Они позволяют быстро шифровать большой объем данных. Поэтому они подходят для передачи аудио- и видео-сигналов в реальном времени. Кроме того, в этом процессе не происходит накопления ошибки. Если отдельный бит шифротекста исказился в процессе передачи (например, вследствие слабого радиосигнала или из-за вмешательства противника), то в расшифрованном открытом тексте только один бит окажется неверным. Однако повторное использование того же ключа дает тот же ключевой поток, что влечет за собой зависимость между соответствующими сообщениями.
Следовательно, необходимо менять ключи либо с каждым новым сообщением, либо с очередным сеансом связи. В результате возникают трудности управления ключами и их распределения, которые преодолеваются, как позже будет показано, с помощью криптосистем с открытым ключом.
1.4. Блочные шифры
На рис. 1.3 изображена схема блочного алгоритма шифрования. Блочный шифр за один прием обрабатывает блок открытого текста. Основное отличие блочного шифра от поточного состоит в том, что поточным шифрам необходимо постоянно помнить о том, какое место битовой строки они в данный момент обрабатывают, чтобы определить, какую часть ключевого потока нужно сейчас генерировать; блочные же шифры избавлены от этой необходимости.

Рис. 1.3. Общая схема блочного шифра
Размер блока для шифрования обычно выбирают разумно большим. В системе DES (стандарт шифрования данных), например, он состоит из 64 битов, а в современных блочных криптосистемах он достигает 128 битов и более.
Сегодня принято на вооружение довольно много разновидностей блочных шифров: RC5, RC6, IDEA, DES, 3DES [2, 3, 4, 5, 6].
Наиболее знаменитый из них – DES (Data Encryption Standard – стандарт шифрования данных). Впервые он был опубликован в середине семидесятых годов XX века как федеральный стандарт США и вскоре оказался, де-факто, международным стандартом в банковских операциях. Далее он будет рассмотрен подробно.
1.5. Сеть Фейстеля
Прежде чем перейти к описанию алгоритма DES следует остановиться на понятии «сеть Фейстеля». Хорста Фейстеля по праву считают праотцом современных блочных шифров. Работая в 70-е годы XX века в исследовательском центре корпорации IBM, он создал шифр Люцифер, на основе которого позже был разработан криптоалгоритм, ставший в 1977-м году национальным стандартом Соединенных Штатов и широко известный в мире под аббревиатурой DES. По сходной схеме построены все наиболее сильные из современных несекретных криптографических алгоритмов, и эта архитектура блочных шифров получила название «сеть Фейстеля» в честь своего создателя.
Итерационным будем
называть блочный шифр, который состоит
из последовательного повторения
некоторой внутренней функции, называемой
раундовой функцией. Параметрами данного
шифра являются число раундов r,
размер блока (в битах) n,
размер k
входного ключа K,
из которого генерируются r
раундовых ключей
(данное действие называется процедурой
разворачивания ключа).
Для обратимости шифра, т. е. однозначного
расшифрования, для каждого значения
раундовая функция должна быть взаимно
однозначным отображением.
Шифром Фейстеля
называется итерационный шифр, преобразующий
2t‑битный
открытый текст
,
состоящий из t-битных
блоков L0
и R0,
в шифротекст
,
путем выполнения преобразования,
состоящего из r
раундов, где r 1.
Для каждого 1 i r
выполнение i-го
раунда заключается в преобразовании
,
которое осуществляется следующим образом (рис. 1.4):
,
,
где каждый раундовый
ключ
вырабатывается из основного ключа K.
В шифре Фейстеля выходной блок шифротекста
определяется как
,
а не
,
т. е. блоки меняются местами после
выполнения последнего раунда [5, 6].

Рис. 1.4. Общая схема шифра Фейстеля
Расшифрование заключается в выполнении тех же r раундов, но раундовые ключи берутся в обратном порядке.
1.6. Стандарт шифрования данных DES (Data Encryption Standard)
1.6.1. История создания алгоритма
Один из наиболее известных в мире криптологов Брюс Шнайер в своей знаменитой книге «Прикладная криптография» [4] так описал проблемы пользователей средств защиты информации в начале 70-х гг. XX века:
-
не было как общепринятого стандарта шифрования данных, так и просто достаточно широко используемых алгоритмов защиты информации, поэтому о совместимости между различными программными и аппаратными средствами шифрования не могло быть и речи;
-
практически любое средство шифрования представляло собой «черный ящик» с достаточно неясным содержимым: какой алгоритм шифрования используется, насколько он является криптографически стойким, грамотно ли он реализован, корректно ли создаются, хранятся, используются ключи шифрования, нет ли в средстве вставленных разработчиками недокументированных возможностей и т.д., – вся эта весьма важная информация для подавляющего большинства покупателей криптографических средств была недоступна.
Данной проблемой озаботилось Национальное Бюро Стандартов (National Bureau of Standards, NBS) США. В результате в 1973 г. был объявлен первый в истории открытый конкурс на стандарт шифрования. NBS было готово исследовать с целью выбора стандарта алгоритмы-претенденты, удовлетворяющие следующим критериям:
-
алгоритм должен быть криптографически стойким;
-
алгоритм должен быть быстрым;
-
структура алгоритма должна быть четкой и ясной;
-
стойкость шифрования должна зависеть только от ключа, сам алгоритм не должен быть секретным;
-
алгоритм должен быть легко применим для различных целей;
-
алгоритм должен легко реализовываться аппаратно на существующей элементной базе.
Предполагалось, что заинтересованные организации или специалисты будут присылать в NBS подробные спецификации алгоритмов, достаточные для их реализации. Предполагалось также, что алгоритм будет сертифицирован NBS для всеобщего использования, с него будут сняты все патентные и экспортные ограничения, в результате чего такой стандарт должен будет решить все проблемы совместимости средств шифрования. Кроме того, NBS брало на себя функции сертификации средств шифрования, т. е. «черные ящики» должны были безвозвратно уйти в прошлое.
Фактически алгоритм-претендент оказался всего один: это был разработанный фирмой IBM алгоритм шифрования Lucifer. В течение двух лет проводилась доработка алгоритма:
-
во-первых, NBS совместно с Агентством Национальной Безопасности (National Security Agency, NSA) США был проведен тщательный анализ алгоритма, результатом которого явилась его достаточно существенная переработка. Долгое время специалисты в области криптографии считали, что изменения состояли в использовании ловушки в функции F. Однако теперь считается, что они были направлены на повышение безопасности шифра. В частности, эти модификации укрепили сопротивляемость шифра дифференциальному криптоанализу – технике, с которой гражданские исследователи не были знакомы до 1980-х годов;
-
во-вторых, принимались к рассмотрению комментарии и критические замечания от всех заинтересованных организаций и частных лиц.
В результате совместной деятельности IBM, NBS и NSA в январе 1977 г. DES был опубликован как стандарт США. Алгоритм DES был запатентован фирмой IBM, однако NBS получило, фактически, бесплатную и неограниченную лицензию на использование данного алгоритма. Альтернативное, но реже используемое название алгоритма – DEA (Data Encryption Algorithm).
