Описание IDEA

Схема IDEA представлена на Рис. 13-9. 64-битовый блок данных делится на четыре 16-битовых подблока: X1, X2, X3 и X4. Эти четыре подблока становятся входными данными для первого этапа алгоритма. Всего в алгоритме восемь этапов. На каждом этапе четыре подблока подвергаются операциям XOR, сложениям и умножениям друг с другом и с шестью 16-битовыми подключами. Между этапами обмениваются местами второй и третий подблоки. Наконец четыре подблока объединяются с четырьмя подключами в окончательном преобразовании. На каждом этапе события происходят в следующей последовательности:

  1. Перемножаются X1 и первый подключ.

  2. Складываются X2 и второй подключ.

  3. Складываются X3 и третий подключ.

  4. Перемножаются X4 и четвертый подключ.

  5. Выполняется XOR над результатами этапов (1) и (3).

  6. Выполняется XOR над результатами этапов (2) и (4).

  7. Перемножаются результаты этапа (5) и пятый подключ.

  8. Складываются результаты этапов (6) и (7).

  9. Перемножаются результаты этапа (8) и шестой подключ.

  10. Складываются результаты этапов (7) и (9).

  11. Выполняется XOR над результатами этапов (1) и (9).

  12. Выполняется XOR над результатами этапов (3) и (9).

  13. Выполняется XOR над результатами этапов (1) и (10).

  14. Выполняется XOR над результатами этапов (4) и (10).

[image]

Рис. 13-9. IDEA.

Выходом этапа являются четыре подблока - результаты действий (11), (12), (13) и (14). Поменяйте местами два внутренних подблока (но не в последнем этапе), и вы получите исходные данные для следующего этапа.

После восьмого этапа выполняется заключительное преобразование:

  1. Перемножаются Xl и первый подключ.

  2. Складываются X2 и второй подключ.

  3. Складываются X3 и третий подключ.

  4. Перемножаются X4 и четвертый подключ.

Наконец четыре подблока снова соединяются, образуя шифротекст.

Также несложно создавать подключи. Алгоритм использует 52 из них (шесть для каждого из восьми этапов и еще четыре для заключительного преобразования). Сначала 128-битовый ключ делится на восемь 16-битовых подключей. Это первые восемь подключей алгоритма (шесть для первого этапа и два - для второго). Затем ключ циклически сдвигается налево на 25 битов и снова делится на восемь подключей. Первые четыре используются на этапе 2, а оставшиеся четыре - на этапе 3. Ключ циклически сдвигается налево на 25 битов для получения следующих восьми подключей, и так до конца алгоритма.

Дешифрирование выполняется точно также за исключением того, что подключи инвертируются и слегка изменяются. Подключи при дешифрировании представляют собой обратные значения ключей шифрования по отношению к операциям либо сложения, либо умножения. (Для IDEA подблоки, состоящие из одних нулей, считаются равными 216 = -1 для умножения по модулю 216 + 1, следовательно, обратным значением 0 относительно умножения является 0.) Эти вычисления могут занять некоторое время, но их нужно выполнить один раз для каждого ключа дешифрирования. В Табл. 13-4 представлены подключи шифрования и соответствующие подключи дешифрирования.

Табл. 13-4.
Подключи шифрования и дешифрирования IDEA

Этап

Подключи шифрования

Подключи дешифрирования

1

Z1(1)

Z2(1)

Z3(1)

Z4(1)

Z5(1)

Z6(1)

Z1(9)-1

-Z2(9)

-Z3(9)

Z4(9)-1

Z5(8)

Z6(8)

2

Z1(2)

Z2(2)

Z3(2)

Z4(2)

Z5(2)

Z6(2)

Z1(8)-1

-Z2(8)

-Z3(8)

Z4(8)-1

Z5(7)

Z6(7)

3

Z1(3)

Z2(3)

Z3(3)

Z4(3)

Z5(3)

Z6(3)

Z1(7)-1

-Z2(7)

-Z3(7)

Z4(7)-1

Z5(6)

Z6(6)

4

Z1(4)

Z2(4)

Z3(4)

Z4(4)

Z5(4)

Z6(4)

Z1(6)-1

-Z2(6)

-Z3(6)

Z4(6)-1

Z5(5)

Z6(5)

5

Z1(5)

Z2(5)

Z3(5)

Z4(5)

Z5(5)

Z6(5)

Z1(5)-1

-Z2(5)

-Z3(5)

Z4(5)-1

Z5(4)

Z6(4)

6

Z1(6)

Z2(6)

Z3(6)

Z4(6)

Z5(6)

Z6(6)

Z1(4)-1

-Z2(4)

-Z3(4)

Z4(4)-1

Z5(3)

Z6(3)

7

Z1(7)

Z2(7)

Z3(7)

Z4(7)

Z5(7)

Z6(7)

Z1(3)-1

-Z2(3)

-Z3(3)

Z4(3)-1

Z5(2)

Z6(2)

8

Z1(8)

Z2(8)

Z3(8)

Z4(8)

Z5(8)

Z6(8)

Z1(2)-1

-Z2(2)

-Z3(2)

Z4(2)-1

Z5(1)

Z6(1)

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

Z1(9)

Z2(9)

Z3(9)

Z4(9)

Z1(1)-1

-Z2(1)

-Z3(1)

Z4(1)-1