Следующие характеристики IDEA характеризуют его криптографическую стойкость:
В IDEA два последних пункта выполняются с помощью трех операций. Это отличает его от DES, где все постороено на использовании операции XOR и маленьких нелинейных S-boxes.
Каждая операция выполняется над двумя 16-битными входами и создает один 16-битный выход. Этими операциями являются:
Эти три операции являются несовместимыми в том смысле, что:
a • (b + c) <> (a • b) + (a • c)
Использование комбинации из этих трех операций обеспечивает комплексную трансформацию входа, делая криптоанализ более трудным, чем в таком алгоритме как DES, основанном исключительно на функции XOR.
Рассмотрим общую схему шифрования IDEA. Как и в любом алгоритме шифрования, здесь существует два входа: незашифрованный блок и ключ. В данном случае незашифрованный блок имеет длину 64 бита, ключ имеет длину 128 бит.
Алгоритм IDEA состоит из восьми раундов, за которыми следует заключительное преобразование. Алгоритм разделяет блок на четыре 16-битных подблока. Каждый раунд получает на входе четыре 16-битных подблока и создает четыре 16-битных выходных подблока. Заключительное преобразование также получает на входе четыре 16-битных подблока и создает четыре 16-битных подблока. Каждый раунд использует шесть 16-битных ключей, заключительное преобразование использует четыре подключа, т.е. всего в алгоритме используется 52 подключа.
Рис. 3.1. Алгоритм IDEA
Рассмотрим последовательность преобразований отдельного раунда.
Одним из основных элементов алгоритма, обеспечивающих диффузию, является структура, называемая МА (умножение/сложение):
Рис. 3.2. Структура МА (умножение/сложение)
На вход этой структуре подаются два 16-битных значения и два 16-битных подключа, на выходе создаются два 16-битных значения. Исчерпывающая компьютерная проверка показывает, что каждый бит выхода этой структуры зависит от каждого бита входов незашифрованного блока и от каждого бита подключей. Данная структура повторяется в алгоритме восемь раз, обеспечивая высокоэффективную диффузию.
Раунд начинается с преобразования, которое комбинирует четыре входных подблока с четырьмя подключами, используя операции сложения и умножения. Четыре выходных блока этого преобразования комбинируются, используя операцию XOR для формирования двух 16-битных блоков, которые являются входами МА структуры. Кроме того, МА структура имеет на входе еще два подключа и создает два 16-битных выхода.
Рис. 3.3. I-ый раунд IDEA
В заключении четыре выходных подблока первого преобразования комбинируются с двумя выходными подблоками МА структуры, используя XOR для создания четырех выходных подблоков данной итерации. Заметим, что два выхода, которые частично создаются вторым и третьим входами (Х2 и Х3), меняются местами для создания второго и третьего выходов (W12 и W13). Это увеличивает перемешивание битов и делает алгоритм более стойким для дифференциального криптоанализа.
Рассмотрим девятый раунд алгоритма, обозначенный как заключительное преобразование. Это та же структура, что была описана выше. Единственная разница состоит в том, что второй и третий входы меняются местами. Это сделано для того, чтобы дешифрование имело ту же структуру, что и шифрование. Заметим, что девятая стадия требует только четыре входных подключа, в то время как для первых восьми стадий для каждой из них необходимо шесть входных подключей.
Рис. 3.4. Заключительное преобразование
Пятьдесят два 16-битных подключа создаются из 128-битного ключа шифрования следующим образом. Первые восемь подключей, которые обозначим как Z1, Z2, ..., Z8, получаются непосредственно из ключа, при этом Z1 равен первым 16 битам, Z2 равен следующим 16 битам и т.д. Затем происходит циклический сдвиг ключа влево на 25 битов, и создаются следующие восемь подключей. Эта поцедура повторяется до тех пор, пока не будут созданы все 52 подключа.
Заметим, что каждый первый подключ раунда получен из своего подмножества битов ключа. Если весь ключ обозначить как Z [1..128], то первыми ключами в восьми раундах будут:
Z1 = Z [1..16] Z25 = Z [76..91]Z7 = Z [97..112] Z31 = Z [44..59]Z13 = Z [90..105] Z37 = Z [37..52]Z19 = Z [83..98] Z43 = Z [30..45]Хотя на каждом раунде за исключением первого и восьмого используются только 96 битов подключа, множество битов ключа на каждой итерации не пересекаются, и не существует отношения простого сдвига между подключами разных раундов. Это происходит потому, что на каждом раунде используется только шесть подключей, в то время как при каждой ротации ключа получается восемь подключей.