- •Современные симметричные криптоалгоритмы
- •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.1. Базовые требования к симметричным шифрам
Работа симметричных шифров включает в себя два преобразования
и
,
(1.1)
где T – открытый текст, C – шифротекст, E – шифрующая функция, D – расшифровывающая функция, k – секретный ключ.
Следует отметить, что как шифрующая, так и расшифровывающая функции общеизвестны, и тайна сообщения при известном шифротексте зависит только от секретности ключа k. Хотя этот хорошо обоснованный принцип, называемый принципом Кирхгофа1 был известен еще начиная с середины XIX века [2, 4], множество компаний все еще игнорирует его. Существует много отдельных фирм, разрабатывающих собственные секретные схемы шифрования, которые теряют свою стойкость, как только кто-то из персонала допускает утечку информации о деталях алгоритмов. Опыт показывает, что наилучшими схемами шифрования являются те, которые изучались в течение длительного времени большой армией исследователей и рекомендованы к применению как наиболее безопасные.
Возвращаясь к формулам (1.1), отметим, что число возможных ключей должно быть очень велико. Это требование возникает в связи с тем, что при проектировании криптоалгоритма его разработчик обязан учитывать самый плохой сценарий развития событий, ставя гипотетического противника в максимально выгодное положение, т. е. принимаются следующие допущения:
-
злоумышленник знает алгоритм шифрования;
-
злоумышленнику доступны все зашифрованные тексты;
-
злоумышленник может располагать некоторыми исходными текстами, соответствующими ранее перехваченным шифротекстам.
Если количество
возможных ключей мало (ударение на букву
«о»), то атакующий имеет возможность
взломать шифр простым перебором
вариантов. Он может шифровать один из
данных открытых текстов, последовательно
используя разные ключи, до тех пор, пока
не получит соответствующий известный
шифротекст. В результате искомый ключ
будет найден. Именно для исключения
такого вида атаки необходимо предусмотреть
достаточно большое пространство ключей.
Принято считать, что вычисления, состоящие
из
шагов, в ближайшие несколько лет будут
неосуществимы [2, 4]. Поэтому ключ,
исключающий взлом простым перебором,
должен насчитывать по крайней мере
80 битов.
1.2. Упрощенная модель
На рис. 1.1 изображена упрощенная модель шифрования битовой строки, которая, несмотря на свою простоту, вполне подходит для практического применения. Идея модели состоит в применении к открытому тексту обратимой операции для получения шифротекста, а именно, побитовое сложение по модулю 2 открытого текста со «случайным потоком» битов. Получатель может восстановить текст с помощью обратной операции, сложив шифротекст с тем же самым случайным потоком.

Рис. 1.1. Упрощенная модель шифрования битовой строки
Такую модель легко реализовать на практике, поскольку для ее реализации необходима одна из простейших компьютерных операций – исключающее ИЛИ, т. е. сложение по модулю 2, которое обозначается знаком . В работе [1] был рассмотрен шифр Вернама, который шифрует каждое новое сообщение своим ключом, длина которого совпадает с длиной открытого текста. Данный шифр является абсолютно стойким. Однако, несмотря на совершенство этого алгоритма, он почти не применяется на практике, поскольку порождает почти неразрешимую проблему распределения ключей [2, 3, 4, 6]. В связи с этим разрабатываются симметричные криптосистемы, в которых длинное сообщение шифруется коротким ключом, причем этот ключ можно использовать несколько раз. Естественно, такие системы далеки от абсолютно стойких, но с другой стороны, распределение ключей для них – хотя и трудная, но вполне решаемая задача.
Большинство симметричных шифров можно разделить на две большие группы. Первая – поточные шифры, где за один шаг обрабатывается один элемент данных (бит или буква), а вторая – блочные шифры, в которых за один шаг обрабатывается группа элементов данных (например, 64 бита).
