Сеть Фейштеля получила широкое распространение, поскольку обеспечивает выполнение требования о многократном использовании ключа и материала исходного блока информации. Классическая сеть Фейштеля имеет следующую структуру:
Независимые потоки информации, порожденные из исходного блока, называются ветвями сети. В классической схеме их две. Величины Vi именуются параметрами сети, обычно это функции от материала ключа. Функция F называется образующей. Действие, состоящее из однократного вычисления образующей функции и последующего наложения ее результата на другую ветвь с обменом их местами, называется циклом или раундом (англ. round) сети Фейштеля. Оптимальное число раундов K – от 8 до 32. Часто количество раундов не фиксируется разработчиками алгоритма, а лишь указываются разумные пределы (обязательно нижний, и не всегда – верхний) этого параметра.
Данная схема является обратимой. Сеть Фейштеля обладает тем свойством, что даже если в качестве образующей функции F будет использовано необратимое преобразование, то и в этом случае вся цепочка будет восстановима. Это происходит вследствие того, что для обратного преобразования сети Фейштеля не нужно вычислять функцию F-1.
Рисунок 3.1 - Классическая структура сети Фейштеля
Сеть Фейштеля симметрична за счет использования операции XOR и для ее обратимости не имеет значение является ли число раундов четным или нечетным числом.
Использование модификации сети Фейштеля для большего числа ветвей связано с тем, что при больших размерах кодируемых блоков (128 и более бит) становится неудобно работать с математическими функциями по модулю 64 и выше. Основные единицы информации обрабатываемые процессорами на сегодняшний день – это байт и двойное машинное слово 32 бита. Будет логично разбивать исходные блоки не на две, а на 4 части. В этом случае сеть Фейштеля может принимать следующий вид:
Рисунок 3. 2 - Структура модифицированной сети Фейштеля.
Алгоритм предназначен для шифрования и дешифрования информации, представленной в виде слов, разрядностью 128 бит на основе 64-битового ключа. Операции шифрования и дешифрования являются инверсными и используют один и тот же ключ.
Рассмотрим шифрование одного блока.
Обозначим X1X2X3X4 конкатенацию последовательностей X1. X2, X3 и X4, в которой биты последовательностей X1, X2, X3, X4 следуют друг за другом. Размерность последовательности равна сумме размерностей всех составляющих. Символом + обозначим операцию побитового сложения по модулю 2.
Итеративный процесс шифрования описывается следующими формулами:
Х1(i) = X2(i-1)+F(Vi), i = 1, 2, ... ,n;
Х2(i) = X3(i-1), i = 1, 2, ... ,n;
Х3(i) = X4(i-1), i = 1, 2, ... ,n;
Х4(i) = X1(i-1), i = 1, 2, ... ,n;
где F(Vi) - функция образующая;
n - количество раундов, может изменяться, в зависимости от требований по быстродействию и криптостойкости (n= 8 ¸128);
Vi =X1(i-1)+h(K) - параметр сети;
h(K)= K1 ROL i +K2 ROR i,
К1 и К2 - левая и правая части ключа К,
ROL и ROR - операции циклического сдвига влево и вправо соответственно.
Предлагаемый алгоритм имеет ряд достоинств. В первую очередь - простота реализации и высокое быстродействие, которое достигается за счет использования операций, имеющих высокую скорость выполнения.
Дешифрование блока информации производится той же сетью Фейштеля, но с инверсным порядком параметров сети. В явном виде ключ в алгоритме не используется, что повышает его криптостойкость. При знании ключа, но отсутствии информации о количестве раундов криптоаналитику будет достаточно сложно дешифровать зашифрованную информацию.
0 коммент.:
Отправить комментарий