Кто владеет информацией — тот владеет миром.

Ротшильд

Пока другие только пытаются понять законы рынка, используй их!

Терморектальный криптоанализTM



Алгоритмы Twofish и Twofish-FK

Алгоритм Twofish разработан коллективом известных криптологов под руководством Брюса Шнайера — автора множества работ в области криптологии, разработчика известного алгоритма шифрования Blowfish и основателя американской компании Counterpane Systems (http://www.counterpane.com), являющейся одним из мировых лидеров в области разработки средств криптографической защиты информации. Кроме него, в разработке алгоритма принимали участие Джон Келси, Крис Холл и Нильс Фергюсон из той же компании Counterpane Systems, а также Дуг Уайтинг (Doug Whiting) из Hifn Incorporated (разработка аппаратных средств защиты интернет-коммуникаций, http://www.hifn.com) и Дэвид Вагнер из Университета Беркли (http://www.berkeley.edu).
Структура алгоритма
Алгоритм Twofish разбивает шифруемые данные на четыре 32-битных субблока (обозначим их А, 5, С, D), над которыми производится 16 раундов преобразований, в каждом из которых выполняются следующие операции:
Содержимое субблока В циклически сдвигается влево на 8 битов.
Процедура расширения ключа
Процедура расширения ключа формирует 40 32-битных подключей для использования в 16 раундах алгоритма и для выполнения операций отбеливания. Кроме того, на основе ключа шифрования вычисляются таблицы замен S0...S3.
Как и Serpent, алгоритм Twofish использует ключи шифрования любого размера до 256 битов включительно. Однако дополнение ключа выполняется несколько иначе: исходный ключ, при необходимости, дополняется нулевыми битами до ближайшего стандартного размера, т. е. до 128, 192 или 256 битов. Процедура расширения ключа обрабатывает дополненный таким образом ключ.
Осталось описать зависимость от ключа таблиц замен S0...S3. Фактически в алгоритме шифрования вместо описанной выше функции применяется функция, использующая в качестве входного значения 32-битный субблок А или В, а в качестве входного массива— описанный ранее массив V. Таким образом, замена выполняется на основе тех же таблиц г0...г3, которые используются в процедуре расширения ключа.
Видно, что процедура расширения ключа является сложной и занимает несравнимо больше времени, чем шифрование одного блока данных. Авторы алгоритма в его спецификации описали несколько возможных вариан-тов оптимизации процедуры расширения ключа, один из которых можно выбрать в конкретной реализации алгоритма, учитывая следующие параметры:
доступный объем энергонезависимой и оперативной памяти;
предполагаемую частоту смены ключа при шифровании данных;
требования к скорости шифрования блоков данных.
Общий принцип оптимизации состоит в поисках требуемого компромисса между скоростью шифрования и временем выполнения процедуры расширения ключа: чем быстрее нужно шифровать, тем дольше будет выполняться расширение ключа, и наоборот.

Остапенко Денис aka Sharp, 2006

Соглашение о приватности информации

 

Hosted by uCoz