Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

Fugue - это криптографическая хеш-функция, представленная IBM на конкурс хеш-функций NIST . Его спроектировали Шай Халеви , Уильям Э. Холл и Чаранджит С. Ютла. Fugue берет сообщение произвольной длины и сжимает его до фиксированной битовой длины (224, 256, 384 или 512 бит). Хеш-функции для разной длины вывода называются Fugue-224, Fugue-256, Fugue-384 и Fugue-512. Авторы также описывают параметризованную версию Fugue. Слабая версия Fugue-256 также описывается с помощью этой параметризованной версии.

Смысл продажи Fugue - это заявленное авторами доказательство того, что широкий спектр текущих стратегий атак, основанных на дифференциальном криптоанализе, не может быть эффективным против Fugue. Также утверждается, что он может конкурировать с хэш-функцией NIST SHA-256 как по программной, так и по аппаратной эффективности, обеспечивая до 36,2 цикла на байт на Intel Family 6 Model 15 Xeon 5150 и до 25 циклов на байт на Intel Core. 2 процессора T7700. На 45-нм процессорах Core2, например T9400, Fugue-256 работает с 16 циклами на байт с использованием инструкций SSE4.1. На более новых архитектурах Westmere (32 нм), например Core i5, Fugue-256 работает со скоростью 14 циклов на байт.

Дизайн Fugue начинается с хэш-функции Grindahl , и, как и Grindahl, использует S-блок из AES , но он заменяет матрицу смешивания столбцов 4 × 4 операцией «суперсмешивания» 16 × 16, что значительно улучшает распространение. Однако операция "супер-микширования" лишь немного дороже в вычислительном отношении для реализации, чем стратегия микширования AES.

SuperMix [ править ]

224- и 256-битные варианты Fugue работают с состоянием, которое может быть представлено в виде матрицы 4 на 30 байтов без знака, тогда как варианты 384 и 512 бит работают с матрицей 4 на 36 байтов. В этом состоянии можно выполнять операции на месте.

Ядро алгоритма, известное как «преобразование SuperMix», принимает на вход матрицу 4 × 4 и возвращает новую матрицу 4x4. Входные данные SuperMix - это просто первые четыре столбца текущего состояния из 30 столбцов, а выходные данные используются для замены этой же области состояния (т.е. SuperMix влияет только на матрицу 4x4 в заголовке состояния).

Функцию SuperMix можно определить как:

куда:

;
представляет собой матрицу байтов 4x4 (т. е. матрицу после подстановки S-блока ввода); и
является транспонированной М.

Преобразование принимает матрицу 4x4 и поворачивает -ю строку влево на байты, т.е.

Фуга 2.0 [ править ]

Fugue 2.0 - это усовершенствованная версия оригинальной Fugue, которая работает примерно в два раза быстрее, чем Fugue для 256-битного вывода. Разработчики заявляют о передовых доказательствах устойчивости к дифференциальным атакам на столкновение для этой улучшенной версии. Полную спецификацию можно найти по ссылке ниже.

Внешние ссылки [ править ]