- •Введение
- •Глава 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, используемые при дешифрации:
11
Пример (шифр Юлия Цезаря)
Хорошим примером простого подстановочного шифра является шифр Юлия Цезаря, представляющий собой фактически сдвиг по алфавиту A на количество букв, определяемое числом k . То есть, если объем алфавита равен, например, 33 буквам, и каждая буква в этом алфавите имеет свой номер i : 0 ≤ i ≤ 32 , то зашифрованная буква будет иметь номер j : j = i + k mod 33. Дешифра-
ция выполняется в обратном порядке: i = j − k mod 33 . Если верить легенде, то Юлий Цезарь ис-
пользовал в качестве ключа k число 3. Таким образом, фраза "И ТЫ БРУТ!" превратилась бы в
"Л ХЮ ДУЦХ!".
Пример (аффинное преобразование)
Шифр аффинного преобразования на алфавите из 33 букв определяется как j = ai + b mod 33 , где a,b — такие, что 0 ≤ a,b ≤ 32 , и НОД(a, 33) =1. Очевидно, что шифр аффинного преобразования превращается в шифр Юлия Цезаря при a =1.
2.2.2 Многосимвольный подстановочный шифр
Такой шифр использует операцию замены группы символов исходного текста на группу символов шифртекста. Например, две буквы исходного текста могут быть заменены по определенному правилу на две другие буквы этого же алфавита.
Пример (шифр Playfair, изобретенный в 1854 году)
Ключом шифра является матрица из всех символов алфавита, для русского языка это может быть матрица 6 ×6 , состоящая из 33 букв, пробела, запятой и точки. Все символы исходного текста разбиваются на пары ( pi , pi +1 ) и заменяются парой других символов (ei ,ei +1) по следующему правилу:
•Если pi , pi +1 находятся в разных строках и столбцах, то они задают два противоположных угла подматрицы, два других угла которой и будут символы ei , ei +1 , причем ei находится в том же столбце, что и pi .
• |
Если pi , |
pi +1 |
находятся в одной строке, то ei определяется как символ, стоящий справа от |
|
|
pi , а ei +1 |
— символ справа от |
pi +1 (первый столбец считается находящимся справа от по- |
|
|
следнего). |
|
|
|
• |
Если pi , |
pi +1 |
находятся в одном столбце, то ei определяется как символ, стоящий ниже |
|
|
pi , а ei +1 |
— символ ниже pi +1 |
(первый столбец считается находящимся ниже последнего). |
|
•В случае, если pi = pi +1 , для их разрядки может быть использован редко встречающийся символ языка (например, ъ).
Для составления матрицы-ключа можно использовать специально составленные фразы, содержащие все или почти все буквы алфавита, например: "В чащах юга жил был цитрус, да но фальшивый экземпляр". Тогда матрица подстановки S будет выглядеть следующим образом:
|
в |
|
ч |
а |
щ |
ё |
|
х |
ю |
г |
ъ |
ж |
и |
S = |
л |
б |
ы |
ц |
т |
р |
|
у |
с |
, |
д |
н |
о |
|
ф |
ь |
ш |
й |
э |
к |
|
з |
е |
м |
п |
я . |
|
И тогда фраза "ЧЕСТНАЯ ИГРА" будет зашифрована в "М БНЩДЩЕХЪЁЦ"
