|
Algorytm IDEA jest szyfrem blokowym nie korzystającym z permutacji i "S-box'ów" (substitution box).
Zamiast tych środków korzysta on z operacji algebraicznych z trzech różnych "grup algebraicznych".
Grupa alebraiczna to pewien niepusty zbiór (np. liczb) i działanie spełniające warunki:
- łączne
- odwracalne
- posiada element neutralny
W algorytmie IDEA stosowane są 3 grupy wyznaczonych przez liczby 16-bitowe i trzy operacje matematyczne:
- XOR
- dodawanie modulo 216
- mnożenie modulo 216+1
Algorytm składa się z 8 rund:

..: Powiększ :..
Oznaczmy 4 16 bitowe słowa za pomocą A,B,C i D. Oznaczmy za pomocą Zi(j) 52 subkluczy.
Przed rozpoczęciem 8-miu rund IDEA wykonuje:
- Mnożenie A=A*Z1(1)
- Dodawanie B=Z2(1) + B
- Dodawanie C=Z3(1) + C
- Mnożenie D=D * Z4(1)
Runda n
- E=A xor C
- F=B xor D
- Mnożenie E * Z5(1)
- Dodawanie: F=E + F
- Mnożenie:G= F * Z6(1)
- Dodawanie: F=E + G
- XOR: A= A xor F, C =C xor F, B=B xor E, D=D xor E
- Zamień B z C (B'=B, B=C, C=B')
W ostatniej rundzie nie ma zamiany B i C.
Rozkład Klucza Key-Schedule
Klucz w algorytmie IDEA jest 128-bitowy
Algorytm rozkładu klucza:
- 128-bitowy klucz jest rozdzielany na 8 16-bitowych pod-kluczy, które są bezpośrednio użyte jako pierwszy zbiór 8 podkluczy: Z1,...,Z8
- 128-bitowy klucz jest cyklicznie przesuwany w lewo o 25 pozycji a powstały w ten sposób blok jest dzielony na kolejne 8 a6-bitowych kluczy

..: Powiększ :..
- Procedura ta jest powtarzana aż do uzyskania 52 16 bitowych podkluczy
Bloki podkluczy dla szyfrowania
|
Runda 1
|
Z1(1)Z2(1)Z3(1)Z4(1)Z5(1)Z6(1)
|
|
Runda 2
|
Z1(2)Z2(2)Z3(2)Z4(2)Z5(2)Z6(2)
|
|
Runda 3
|
Z1(3)Z2(3)Z3(3)Z4(3)Z5(3)Z6(3)
|
|
Runda 4
|
Z1(4)Z2(4)Z3(4)Z4(4)Z5(4)Z6(4)
|
|
Runda 5
|
Z1(5)Z2(5)Z3(5)Z4(5)Z5(5)Z6(5)
|
|
Runda 6
|
Z1(6)Z2(6)Z3(6)Z4(6)Z5(6)Z6(6)
|
|
Runda 7
|
Z1(7)Z2(7)Z3(7)Z4(7)Z5(7)Z6(7)
|
|
Runda 8
|
Z1(8)Z2(8)Z3(8)Z4(8)Z5(8)Z6(8)
|
|
Transformacja wyjściowa
|
Z1(9)Z2(9)Z3(9)Z4(9)
|
Bloki podkluczy dla deszyfrowania
|
Runda 1
|
Z1(9)-1-Z2(9)-Z3(9)Z4(9)-1Z5(8)Z6(8)
|
|
Runda 2
|
Z1(8)-1-Z2(8)-Z3(9)Z4(8)-1Z5(7)Z6(7)
|
|
Runda 3
|
Z1(7)-1-Z2(7)-Z3(7)Z4(7)-1Z5(6)Z6(6)
|
|
Runda 4
|
Z1(6)-1-Z2(6)-Z3(6)Z4(6)-1Z5(5)Z6(5)
|
|
Runda 5
|
Z1(5)-1-Z2(5)-Z3(5)Z4(5)-1Z5(4)Z6(4)
|
|
Runda 6
|
Z1(4)-1-Z2(4)-Z3(4)Z4(4)-1Z5(3)Z6(3)
|
|
Runda 7
|
Z1(3)-1-Z2(3)-Z3(3)Z4(3)-1Z5(2)Z6(2)
|
|
Runda 8
|
Z1(2)-1-Z2(2)-Z3(2)Z4(2)-1Z5(1)Z6(1)
|
|
Transformacja wyjściowa
|
Z1(1)-1-Z2(1)-Z3(1)Z4(1)-1
|
Źródło:
http://e-handel.mm.com.pl/crypto/idea.htm
|