В криптографии Twofish — это симметричный блочный шифр с размером блока 128 бит и размером ключа до 256 бит. Он был одним из пяти финалистов конкурса Advanced Encryption Standard , но не был выбран для стандартизации. Twofish связан с более ранним блочным шифром Blowfish .
Отличительными особенностями Twofish являются использование предварительно вычисленных зависимых от ключа S-boxes и относительно сложного ключа . Одна половина n-битного ключа используется как фактический ключ шифрования, а другая половина n-битного ключа используется для модификации алгоритма шифрования (зависящих от ключа S-boxes). Twofish заимствует некоторые элементы из других разработок; например, псевдо -преобразование Адамара [3] (PHT) из семейства шифров SAFER . Twofish имеет структуру Фейстеля , как DES . Twofish также использует матрицу Maximum Distance Separable .
Когда он был представлен в 1998 году, Twofish был немного медленнее, чем Rijndael (выбранный алгоритм для Advanced Encryption Standard ) для 128-битных ключей , но несколько быстрее для 256-битных ключей. С 2008 года практически все процессоры AMD и Intel включают аппаратное ускорение алгоритма Rijndael через набор инструкций AES ; реализации Rijndael, использующие набор инструкций, теперь на порядки быстрее, чем (программные) реализации Twofish. [4]
Twofish был разработан Брюсом Шнайером , Джоном Келси , Дугом Уайтингом, Дэвидом Вагнером , Крисом Холлом и Нильсом Фергюсоном : «расширенная команда Twofish» встретилась, чтобы провести дальнейший криптоанализ Twofish. Среди других участников конкурса AES были Стефан Лакс , Тадаёси Коно и Майк Стэй.
Шифр Twofish не был запатентован , а эталонная реализация была размещена в открытом доступе . В результате алгоритм Twofish доступен для свободного использования любым желающим без каких-либо ограничений. Это один из немногих шифров, включенных в стандарт OpenPGP (RFC 9580). Однако Twofish получил менее широкое распространение, чем Blowfish , который был доступен дольше.
При проектировании Twofish производительность всегда была важным фактором. Он был разработан с учетом нескольких уровней компромиссов производительности в зависимости от важности скорости шифрования, использования памяти, количества аппаратных шлюзов, настройки ключа и других параметров. Это позволяет создать очень гибкий алгоритм, который можно реализовать в различных приложениях.
Существует множество компромиссов между пространством и временем, которые могут быть сделаны как в программном обеспечении, так и в оборудовании для Twofish. Примером такого компромисса может быть предварительное вычисление раундовых подключей или s-boxes, что может привести к увеличению скорости в два или более раз. Однако это достигается за счет большего объема оперативной памяти, необходимого для их хранения.
Все оценки в таблице ниже основаны на существующей технологии КМОП 0,35 мкм .
В 1999 году Нильс Фергюсон опубликовал невозможную дифференциальную атаку , которая взламывает 6 раундов из 16 версии 256-битного ключа, используя 2 256 шагов. [2]
По состоянию на 2000 год [обновлять]лучшим опубликованным криптоанализом блочного шифра Twofish является усеченный дифференциальный криптоанализ полной 16-раундовой версии. В статье утверждается, что вероятность усеченных дифференциалов составляет 2−57,3 на блок и что потребуется примерно 2−51 выбранных открытых текстов (32 петабайта данных), чтобы найти хорошую пару усеченных дифференциалов. [6]
Брюс Шнайер ответил в записи блога 2005 года, что эта статья не представляет собой полную криптоаналитическую атаку, а только некоторые гипотетические дифференциальные характеристики: «Но даже с теоретической точки зрения Twofish даже отдаленно не взломан. С момента публикации в 2000 году эти результаты не были расширены». [7]
{{cite journal}}
: Цитировать журнал требует |journal=
( помощь ){{cite journal}}
: Цитировать журнал требует |journal=
( помощь ){{cite journal}}
: Цитировать журнал требует |journal=
( помощь ){{cite journal}}
: Цитировать журнал требует |journal=
( помощь ){{cite journal}}
: Цитировать журнал требует |journal=
( помощь )