
- •Введение
- •Глава 1. Основные понятия и определения
- •1.1. Основные понятия
- •1.2. Типы атак
- •1.3. Параметры симметричных шифров
- •1.4. Режимы шифрования
- •1.4.1 Режим кодовой книги (ECB)
- •1.4.2 Режим с зацеплением блоков (CBC)
- •1.5. Принципы построения шифров
- •Глава 2. Исторические шифры
- •2.1. Шифры перестановки
- •Пример (шифр Древней Спарты)
- •2.2. Шифры замены (подстановки)
- •2.2.1 Шифры простой замены
- •Пример (шифр Юлия Цезаря)
- •Пример (аффинное преобразование)
- •2.2.2 Многосимвольный подстановочный шифр
- •Пример (шифр Playfair, изобретенный в 1854 году)
- •2.2.3 Шифры гомоморфной замены
- •Глава 3. Сети Файстела и другие шифры
- •3.1. Сети Файстела (Feistel)
- •3.2. Шифр Люцифер
- •3.3. Алгоритм DES
- •3.3.1 Слабые и полу-слабые ключи в DES
- •3.3.2 Использование метода разностного криптоанализа для DES
- •3.4. Алгоритм шифрования FEAL
- •Основные различия между DES и ГОСТ
- •3.6. Алгоритм IDEA
- •3.7. Алгоритм Blowfish
- •Подключи
- •Шифрование и дешифрация
- •Генерирование множеств подключей
- •3.8. Алгоритм RC5
- •Глава 4. AES-кандидаты
- •4.1. Алгоритм MARS
- •Первый этап: прямое перемешивание
- •"Криптографическое ядро"
- •Обратное перемешивание
- •Процедура генерации ключей
- •Построение S-box
- •4.2. Алгоритм RC6
- •Генерация ключей
- •4.3. Алгоритм Serpent
- •Создание S-box
- •Линейное преобразование
- •Генерация ключей
- •4.4. Алгоритм Rijndael
- •1. Побайтовая подстановка
- •2. Сдвиг по строке
- •3. Побайтовая перестановка внутри столбцов
- •4. Сложение с ключом, используемым на данном этапе
- •Процедура получения ключей для каждого этапа алгоритма шифрования
- •Алгоритм расширения ключа
- •4.5. Алгоритм Twofish
- •Функция
- •Преобразование
- •Генерация ключей
- •Функция
- •Функция генерации ключей
- •Примечание
- •Литература
- •Приложение 1. S-box шифра MARS.
- •Начальная перестановка НП:
- •Конечная перестановка КП:
- •S-box, используемые при шифрации:
- •S-box, используемые при дешифрации:

7
В общем случае, симметричные шифры являются во много раз более быстрыми и менее требовательными к ресурсам, чем асимметричные. Это позволяет использовать их для шифрации больших объемов данных, в условиях нехватки ресурсов (на смарт-картах, мобильных телефонах) и т.д.
Главным недостатком симметричных шифров является необходимость пользователям заранее обмениваться единым секретным ключом, что нереализуемо в условиях глобальных сетей, при физической удаленности пользователей и большом количестве общающихся между собой абонентов. Кроме того, существующие задачи аутентификации, распределения ключей, генерации сеансовых ключей не имеют эффективных решений в терминах симметричной криптографии, и традиционно решаются другими методами. Таким образом, симметричные шифры наиболее эффективны для обеспечения безопасного хранения данных — например, на локальной машине, или при передаче данных в сочетании с асимметричными системами.
1.4. Режимы шифрования
Блоковые шифры оперируют с последовательностями символов (бит) фиксированной длины. Описать шифр — это означает задать функции E и D (см. Рис. 1.1), отображающие все возможные последовательности фиксированной длины в другие последовательности, как правило, той же длины. Однако при этом не указывается, как именно передаются сами блоки — результат шифрования.
Существуют разные режимы шифрования, описывающие процедуру передачи блоков. Здесь мы опишем два наиболее часто использующихся: режим кодовой книги (ECB, electronic codebook), и
режим с зацеплением блоков (CBC, cipher block chaining).
1.4.1 Режим кодовой книги (ECB)
В этом режиме не производится никаких дополнительных операций с блоками, они просто последовательно передаются один за другим, как показано на Рис. 1.2.
Рис. 1.2. Режим ЕСВ.
Данный режим характеризуется следующими свойствами:
•Одинаковые блоки открытого текста приводят (при одном и том же ключе) к одинаковым блокам шифртекста. Это часто нежелательно, так как предоставляет аналитику дополнительную информацию о сообщении.
•Блоки незавимимы. Это означает, что перестановка местами блоков шифртекста приведет к перестановке местами соответствующих блоков открытого текста. Это также бывает нежелательно, так как позволяет атакующему вносить изменения в сообщение, причем так, что на приемной стороне это может быть не обнаружено.
•Ошибка при передаче в одном блоке затрагивает только этот блок. Такое свойство позволяет правильно дешифровать все остальные блоки (если в них не было ошибок).
1.4.2 Режим с зацеплением блоков (CBC)
Схема работы данного режима представлена на Рис. 1.3. Здесь блок шифртекста зависит не только от блока открытого текста, но и от предыдущих блоков. Для шифрации первого блока сообщения используется инициализирующий вектор IV.