Шифр IDEA


IDEA (англ. International Data Encryption Algorithm, международный алгоритм шифрования данных) — симметричный блочный алгоритм шифрования данных, запатентованный швейцарской фирмой Ascom. Известен тем, что применяется в пакете программ шифрования PGP и в его свободной альтернативе GnuPG. В ноябре 2000 года IDEA был представлен в качестве кандидата в проекте NESSIE в рамках программы Европейской Комиссии IST (англ. Information Societes Technology, информационные общественные технологии).
Описание
Так как IDEA использует 128-битный ключ и 64-битный размер блока, открытый текст разбивается на блоки по 64 бит. Если такое разбиение не возможно, используются различные режимы шифрования. Каждый исходный незашифрованный 64-битный блок делится на четыре подблока по 16 бит каждый, так как все алгебраические операции, использующиеся в процессе шифрования, совершаются над 16-битными числами. Для шифрования и расшифрования IDEA использует один и тот же алгоритм.
Фундаментальным нововведением в алгоритме является использование операций из разных алгебраических групп, а именно:
сложение по модулю 216
умножение по модулю 216 + 1
Побитовое исключающее ИЛИ (XOR).

Эти три операции несовместимы в том смысле, что:
Никакие две из них не удовлетворяют дистрибутивному закону
Никакие две из них не удовлетворяют ассоциативному закону
Шифрование

Структура алгоритма IDEA показана на рисунке.

Процесс шифрования состоит из восьми одинаковых раундов шифрования и одного выходного преобразования. Исходный незашифрованный текст делится на блоки по 64 бита. Каждый такой блок делится на четыре подблока по 16 бит каждый. На рисунке эти подблоки обозначены D1, D2, D3, D4. В каждом раунде используются свои подключи согласно таблице подключей. Над 16-битными подключами и подблоками незашифрованного текста производятся следующие операции:
умножение по модулю 216 + 1 = 65537, причем вместо нуля используется 216
сложение по модулю 216
побитовое исключающее ИЛИ

В конце каждого раунда шифрования имеется четыре 16-битных подблока, которые затем используются как входные подблоки для следующего раунда шифрования. Выходное преобразование представляет собой укороченный раунд, а именно, четыре 16-битных подблока на выходе восьмого раунда и четыре соответствующих подключа подвергаются операциям:
умножение по модулю 216 + 1
сложение по модулю 216

После выполнения выходного преобразования конкатенация подблоков D1', D2', D3' и D4' представляет собой зашифрованный текст. Затем берется следующий 64-битный блок незашифрованного текста и алгоритм шифрования повторяется. Так продолжается до тех пор, пока не зашифруются все 64-битные блоки исходного текста.

Обновлено: 11.03.2015