Threefish

Threefish
Threefish
Создатель:

Брюс Шнайер

Создан:

2008 г.

Опубликован:

2008 г.

Размер ключа:

256/512/1024 бит

Размер блока:

256/512/1024 бит

Число раундов:

72 (80 при ключе 1024 бит)

Тип:

Подстановочно-перестановочная сеть

Threefish — в криптографии симметричный блочный криптоалгоритм, разработанный автором Blowfish и Twofish, американским криптографом Брюсом Шнайером в 2008-м году для использования в хэш-функции Skein и в качестве универсальной замены существующим блочным шифрам. Основными принципами разработки шифра были: минимальное использование памяти, необходимая для использования в хэш-функции устойчивость к атакам, простота реализации и оптимизация под 64-разрядные процессоры.

Содержание

Структура алгоритма

Четыре из 72 раундов алгоритма Threefish-512

Threefish имеет очень простую структуру и может быть использован для замены алгоритмов блочного шифрования, будучи быстрым и гибким шифром, работающим в произвольном режиме шифрования. Threefish S-блоки не использует, основан на комбинации инструкций исключающего или, сложения и циклического сдвига.

Как и AES, шифр реализован в виде подстановочно-перестановочной сети на обратимых операциях, не являясь шифром сети Фейстеля.

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

Как результат мнения авторов, что несколько сложных раундов зачастую хуже применения большого числа простых раундов, алгоритм имеет нетрадиционно большое число раундов - 72 или 80 при ключе 1024 бит, однако, по заявлению создателей, его скоростные характеристики опережают AES примерно в два раза. Стоит заметить, что по причине 64-битной структуры шифра, данное заявление имеет местно лишь на 64-разрядной архитектуре. Поэтому, Threefish, как и Skein[1], основанный на нём, на 32-разрядных процессорах показывает значительно худшие результаты чем на «родном» оборудовании.

Ядром шифра является простая функция «MIX», преобразующая два 64-битных беззнаковых числа, в процессе которой происходит сложение, циклический сдвиг (ROL/ROR), и сложение по модулю 2 (XOR).

Ниже представлен код MIX-функции для Threefish-1024[2]:

// Константы для циклического сдвига
 
int R16[8][8] =
{
   { 55, 43, 37, 40, 16, 22, 38, 12 },
   { 25, 25, 46, 13, 14, 13, 52, 57 },
   { 33,  8, 18, 57, 21, 12, 32, 54 },
   { 34, 43, 25, 60, 44,  9, 59, 34 },
   { 28,  7, 47, 48, 51,  9, 35, 41 },
   { 17,  6, 18, 25, 43, 42, 40, 15 },
   { 58,  7, 32, 45, 19, 18,  2, 56 },
   { 47, 49, 27, 58, 37, 48, 53, 56 },
};
 
// d - раунд, j - индекс в таблице циклического сдвига
 
void mix(int j, int d)
{
   usigned long long rotl;
 
   y[0]  = x[0] + x[1];
   rotl  = R16[d % 8][j];
   y[1]  = (x[1] << rotl) | (x[1] >> (64 - rotl));
   y[1] ^= y[0];
}

Процедура расшифрования обратна процедуре зашифрования и содержит обратную функцию DEMIX.

Каждый из 72 раундов Threefish-256 и Threefish-512 имеет четыре MIX преобразования, Threefish-1024 - восемь обращений к MIX функции.

Безопасность

По заявлению авторов, алгоритм имеет более высокий уровень безопасности, чем AES. Существует атака на 25 из 72 раундов Threefish, в то время как для AES - на 6 из 10. Threefish имеет показатель фактора безопасности 2.9, в свою очередь, AES всего 1.7[3]

Для достижения полной диффузии, шифру Threefish-256 достаточно 9 раундов, Threefish-512 - 10 раундов и Threefish-1024 - 11 раундов. Исходя из этого, 72 и 80 раундов соответственно в среднем, обеспечат лучшие результаты, чем существующие шифры.[4]

В то же время, алгоритм имеет гораздо более простую структуру и функцию преобразования, однако выполнение 72-80 раундов, по мнению исследователей, обеспечивает необходимую стойкость. Применяемый размер ключа от 256 до 1024 бит сводит на нет возможность полного перебора паролей при так называемой атаке грубой силой (brute force attack) на современном оборудовании.

Ссылки

См. также

Skein - хэш-функция, основанная на Threefish

Примечания

  1. Skein опережает в два раза SHA-512 и входит в пятерку наиболее быстрых хэш-функций-кандидатов SHA-3 на 64-битной архитектуре
  2. Исходный код Threefish-1024 на языке C и на языке Delphi
  3. Информация по шифру в статье „The Skein Hash Function“
  4. The Skein Hash Function Family  (англ.)

Wikimedia Foundation. 2010.

Игры ⚽ Нужно решить контрольную?

Полезное


Смотреть что такое "Threefish" в других словарях:

  • Treefish — Threefish Создатель: Брюс Шнайер Создан: 2008 г. Опубликован: 2008 г. Размер ключа: 256/512/1024 бит Размер блока: 256/512/1024 бит Число раундов: 72 (80 при ключе 1024 бит) Тип: Подстановочно перестановочная сеть Threefish в криптографии… …   Википедия

  • Шнайер, Брюс — Брюс Шнайер Bruce Schneier …   Википедия

  • Skein — Криптографическая хеш функция Название Skein Создан 2008 Опубликован 2008 Размер хеша переменный, 0<d≤264 1 Число раундов переменное, 72 для 256/512 бит выхода, 80 для 1024 бит Тип хеш функция …   Википедия

  • Three Fish (album) — Infobox Album | Name = Three Fish Type = studio Artist = Three Fish Released = June 11, 1996 Recorded = August 1994 – January 1996 at John Stu s Place and Avast Recording Co., Seattle, Washington Length = 58:05 Label = Epic Producer = John… …   Wikipedia

  • Шифрование — Шифрование  преобразование информации в целях сокрытия от неавторизованных лиц, с предоставлением, в это же время, авторизованным пользователям доступа к ней. Главным образом, шифрование служит задаче соблюдения конфиденциальности… …   Википедия

  • SP-сеть — (Substitution Permutation network, подстановочно перестановочная сеть) разновидность блочного шифра, предложенная в 1971 году Хорстом Фейстелем. В простейшем варианте представляет собой «сэндвич» из слоёв двух типов, используемых многократно по… …   Википедия

  • Block cipher — In cryptography, a block cipher is a symmetric key cipher operating on fixed length groups of bits, called blocks, with an unvarying transformation. A block cipher encryption algorithm might take (for example) a 128 bit block of plaintext as… …   Wikipedia

  • Data Encryption Standard — The Feistel function (F function) of DES General Designers IBM First publis …   Wikipedia

  • Differential cryptanalysis — is a general form of cryptanalysis applicable primarily to block ciphers, but also to stream ciphers and cryptographic hash functions. In the broadest sense, it is the study of how differences in an input can affect the resultant difference at… …   Wikipedia

  • International Data Encryption Algorithm — IDEA An encryption round of IDEA General Designers Xuejia Lai and James Massey …   Wikipedia


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»