Современные блочные криптоалгоритмы.
Основные параметры блочных криптоалгоритмов.
Основными параметрами, характеризующими современные блочные криптографические алгоритмы являются размер блока шифртекста (определяющий энтропию алфавита сообщения), размер ключевого пространства (определяющий энтропию криптосистемы), количество раундов, структурная схема криптоалгоритма, применяемые криптографические преобразования (математические операции). Характеристики некоторых наиболее известных современных блочных криптоалгоритмов сведены в таблицу .
Таблица 6. Основные параметры распространенных блочных криптоалгоритмов.
№ | Название | Размер блока, бит | Размер ключа, бит | Кол-во раундов | Основа алгоритма | Применяемые операции |
DES | Сеть Файстеля (2 ветви) | XOR, S-подстановки, перестановки | ||||
3DES | 112,168 | Алгоритм DES | -'- | |||
IDEA | Мультипликативно-аддитивная структура (4 ветви) | XOR, сложение по модулю 216, умножение по модулю 216+1 | ||||
Blowfish | 32..448 | Модифицированная сеть Файстеля (2 ветви) | XOR, сложение по модулю 232 , S-подстановки | |||
RC5 | 32, 64, 128 | 8..2040 | 1.255 | Оригинальная структура (2 ветви) | XOR, сложение/вычитание, циклический сдвиг | |
CAST | 64,128 | 40..256 | 3..32 | Сеть Файстеля с переменной F (2 ветви) | XOR, сложение/вычитание, циклический сдвиг, S-подстановки | |
RC2 | 8..1024 | Оригинальная структура (4 ветви) | XOR, сложение, циклический сдвиг, побитовое "И", побитовое дополнение | |||
ГОСТ 28147-89 | Сеть Файстеля (2 ветви) | XOR, сложение, циклический сдвиг, S-подстановки | ||||
TEA | Несимметричная сеть Файстеля (2 ветви) | XOR, сложение, битовый сдвиг | ||||
MARS | 128,192,256 | 16+16 | Сеть Файстеля (4 ветви) | XOR, сложение, циклический сдвиг, S-подстановки | ||
RC6 | 128,192,256 | Сеть Файстеля (4 ветви) | XOR, сложение, циклический сдвиг, преобразование T | |||
№ | Название | Размер блока, бит | Размер ключа, бит | Кол-во раундов | Основа алгоритма | Применяемые операции |
Serpent | 128,192,256 | Сеть Файстеля (4 ветви) | XOR, битовый сдвиг, циклический сдвиг, S-подстановки | |||
Twofish | 128,192,256 | ? | Алгоритм Blowfish, сеть Файстеля (4 ветви), преобразование Адамара | XOR, сложение, циклический сдвиг, S-подстановки | ||
Rijndael (AES) | 128,192,256 | 10..14 | Табличные преобразования подблоков | XOR, S-подстановки, сдвиг строк, перемешивание в столбцах | ||
Base King | ? | ? | Алгоритм 3-WAY | ? | ||
SAFER | 64,128 | ? | Итеративные раунды, псевдопреобразования Адамара | Логарифмирование и экспоненцирование в конечном поле, XOR, сложение | ||
3-WAY | ? | Оригинальная процедура | Линейная подстановка на основе сдвигов и XOR, перестановки, нелинейная подстановка 3-бит блоков |
Ниже рассмотрим подробнее некоторые современные блочные криптоалгоритмы
Алгоритм DES.
DES представляет собой 64-битовый блочный алгоритм с 56-битовым ключом. Как и ГОСТ он построен на классической сети Файстеля и выполняется в течение 16 раундовсм рис.15, кроме того, он имеет начальную и завершающую перестановки.
При подстановке через S-блок на вход подается 48-битовый блок, разбитый восемь 6-битовых подблока, соответствующие каждый своей S-матрице. Первый и последний биты подблока объединяются в 2-битовое число, определяющее строку S-матрицы, а средние 4 бита объединяются в 4-битовое число, определяющее столбец. На выход подается 4-битовое значение соответствующего элемента S-матрицы.
Рис.15. Раунд шифрования DES
Алгоритм DES являлся коммерческим стандартом шифрования США до 2000 года, когда ему на смену пришел AES. В настоящее время алгоритм применяется в варианте 3DES – каждый блок шифруется трижды на разных ключах. Фактическая длина ключа составила 168 бит.
Блочный шифр TEA
Один из самых простых в реализации, но признанно стойких криптоалгоритмов – TEA (Tiny Encryption Algorithm).
Параметры алгоритма:
Размер блока – 64 бита.
Длина ключа – 128 бит.
В алгоритме использована сеть Фейстеля с двумя ветвями в 32 бита каждая.
Образующая функция F обратима.
Сеть Файстеля несимметрична из-за использования в качестве операции наложения не исключающего "ИЛИ", а арифметического сложения.
Ниже приведен код криптоалгоритма на языке программирования PASCAL.
type TLong2=array[0.. 1] of longint; TLong2x2=array[0.. 1] of TLong2;const Delta=$9E3779B9;var key:TLong2x2;procedure EnCryptRouting(var data);var y,z,sum:longint; a:byte;beginy:=TLong2(data)[0];z:=TLong2(data)[1];sum:=0;for a:=0 to 31 do begin inc(sum,Delta); inc(y,((z shl 4)+key[0,0]) xor (z+sum) xor ((z shr 5)+key[0,1])); inc(z,((y shl 4)+key[1,0]) xor (y+sum) xor ((y shr 5)+key[1,1])); end;TLong2(data)[0]:=y;TLong2(data)[1]:=zend;
Рис.16. Алгоритм TEA
Отличительной чертой криптоалгоритма TEA является его размер. Простота операций, отсутствие табличных подстановок и оптимизация под 32-разрядную архитектуру процессоров позволяет реализовать его на языке ASSEMBLER в предельно малом объеме кода. Недостатком алгоритма является некоторая медлительность, вызванная необходимостью повторять цикл Фейштеля 32 раза (это необходимо для тщательного "перемешивания данных" из-за отсутствия табличных подстановок).
Схема работы алгоритма приведена на рис. 15.
Дата добавления: 2016-02-13; просмотров: 1602;