Автор: Пользователь скрыл имя, 06 Декабря 2010 в 15:54, доклад
Алгоритм 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; операция обозначается как [+];
• умножение беззнаковых целых по модулю (216+1), причем блок из 16 нулей рассматривается как 216; операция обозначается как (•).
Все операции выполняются над 16-битовыми субблоками.
Эти три операции несовместимы в том смысле, что:
• никакая пара из этих трех операций не удовлетворяет ассоциативному закону,
например a[+](b(+)c)#(a[+]b)(+)c;
• никакая пара из этих трех операций не удовлетворяет дистрибутивному закону,
например a[+](b(•)c)#(a[+]b)(•)(a[+]с).
Комбинирование этих трех операций обеспечивает комплексное преобразование входных данных, существенно затрудняя крипто-анализ IDEA по сравнению с DES, который базируется исключительно на операции "исключающее ИЛИ".
Общая схема алгоритма IDEA приведена на рис.1. 64-битовый блок данных делится на четыре 16-битовых субблока. Эти четыре субблока становятся входом в первый цикл алгоритма. Всего выполняется восемь циклов. Между циклами второй и третий субблоки меняются местами. В каждом цикле выполняется следующая последовательность операций:
1. (•) - умножение субблока X1 и первого подключа.
2. [+] - сложение субблока X2 и второго подключа.
3. [+] - сложение субблока X3 и третьего подключа.
4. (•) - умножение субблока X4 и четвертого подключа.
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.