1. Opis algorytmu IDEA
Transkrypt
1. Opis algorytmu IDEA
BSK 2003 OPIS DZIAŁANIA ALGORYTMU IDEA 1. Opis algorytmu IDEA IDEA umożliwia szyfrowanie 64-bitowych bloków danych przy użyciu 128–bitowego klucza. Zarówno szyfrowanie jak i deszyfrowanie wykonywane jest przy użyciu tego samego algorytmu. Wykorzystywane są następujące operacje algebraiczne: - XOR logiczny (oznaczany dalej przez ⊕ ), - dodawanie modulo 216 (dodawanie z pominięciem przepełnienia oznaczane przez ), mnożenie modulo 216+1 (blok 16 zer odpowiada liczbie 216, operację tę oznaczamy przez ~) . - 1.1. Szyfrowanie i deszyfrowanie Proces szyfrowania składa się z ośmiu cykli (iteracji) (rys. 1) oraz przekształcenia końcowego (rys. 2). 64-bitowy blok danych jest dzielony na 16-bitowe podbloki X1, X2, X3 oraz X4, będące danymi wejściowymi dla algorytmu. W każdej iteracji wykorzystywanych jest sześć podkluczy, generowanych na podstawie 128-bitowego klucza, np. w pierwszej iteracji wykorzystywane są podklucze Z1...Z6, w drugiej iteracji Z7...Z12, itd. aż do iteracji nr 8. Etap przekształcania (9 etap algorytmu) wykorzystuje już tylko cztery podklucze (Z49...Z52). Na podkluczach oraz podblokach danych wykonywane są operacje sumy modulo 2, dodawania mod 216 oraz mnożenia mod 216+1. Wynikiem tych operacji są cztery 16-bitowe podbloki przekształconych danych, które z kolei są danymi wejściowymi dla kolejnej iteracji. Po wykonaniu ósmej iteracji realizowane jest przekształcenie końcowe, w wyniku którego otrzymujemy cztery 16-bitowe bloki. Po połączeniu dają one w wyniku 64-bitowy blok szyfrogramu, który stanowi dane wyjściowe szyfratora. Podczas deszyfrowania wykorzystywane są podklucze deszyfrujące generowane na podstawie podkluczy szyfrujących. 1 BSK 2003 OPIS DZIAŁANIA ALGORYTMU IDEA X1 X2 X3 X4 Przekształcenie początkowe Z1 Z3 Z2 Z4 Multiplication /Addition Z5 Z6 W11 W12 W13 W14 Rys. 1. Schemat blokowy pojedynczej iteracji algorytmu IDEA W81 W82 W83 W84 Z49 Z51 Z50 Z52 Y1 Y2 Y3 Y4 Rys. 2. Schemat blokowy przekształcenia końcowego 1.2. Generowanie podkluczy Algorytm w każdej z ośmiu iteracji wykorzystuje 6 podkluczy. Dodając do tego ostatni etap, czyli przekształcanie wyniku (w którym wykorzystywane są cztery podklucze) 2 BSK 2003 OPIS DZIAŁANIA ALGORYTMU IDEA otrzymujemy liczbę 52 podkluczy potrzebnych do operacji szyfrowania lub deszyfrowania bloku danych. Podklucze te są otrzymywane ze 128-bitowego klucza szyfrującego. Osiem pierwszych podkluczy szyfrowania otrzymujemy bezpośrednio z klucza szyfrowania po podzieleniu go na 16-bitowe fragmenty. Pierwszy podklucz oznaczany przez Z1 równy jest 16 najbardziej znaczącym bitom, podklucz Z2 następnym 16 bitom itd. Następnie klucz jest przesuwany w lewo o 25 bitów, i otrzymujemy osiem następnych podkluczy itd. aż do otrzymania 52 podkluczy. Podklucze deszyfrujące generowane są na podstawie podkluczy szyfrujących z wykorzystaniem operacji odwrotności modulo 216+1 (oznaczanego przez Zj-1) oraz odwrotności względem dodawania modulo 216 (-Zj). Dokładne zależności pomiędzy podkluczami szyfrującymi a deszyfrującymi przedstawia tabela 1 . Tabela 1 Zależności pomiędzy kluczami szyfrującymi a deszyfrującymi Podklucze szyfrujące Podklucze deszyfrujące Iteracja 1 Z1 Z2 Z3 Z4 Z5 Z6 Z49-1 -Z50 -Z51 Z52-1 Z47 Z48 Iteracja 2 Z7 Z8 Z9 Z10 Z11 Z12 Z43-1 -Z45 -Z44 Z46-1 Z41 Z42 Iteracja 3 Z13 Z14 Z15 Z16 Z17 Z18 Z37-1 -Z39 -Z38 Z40-1 Z35 Z36 Iteracja 4 Z19 Z20 Z21 Z22 Z23 Z24 Z31-1 -Z33 -Z32 Z34-1 Z29 Z30 Iteracja 5 Z25 Z26 Z27 Z28 Z29 Z30 Z25-1 -Z27 -Z26 Z28-1 Z23 Z24 Iteracja 6 Z31 Z32 Z33 Z34 Z35 Z36 Z19-1 -Z21 -Z20 Z22-1 Z17 Z18 Iteracja 7 Z37 Z38 Z39 Z40 Z41 Z42 Z13-1 -Z15 -Z14 Z16-1 Z11 Z12 Iteracja 8 Z43 Z44 Z45 Z46 Z47 Z48 Z7-1 –Z9 –Z8 Z10-1 Z5 Z6 Z49 Z50 Z51 Z52 Z1-1 -Z2 -Z3 Z4-1 Przekształcanie 3