Алгоритм шифрования данных IDEA
Алгоритм IDEA (International Data Encryption Algorithm) является блочным шифром. Он оперирует 64-битовыми блоками открытого текста. Несомненным достоинством алгоритма IDEA является то, что его ключ имеет длину 128 бит. Один и тот же алгоритм используется и для шифрования, и для расшифрования.
Первая версия алгоритма IDEA была предложена в 1990 г., ее авторы – Х.Лей и Дж.Мэсси. Первоначальное название алгоритма PES (Proposed Encryption Standard). Улучшенный вариант этого алгоритма, разработанный в 1991 г., получил название IPES (Improved Proposed Encryption Standard). В 1992 г. IPES изменил свое имя на IDEA. Как и большинство других блочных шифров, алгоритм IDEA использует при шифровании процессы смешивания и рассеивания, причем все процессы легко реализуются аппаратными и программными средствами.
В алгоритме IDEA используются следующие математические операции:
· поразрядное сложение по модулю 2 (операция "исключающее ИЛИ"); операция обозначается как ;
· сложение беззнаковых целых по модулю 216 (модуль 65536); операция обозначается как ⊞ ;
· умножение целых по модулю (216+1) (модуль 65537), рассматриваемых как беззнаковые целые, за исключением того, что блок из 16 нулей рассматривается как 216; операция обозначается как ⊙.
Все операции выполняются над 16-битовыми субблоками.
Эти три операции несовместимы в том смысле, что:
· никакая пара из этих трех операций не удовлетворяет ассоциативному закону,
например a ⊞ (b c) (a ⊞ b) c;
· никакая пара из этих трех операций не удовлетворяет дистрибутивному закону,
например a ⊞ (b⊙ c) (a ⊞ b)⊙ (a ⊞ c).
Комбинирование этих трех операций обеспечивает комплексное преобразование входа, существенно затрудняя крипто-анализ IDEA по сравнению с DES, который базируется исключительно на операции "исключающее ИЛИ".
Общая схема алгоритма IDEA приведена на рис.3.11. 64-битовый блок данных делится на четыре 16-битовых субблока. Эти четыре субблока становятся входом в первый цикл алгоритма. Всего выполняется восемь циклов. Между циклами второй и третий субблоки меняются местами. В каждом цикле имеет место следующая последовательность операций:
(1) | ⊙ | – | умножение субблока Х1 и первого подключа. |
(2) | ⊞ | – | сложение субблока Х2 и второго подключа. |
(3) | ⊞ | – | сложение субблока Х3 и третьего подключа. |
(4) | ⊙ | – | умножение субблока Х4 и четвертого подключа. |
(5) | | – | сложение результатов шагов (1) и (3). |
(6) | | – | сложение результатов шагов (2) и (4). |
(7) | ⊙ | – | умножение результата шага (5) и пятого подключа. |
(8) | ⊞ | – | сложение результатов шагов (6) и (7). |
(9) | ⊙ | – | умножение результата шага (8) с шестым подключом. |
(10) | ⊞ | – | сложение результатов шагов (7) и (9). |
(11) | | – | сложение результатов шагов (1) и (9). |
(12) | | – | сложение результатов шагов (3) и (9). |
(13) | | – | сложение результатов шагов (2) и (10). |
(14) | | – | сложение результатов шагов (4) и (10). |
Выходом цикла являются четыре субблока, которые получают как результаты выполнения шагов (11), (12), (13) и (14). В завершение цикла переставляют местами два внутренних субблока (за исключением последнего цикла), и в результате формируется вход для следующего цикла.
Обозначения:
Xi – 16-битовый субблок открытого текста, i= 1…4
Yi – 16-битовый субблок шифртекста, i= 1…4
Zj(r) – 16-битовый подключ (субблок ключа), j= 1…6, r= 1…8
– поразрядное суммирование по модулю 2 16-битовых субблоков
– сложение по модулю 216 16-битовых целых
– умножение по модулю 216 16-битовых целых (с нулевым субблоком,
соответствующим 216)
Рисунок 3.11 – Схема алгоритма IDEA (режим шифрования)
После восьмого цикла осуществляют заключительное преобразование выхода:
(1) | ⊙ | – | умножение субблока Х1 и первого подключа. |
(2) | ⊞ | – | сложение субблока Х2 и второго подключа. |
(3) | ⊞ | – | сложение субблока Х3 и третьего подключа. |
(4) | ⊙ | – | умножение субблока Х4 и четвертого подключа. |
Наконец, эти результирующие четыре субблока Y1…Y4 вновь объединяют для получения блока шифртекста.
Создание подключей Zj также относительно несложно. Алгоритм использует всего 52 подключа (по шесть для каждого из восьми циклов и еще четыре для преобразования выхода). Сначала 128-битовый ключ делят на восемь 16-битовых подключей. Это – первые восемь подключей для алгоритма (шесть подключей – для первого цикла и первые два подключа – для второго цикла). Затем 128-битовый ключ циклически сдвигается влево на 25 бит и снова делится на восемь подключей. Первые четыре из них используют во втором цикле; последние четыре – в третьем цикле. Ключ снова циклически сдвигается влево еще на 25 бит для получения следующих восьми подключей и т.д., пока выполнение алгоритма не завершится.
Расшифрование осуществляют аналогичным образом, за исключением того, что порядок использования подключей становится обратным, причем ряд значений подключей заменяется на обратные значения. Подключи расшифрования являются в основном либо аддитивными, либо мультипликативными обратными величинами подключей шифрования (табл.3.10).
Для реализации алгоритма IDEA было принято предположение, что нулевой субблок равен 216= –1; при этом мультипликативная обратная величина от 0 равна 0 [121]. Вычисление значений мультипликативных обратных величин требует некоторых затрат, но это приходится делать только один раз для каждого ключа расшифрования.
Алгоритм IDEA может работать в любом режиме блочного шифра, предусмотренном для алгоритма DES. Алгоритм IDEA обладает рядом преимуществ перед алгоритмом DES. Он значительно безопаснее алгоритма DES, поскольку 128-битовый ключ алгоритма IDEA вдвое больше ключа DES. Внутренняя структура алгоритма IDEA обеспечивает лучшую устойчивость к криптоанализу. Существующие программные реализации алгоритма IDEA примерно вдвое быстрее реализаций алгоритма DES. Алгоритм IDEA шифрует данные
Таблица 3.10