Алгоритм IDEA (International Data Encryption Algorithm) относится к классу симметричных шифраторов. Данный алгоритм был разработан в 1990 г. в качестве альтернативы алгоритму DES (Data Encryption Standard). В основе алгоритма лежит идея смешанного преобразования, которое случайным образом равномерно распределяет исходный текст по всему пространству шифротекста.
Смешанные преобразования реализуются при помощи перемежающихся последовательностей замен и простых операций перестановок.
Преобразование данных производится по блокам, размер которых равен 64 битам. Длина ключа в алгоритме IDEA составляет 128 бит.
Каждый 64-битный блок рассматривается как четыре 16-битных подблока, которые преобразуются с использованием следующих целочисленных операций.
1. Побитное сложение по модулю 2 (XOR) двух 16-битных операндов, которое будем обозначать как ..
2. Сложение двух целых 16-битных операндов по модулю 216, обозначенное как .
3. Умножение двух чисел без знака по модулю . Результат операции умножения усекается до длины в 16 бит. При вычислении данной операции существует исключение для кода со всеми нулями, который при умножении рассматривается как число . Данную операцию будем обозначать как .
Процедура шифрования состоит из восьми одинаковых раундов и дополнительного 9-го выходного раунда (рис. 8, а).
Рис. 8 . Алгоритм IDEA:
а – схема процедуры шифрования; б – мультипликативно-аддитивная структура
На выходе 9-го раунда формируется содержимое четырёх 16-битных подблоков, образующих блок шифротекста.
Основной частью каждого раунда является мультипликативно-аддитивная структура (рис. 8, б).
Здесь F1и F2 – 16-битные значения, полученные из открытого текста,
Z5и Z6 – 16-битные подключи.
Все операнды, участвующие в выполнении процедуры шифрования, имеют размерность 16 бит.
На рис. 9 приведена схема выполнения первого раунда алгоритма IDEA.
Рис. 9 . Первый раунд шифрования алгоритма IDEA
Данные, получаемые на выходе i-го раунда шифрования, подаются на вход (i+1)-го раунда. Входными данными 1-го раунда являются четыре
16-битных подблока (X1, X2, X3, X4) 64-битного блока исходного текста.
Схема выполнения 9-го раунда шифрования приведена на рис. 10.
Рис. 10 . Девятый раунд шифрования алгоритма IDEA
Следует обратить внимание на то, что второй и третий подблоки промежуточного значения W меняются местами после выполнения каждого раунда шифрования кроме восьмого.
На каждом из девяти раундов используются значения 16-битных итерационных ключей Zi, которые получаются путём преобразования исходного 128-битного ключа K.
Первые 8 итерационных ключей Z1…Z8 берутся как восемь последовательных частей 128-битного ключа. Для получения следующих восьми итерационных ключей 128-битное значение ключа K циклически сдвигается на
25 бит влево и ключи Z9…Z16 вновь берутся как его 8 последовательных частей. Данный процесс повторяется до тех пор, пока не будут получены все 52 итерационных ключа.
Процедура дешифрования состоит из тех же девяти раундов, но только выполняемых с использованием иных значений итерационных ключей. Итерационные ключи дешифрования получают из итерационных ключей шифрования на основе таблицы соответствия (табл. 3).
Таблица 3
Значения ключей, используемых в алгоритме IDEA
для дешифрования
При этом выполняются следующие соотношения:
(9)
(10)
Таким образом, для ключа Zj значение, обозначаемое как –Zj, является аддитивным инверсным по модулю , а значение, обозначаемое как
– мультипликативным инверсным по модулю +1.
Порядок использования итерационных ключей при шифровании показан на рис. 11.
Рис. 11 . Порядок использования итерационных ключей алгоритма IDEA
При выполнении дешифрования раунды алгоритма выполняются в таком же порядке. На вход первого раунда подаётся четыре 16-битных подблока 64-битного блока шифротекста. Значения, полученные после выполнения выходного раунда, являются подблоками 64-битного блока исходного текста. Отличие от процедуры шифрования заключается в том, что вместо ключей Z1...Z52 используются ключи U1...U52.
Автор: Ярмолик, В. Н.