Алгоритм шифрования данных IDEA
Алгоритм IDEA (International Data Encryption Algorithm) является блочным шифром. Он оперирует 64-битовыми блоками открытого текста. Его ключ имеет длину 128 бит. Один и тот же алгоритм используется и для шифрования, и для расшифрования. В алгоритме 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 приведена на рис. 23, 64-битовый блок данных делится на четыре 16-битовых субблока. Эти четыре субблока становятся входом в первый цикл алгоритма. Всего выполняется восемь циклов. Между циклами второй и третий субблоки меняются местами. В каждом цикле имеет место следующая последовательность операций:
Выходом цикла являются четыре субблока, которые получают как результаты выполнения шагов (11), (12), (13) и (14). В завершение цикла переставляют местами два внутренних субблока (за исключением последнего цикла), и в результате формируется вход для следующего цикла.
Рис.23. Схема алгоритма IDEA (режим шифрования)
Обозначения: 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) После восьмого цикла осуществляют заключительное преобразование выхода:
Наконец, эти результирующие четыре субблока Y1…Y4 вновь объединяют для получения блока шифртекста. Создание подключей Zj также относительно несложно. Алгоритм использует всего 52 подключа (по шесть для каждого из восьми циклов и еще четыре для преобразования выхода). Сначала 128-битовый ключ делят на восемь 16-битовых подключей. Это – первые восемь подключей для алгоритма (шесть подключей – для первого цикла и первые два подключа – для второго цикла). Затем 128-битовый ключ циклически сдвигается влево на 25 бит и снова делится на восемь подключей. Первые четыре из них используют во втором цикле; последние четыре – в третьем цикле. Ключ снова циклически сдвигается влево еще на 25 бит для получения следующих восьми подключей и т.д., пока выполнение алгоритма не завершится.
Расшифрование осуществляют аналогичным образом, за исключением того, что порядок использования подключей становится обратным, причем ряд значений подключей заменяется на обратные значения. Подключи расшифрования являются, в основном, либо аддитивными, либо мультипликативными обратными величинами подключей шифрования (табл. 5.10). Таблица 5.10
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|