- •Введение
- •Глава 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, используемые при дешифрации:
10
Глава 2. Исторические шифры
Рассматриваемые ниже примеры классических и исторических шифров не используются в настоящее время в каких-либо практических приложениях, однако их описание полезно как для лучшего понимания современных криптографических систем, так и для того, чтобы получить представление об историческом развитии систем шифрования.
Под блоковым шифром здесь и далее будем понимать такую систему преобразования исходной информации в шифрограмму, при которой:
•исходная информация разбивается на блоки фиксированной длины n ;
•для каждого такого блока используется одна и та же функция шифрации F , параметром которой является один и тот же для всех блоков ключ шифрования k .
2.1.Шифры перестановки
Простой перестановочный шифр с фиксированным периодом n подразумевает разбиение исходного текста на блоки по n символов и использование для каждого такого блока некоторой перестановки E . Ключом такого шифра является используемая при шифрации перестановочная матрица P или вектор t , указывающий правило перестановки. Таким образом, общее число возможных ключей определяется длиной блока n и равно n!. При дешифрации используется матрица обратной перестановки D , являющаяся обратной к матрице P по умножению, то есть D P = I , где I — единичная матрица.
Пример (шифр Древней Спарты)
На наш взгляд, очень удачным примером шифра перестановки является шифр, использовавшийся еще во времена Древней Спарты. Ключом такого шифра была цилиндрическая палочка, а шифрование выполнялось следующим образом:
•узкая пергаментная лента наматывалась по спирали на цилиндрическую палочку;
•шифруемый текст писался на пергаментной ленте по длине палочки, после того как длина палочки оказывалась исчерпанной, она поворачивалась и текст писался далее, пока либо не заканчивался текст, либо не исписывалась вся пергаментная лента. В последнем случае использовался очередной кусок пергаментной ленты.
Дешифрация выполнялась с использованием палочки такого же диаметра.
Таким образом, длина блока n определялась длиной и диаметром палочки, а само шифрование заключалось в перестановке символов исходного текста в соответствии с длиной окружности палочки. Например, используя палочку, по длине окружности которой помещается 4 символа, а длина палочки позволяет записать 6 символов, исходный текст: "это шифр древней спарты" превратится в шифрограмму: "эфвптрнао ер дйтшр ыиес". Длина блока n = 23, а вектор t , указывающий правило перестановки, для этого шифра может быть записан следующим образом: t ={ 1, 7, 13, 19, 2, 8, 14, 20, 3, 9, 15, 21, 4, 10, 16, 22, 5, 11, 17, 23, 6, 12, 18} .
2.2. Шифры замены (подстановки)
Выделим здесь шифры простой (односимвольной или однобуквенной), групповой (многосимволь-
ной) и гомоморфной замены.
2.2.1 Шифры простой замены
Предположим, что алфавит A исходного текста и шифртекста — один и тот же. Тогда процедура шифрования представляет собой некоторую взаимнооднозначную функцию E , аргументом которой является буква исходного текста из A , параметром — ключ, а результатом — буква шифртекста, также из A .