Симметричные криптосистемы. Алгоритм IDEA.
Алгоритм IDEA (International Data Encryption Algorithm) относится к классу симметричных шифраторов. Данный алгоритм был разработан в 1990 г. в качестве альтернативы алгоритму DES (Data Encryption Standard). В основе алгоритма лежит идея смешанного преобразования, которое случайным образом равномерно распределяет исходный текст по всему пространству шифротекста.
Смешанные преобразования реализуются при помощи перемежающихся последовательностей замен и простых операций перестановок. Преобразование данных производится по блокам, размер которых равен 64 битам. Длина ключа в алгоритме IDEA составляет 128 бит.
Каждый 64-битный блок рассматривается как четыре 16-битных подблока, которые преобразуются с использованием следующих целочисленных операций:
- Побитное сложение по модулю 2 (XOR) двух 16-битных операндов,
которое будем обозначать как .
- Сложение двух целых 16-битных операндов по модулю 216, обозначенное как .
- Умножение двух чисел без знака по модулю . Результат операции умножения усекается до длины в 16 бит. При вычислении данной операции существует исключение для кода со всеми нулями, который при умножении рассматривается как число . Данную операцию будем обозначать как .
Процедура шифрования состоит из 8-ми одинаковых раундов и дополнительного 9-го выходного раунда (рисунок 9.10, а).
На выходе 9-го раунда формируется содержимое четырёх 16-битных подблоков, образующих блок шифротекста.
Основной частью каждого раунда является мультипликативно-аддитивная структура (рисунок 9.10, б).
Здесь F1 и F2 – 16-битные значения, полученные из открытого текста, Z5 и Z6 – 16-битные подключи.
Рисунок 9.10 - Алгоритм IDEA: а) схема процедуры шифрования;
б) мультипликативно-аддитивная структура
Все операнды, участвующие в выполнении процедуры шифрования, имеют размерность 16 бит.
На рисунке 9.11 приведена схема выполнения первого раунда алгоритма IDEA.
Рисунок 9.11 – первый раунд шифрования алгоритма IDEA
Данные, получаемые на выходе i-го раунда шифрования, подаются на вход (i+1)-го раунда. Входными данными 1-го раунда являются четыре 16-битных подблока 64-битного блока исходного текста.
Схема выполнения 9-го раунда шифрования приведена на рисунке 9.12.
Рисунок 9.12 – Девятый раунд шифрования алгоритма IDEA
Следует обратить внимание на то, что 2-й и 3-й подблоки промежуточного значения меняются местами после выполнения всех раундов кроме восьмого.
На каждом из девяти раундов используются значения 16-битных итерационных ключей , которые получаются путём преобразования исходного 128-битного ключа K.
Первые 8 итерационных ключей берутся как восемь последовательных частей 128-битного ключа. Для получения следующих 8-ми итерационных ключей 128-битное значение ключа циклически сдвигается на 25 бит влево и ключи вновь берутся как его 8 последовательных частей. Данный процесс повторяется до тех пор, пока не будут получены все 52 итерационных ключа.
Процедура расшифрования состоит из тех же девяти раундов, но только выполняемых с использованием иных значений итерационных ключей. Итерационные ключи расшифрования получают из итерационных ключей шифрования на основе таблицы соответствия (таблица 9.20).
Таблица 9.20 – Значения ключей, используемых в алгоритме IDEA для
дешифрования
При этом выполняются следующие соотношения:
(9.7) | |
(9.8) |
Таким образом, для ключа значение, обозначаемое как , является аддитивным инверсным по модулю , а значение, обозначаемое как – мультипликативным инверсным по модулю .
Порядок использования итерационных ключей при шифровании показан
на рисунке 9.13.
При выполнении расшифрования раунды алгоритма выполняются в таком же порядке. На вход первого раунда подаётся четыре 16-битных подблока 64-битного блока шифротекста. Значения, полученные после выполнения выходного раунда, являются подблоками 64-битного блока исходного текста. Отличие от процедуры шифрования заключается в том, что вместо ключей используются ключи .
Рисунок 9.13 - Порядок использования итерационных ключей алгоритма IDEA
Дата добавления: 2016-02-04; просмотров: 1084;