Генерация подключей Blowfish

Подключи вычисляются с использованием самого алгоритма Blowfish.

  1. Инициализировать первый Р-массив и четыре S-boxes фиксированной строкой.
  2. Выполнить операцию XOR P1 с первыми 32 битами ключа, операцию XOR P2 со вторыми 32 битами ключа и т.д. Повторять цикл до тех пор, пока весь Р-массив не будет побитово сложен со всеми битами ключа. Для коротких ключей выполняется конкатенация ключа с самим собой.
  3. Зашифровать нулевую строку алгоритмом Blowfish, используя подключи (1) и (2).
  4. Заменить Р1 и Р2 выходом, полученным на шаге (3).
  5. Зашифровать выход шага (3), используя алгоритм Blowfish с модифицированными подключами.
  6. Заменить Р3 и Р4 выходом, полученным на шаге (5).
  7. Продолжить процесс, заменяя все элементы Р-массива, а затем все четыре S-boxes, выходами соответствующим образом модифицированного алгоритма Blowfish.

Для создания всех подключей требуется 521 итерация.

IDEA
Характеристики:

• Сеть Фейстеля, 16 итераций.

• Длина блока 64 бит.

• Длина ключа 128 бит.

 

Криптографическая стойкость IDEA

Длина блока: длина блока должна быть достаточной, чтобы скрыть все статистические характеристики исходного сообщения. С другой стороны, сложность реализации криптографической функции возрастает экспоненциально в соответствии с размером блока..

Длина ключа: длина ключа должна быть достаточно большой для того, чтобы предотвратить возможность простого перебора ключа. При длине ключа 128 бит IDEA считается достаточно безопасным.

Конфузия: зашифрованный текст должен зависеть от ключа сложным и запутанным способом.

Диффузия: каждый бит незашифрованного текста должен влиять на каждый бит зашифрованного текста. Распространение одного незашифрованного бита на большое количество зашифрованных битов скрывает статистическую структуру незашифрованного текста. Определить, как статистические характеристики зашифрованного текста зависят от статистических характеристик незашифрованного текста, должно быть непросто. IDEA с этой точки зрения является очень эффективным алгоритмом

Операции IDEA

Выполняются над двумя 16-битными входами и создает один 16-битный выход.

  1. Побитовое исключающее OR (Å).
  2. Сумма целых по модулю 216 (по модулю 65536), входы и выходы трактуются как беззнаковые 16-битные целые (+).
  3. Умножение целых по модулю 216 + 1 (по модулю 65537), при этом входы и выходы трактуются как беззнаковые 16-битные целые, за исключением того, что блок из одних нулей трактуется как 216 (•).

Эти три операции являются несовместимыми в том смысле, что:

• Не существует пары из трех операций, удовлетворяющих дистрибутивному закону. Например

a • (b + c) <> (a • b) + (a • c)

• Не существует пары из трех операций, удовлетворяющих ассоциативному закону. Например

a + (b Å c) <> (a + b) Å c

Использование комбинации из этих трех операций обеспечивает комплексную трансформацию входа, делая криптоанализ более трудным, чем в таком алгоритме как DES, основанном исключительно на функции XOR.

 

Шифрование IDEA

• Состоит из восьми раундов, за которыми следует заключительное преобразование.

• Разделяет блок на четыре 16-битных подблока.

• Каждый раунд получает на входе четыре 16-битных подблока и создает четыре 16-битных выходных подблока.

• Заключительное преобразование также получает на входе четыре 16-битных подблока и создает четыре 16-битных подблока.

• Каждый раунд использует шесть 16-битных ключей, заключительное преобразование использует четыре подключа, т.е. всего в алгоритме используется 52 подключа.

 

 

Шифрование IDEA.Общий алгоритм

Последовательность преобразований отдельного раунда

 

Структура МА (сложение/умножение).

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

• Раунд начинается с преобразования, которое комбинирует четыре входных подблока с четырьмя подключами, используя операции сложения и умножения.

• 4 выходных блока этого преобразования комбинируются, используя операцию XOR для формирования двух 16-битных блоков, которые являются входами МА структуры.

• Кроме того, МА структура имеет на входе еще два подключа и создает два 16-битных выхода.

• В заключение четыре выходных подблока первого преобразования комбинируются с двумя выходными подблоками МА структуры, используя XOR для создания четырех выходных подблоков данной итерации.

• Заметим, что два выхода, которые частично создаются вторым и третьим входами (Х2 и Х3), меняются местами для создания второго и третьего выходов (W12 и W13). Это увеличивает перемешивание битов и делает алгоритм более стойким для дифференциального криптоанализа.

 

 

1-й раунд IDEA

 

 

Заключительное преобразование IDEA