Існуючі програмні реалізації алгоритму IDEA приблизно удвічі швидше реалізації алгоритму DES. Алгоритм IDEA шифрує дані на IBM РС/486 зі швидкістю 2,4 Мбіт/с. Реалізація IDEA на СВІС шифрує дані зі швидкістю 177 Мбіт/із при частоті 25 Мгц. Алгоритм IDEA запатентований у Європі і США[1].
В алгоритмі IDEA використовуються наступні математичні операції:
• порозрядне додавання по модулю 2 (операція XOR) і позначається як Å;
• додавання беззнакових цілих по модулю 216 (mod 65536); операція позначається як +;
• множення цілих по модулю (216+1) (mod 65537), що розглядаються як беззнакові цілі, за винятком того, що блок з 16 нулів розглядається як 216; операція позначається як *.
Всі операції виконуються над 16-бітовими підблоками. Ці три операції несумісні в тому розумінні, що:
• ніяка пара з цих трьох операцій не задовольняє асоціативному закону, наприклад а + (b Å с) Å (а + b) Å с;
• ніяка пара з цих трьох операцій не задовольняє дистрибутивному закону, наприклад: a + (b * с) Å (а + b) * (a + c).
Комбінування цих трьох операцій забезпечує комплексне перетворення входу, істотно утруднюючи криптоаналіз IDEA у порівнянні з DES, що базується винятково на операції XOR[1].
Позначення:
Xi – 16-бітовий підблок відкритого тексту, i = 1...4;
yi – 16-бітовий підблок шифртексту, i = 1...4;
Zj(r)- 16-бітовий підключ, j = 1..6, r=1..8;
Å – поразрядне додавання по модулю 2 (XOR) 16-бітових під блоків;
+ – додавання по модулю 216 16-бітових цілих;
(*) -множення по модулю (216+1) 16-бітових цілих (з нульовим підблоком, що відповідає 216.
64-бітовий блок даних поділяється на чотири 16-бітових підблока. Ці чотири підблока стають входом у перший цикл алгоритму. Усього виконується вісім циклів. Між циклами другий і третій підблоки міняються місцями. У кожному циклі має місце наступна послідовність операцій:
1. (*) – множення підблока X1 і першого підключа.
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). По завершенні циклу переставляють місцями два внутрішніх підблока (за винятком останнього циклу), і в результаті формується вхід для наступного циклу.
Після восьмого циклу здійснюють заключне перетворення виходу:
1. (*) – множення підблока X1 і першого підключа.
2. + – додавання підблока X2 і другого підключа.
3. + – додавання підблока Х3 і третього підключа.
4. (*) – множення підблока X4 і четвертого підключа.
Нарешті, ці результуючі чотири підблока Y1..Y4 знову поєднують для одержання блоку шифртексту.
Створення підключей Zj також відносно нескладна операція. Алгоритм використовує всього 52 підключа (по шість для кожного з восьми циклів і ще чотири для перетворення виходу). Спочатку 128-бітовий ключ поділяють на вісім 16-бітових підключів. Це – перші вісім підключів для алгоритму (шість підключів – для першого циклу і перші два підключа – для другого циклу). Потім 128-бітовий ключ циклічно зрушується вліво на 25 біт і знову поділяється на вісім підключів. Перші чотири з них використовують у другому циклі; останні чотири – у третьому циклі. Ключ знову циклічно зрушується вліво ще на 25 біт для одержання наступних восьми підключів і т.д., поки виконання алгоритму не завершиться.[5]
Розшифрування здійснюють аналогічним чином, за винятком того, що порядок використання підключів стає зворотним, причому ряд значень підключів заміняється на зворотні значення. Підключі розшифрування є в основному або адітивними, або мультиплікативними зворотними величинами підключів шифрування (табл. 7.1).
Таблиця 7.1. Підключі шифрування і розшифрування алгоритму IDEA. |
||
Цикл |
Підключі шифрування |
Підключі розшифрування |
1 |
Z1(1) Z2(1) Z3(1) Z4(1) Z5(1) Z6(1) |
Z1(9)-1 -Z2(9) -Z3(9) Z4(9)-1 Z5(8) Z6(8) |
2 |
Z1(2) Z2(2) Z3(2) Z4(2) Z5(2) Z6(2) |
Z1(8)-1 -Z2(8) -Z3(8) Z4(8)-1 Z5(8) Z6(8) |
3 |
Z1(3) Z2(3) Z3(3) Z4(3) Z5(3) Z6(3) |
Z1(7)-1 -Z2(7) -Z3(7) Z4(7)-1 Z5(7) Z6(7) |
4 |
Z1(4) Z2(4) Z3(4) Z4(4) Z5(4) Z6(4) |
Z1(6)-1 -Z2(6) -Z3(6) Z4(6)-1 Z5(6) Z6(6) |
5 |
Z1(5) Z2(5) Z3(5) Z4(5) Z5(5) Z6(5) |
Z1(5)-1 -Z2(5) -Z3(5) Z4(5)-1 Z5(5) Z6(5) |
6 |
Z1(6) Z2(6) Z3(6) Z4(6) Z5(6) Z6(6) |
Z1(4)-1 -Z2(4) -Z3(4) Z4(4)-1 Z5(4) Z6(4) |
7 |
Z1(7) Z2(7) Z3(7) Z4(7) Z5(7) Z6(7) |
Z1(3)-1 -Z2(3) -Z3(3) Z4(3)-1 Z5(3) Z6(3) |
8 |
Z1(8) Z2(8) Z3(8) Z4(8) Z5(8) Z6(8) |
Z1(2)-1 -Z2(2) -Z3(2) Z4(2)-1 Z5(2) Z6(2) |
Вихід |
Z1(9) Z2(9) Z3(9) Z4(9) |
Z1(1)-1 -Z2(1) -Z3(1) Z4(1)-1 |
Для реалізації алгоритму IDEA було прийняте припущення, що нульовий підблок дорівнює 216 –1; при цьому мультиплікативна зворотна величина від 0 дорівнює 0. Обчислення значень мультиплікативних зворотних величин вимагає деяких витрат часу, але це доводиться робити тільки один раз для кожного підключа розшифрування.
Алгоритм IDEA може працювати в будь-якому режимі блокового шифру, передбаченому для алгоритму DES. Алгоритм IDEA має кілька переваг перед алгоритмом DES. Він значно безпечніше алгоритму DES, оскільки 128-бітовий ключ алгоритму IDEA удвічі більше ключа DES. Внутрішня структура алгоритму IDEA забезпечує кращу стійкість до криптоаналізу[1].
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.