- •Введение
- •Глава 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, используемые при дешифрации:
28
•В DES используется перестановочная матрица P , в ГОСТе используется 11-битный циклический сдвиг влево.
•В DES 16 циклов, в ГОСТ — 32.
3.6.Алгоритм IDEA
Первая версия криптографического алгоритма IDEA, предложенного Ксуеджа Лаи (Xuejia Lai) и Джеймсом Мэсси (James Massey) [LaiMas90], появилась в 1990 году. Тогда алгоритм назывался PES (Proposed Encryption Standard, Предлагаемый Стандарт Шифрования). Год спустя, после демонстрации Бихамом и Шамиром дифференциального криптоанализа, авторы алгоритма усилили его защиту от несанкционированного доступа. Они назвали новый алгоритм IPES (Improved Proposed Encryption Standard, Улучшенный Предлагаемый Стандарт Шифрования). IPES изменил свое название и превратился в IDEA (International Data Encryption Algorithm, Международный Ал-
горитм Шифрования Данных).
IDEA — блоковый криптографический алгоритм. Он работает с блоками исходного текста длиной 64 бита и длиной ключа 128 бит. Один и тот же алгоритм используется для шифрования и для дешифрации. Основная идея алгоритма состоит в перемешивании операций разных алгебраических групп. Используются три алгебраические группы, операции которых перемешиваются:
•XOR — сложение по модулю два;
•сложение — сложение по модулю 216 (сложение, игнорирующее какое-либо переполнение);
•умножение — умножение по модулю 216 +1 (умножение, игнорирующее какое-либо переполнение).
Более того, все эти операции производятся с 16-битовыми подблоками, и соответственно, этот алгоритм эффективен при работе на 16-битных процессорах. На Рис. 3.12 [Schn96] изображена блок-
схема алгоритма IDEA. Блок данных длиной 64 бита делится на четыре 16-битовых подблока: X1 , X2 , X 3 , X4 . Эти четыре подблока становятся входными данными для первого цикла алгоритма. Алгоритм содержит всего 8 таких циклов.
Во время каждого цикла над четырьмя подблоками выполняются операции XOR, сложения и умножения друг с другом и с 16-битовыми подблоками ключевой последовательности. В промежутках между каждым циклом второй и третий подблоки меняются местами.
Каждый цикл состоит из следующей последовательности действий:
1.Умножение X1 и первого подблока ключевой последовательности;
2.Сложение X2 со вторым подблоком ключевой последовательности;
3.Сложение X 3 с третьим подблоком ключевой последовательности;
4.Умножение X4 и четвертого подблока ключевой последовательности;
5.Операция ХОR результатов шагов 1) и 3);
6.Операция XOR результатов шагов 2) и 4);
7.Умножение результата шага 5) с пятым подблоком ключевой последовательности;
8.Сложение результатов шагов 6) и 7);
9.Умножение результатов шага 8) с шестым подблоком ключевой последовательности;
10.Сложение результатов шагов 7) и 9);
11.XOR результатов шагов 1) и 9);
12.XOR результатов шагов 3) и 9);
13.XOR результатов шагов 2) и 10);
14.XOR результатов шагов 4) и 10);
29
Рис. 3.11. Блок-схема алгоритма IDEA.
Выходными данными для каждого цикла алгоритма являются четыре подблока, которые являются результатами шагов 11), 13), 12), 14).
Далее производится обмен двух внутренних блоков (за исключением последнего цикла алгоритма), и получившиеся блоки являются входными данными для следующего цикла.
После 8-го цикла производится окончательное преобразование выходных данных:
1.Умножение X1 и первого подблока ключевой последовательности;
2.Сложение X2 с вторым подблоком ключевой последовательности;
3.Сложение X 3 с третьим подблоком ключевой последовательности;
4.Умножение X4 и четвертого подблока ключевой последовательности;
Взаключение, четыре подблока соединяются для получения криптограммы.
Создание ключевых подблоков не составляет труда. Алгоритм использует 52 таких подблока (6 для каждого из восьми циклов и еще 4 для преобразования выходных данных).