Смекни!
smekni.com

Схемы шифрования AES, RC4, RC5, RC6, Twofish, Mars (стр. 4 из 4)

6. Алгоритм шифрования TwoFish

Алгоритм, разработанный Шнайером, является модификацией алгоритма BlowFish, созданного в 1993г. Алгоритм TwoFish основан на 16 раундовой сети Фейстеля. В алгоритме используются преобразование РНТ (Pseudo-Hadamard Transforms), MDS матрицы, зависимые от ключа Sbox'ы, по сравнению с другими алгоритмами TwoFish имеет довольно сложную структуру, которая представлена на рисунке 6.1

Рисунок 6.1 Структура алгоритма Twofish

Входное отбеливание

Один раунд шифрования

Еще 15 раундов

Отмена последнего обмена местами пар слов

Выходное отбеливание

128-битовый блок P открытого текста (16 байт p0 ,…, p15) разбивается на четыре 32-битовых слова P0, P1, P2 и P3 c сохранением прямого порядка байтов (Little-Endian Convention):

На этапе входного «отбеливания» выполняется операция XOR между этими словами и четырьмя ключами K0, K1, K2 и K3:

После этого следуют 16 раундов шифрования. В каждом раунде два «левых» слова являются входными для функций g (биты одного из входных слов сначала циклически сдвигаются на 8 позиций влево). К полученным выходным словам функций g затем применяется псевдопреобразование Адамара (PHT - Pseudo-Hadamard Transform) и добавляются два раундовых ключа K2r+8 и K2r+9, где r — номер раунда шифрования. Далее между модифицированными таким образом «левыми» словами и двумя «правыми» словами (биты одного из которых прежде циклически сдвигаются на одну позицию влево) выполняется операция XOR, после чего циклическому сдвигу на 1 бит вправо подвергается другое из теперь уже видоизмененных «правых» слов. «Левая» и «правая» пары слов затем меняются местами для следующего раунда шифрования. Таким образом,

где r = 0 , …, 15, а аббревиатурами ROR и ROL обозначены функции двух аргументов, выполняющие побитовый циклический сдвиг первого аргумента вправо и влево соответственно на число позиций, равное второму аргументу.

После реализации всех 16-ти раундов шифрования последний обмен местами «левой» и «правой» пар слов отменяется, и между полученными 32-битовыми словами и ключами K4, K5, K6 и K7 выполняется операция XOR (этап выходного «отбеливания»):

Сi = R16,(i+2)mod4 Å K i=0,…,3

Полученные слова C0, C1, C2 и C3 затем объединяются в 128-битовый блок C (16 байт c0 ,… , c 15) зашифрованного текста:

где ëxû - целая часть х.

Несколько слов по поводу криптостойкости Twofish.

Разработчики алгоритма уже изначально были уверены в неприступности своего творения для криптоаналитиков. Во время первого раунда конкурса на новый американский правительственный стандарт шифрования Б. Шнайером был даже объявлен конкурс на лучшую криптоатаку против Twofish с призовым фондом в 10 тысяч долларов. Задача была действительно непростая: сложность алгоритма сыграла свою роль (и стала, кстати, одной из причин, по которой Twofish не стал новым стандартом шифрования США).

Тем не менее, определенные успехи в криптоанализе Twofish все же были достигнуты. Один из известных методов (Impossible Differential Attack), принадлежащий Ларсу Нудсену (Lars Knudsen), для 6-раундового Twofish (без «отбеливаний») имеет сложность 2128 для 128-битового ключа, 2160 для 192-битового ключа и 2192 для 256-битового ключа. Также была предложена атака на 7-раундовый Twofish (опять же без «отбеливаний») со сложностью 2256 для 256-битового ключа.

С «отбеливаниями» наилучшая атака «ломала» 6-раундовый Twofish cо сложностью 2256 и только с длиной ключа, равной 256 бит.

Таким образом, значительный запас криптостойкости Twofish очевиден.


Список использованных источников

1. Брюс Шнайер Прикладная криптография 2-е издание

2.О процессе принятия AES. Б. Киви http://byrd.narod.ru/aes/aes2.htm

3.Конкурс на новый криптостандарт AES. Б. Киви http://kiwibyrd.chat.ru/ru/aes1 .htm

4.Общие сведения о конкурсе AES http://www.citforum.ru/internet/infsecure/its2000 21 .shtml