To tylko jedna z 8 stron tej notatki. Zaloguj się aby zobaczyć ten dokument.
Zobacz
całą notatkę
Zygmunt Kubiak. Notatka składa się z 8 stron.
RIJNDAEL Podstawy matematyczne Będziemy rozpatrywali bajty
b = b 7 b 6 b 5 b 4 b 3 b 2 b 1 b 0 , b i ∈ { 0, 1}
jako reprezentacje elementów ciała skończonego GF (2 8 ).
Reprezentacja elementów ciała w bazie wielomianowej :
b 7 x 7 + b 6 x 6 + b 5 x 5 + b 4 x 4 + b 3 x 3 + b 2 x 2 + b 1 x 1 + b 0 daje wzajemnie jednoznaczną odpowiedniość między elementami tego ciała a bajtami. Struktura algebraiczna ciała GF(2 8 ) określa działania na bajtach.
Dodawanie jest binarnym dodawaniem (wielomianów) bajtów - jest to bitowa operacja EXOR oznaczana ⊕.
Mnożenie w GF(2 8 ) jest zdefiniowane jako mnożenie binarnych wielomianów modulo określony nierozkładalny binarny wielomian stopnia 8. Dla Rijndaela wielomianem tym jest:
m(x) = x 8 + x 4 + x 3 + x + 1.
Przykład (x 6 + x 4 + x 2 + x + 1) (x 7 + x + 1) = (x 13 + x 11 + x 9 + x 8 + x 6 + x 5 + x 4 + x 3 + 1) mod m(x) = x 7 + x 6 + x 4 + x 3 + 1.
Operacja modulo polega na braniu reszty z dzielenia przez wielomian m(x). Powyższa operacja mnożenia w GF(2 8 ) określa operację mnożenia bajtów oznaczaną •. Dla niezerowego wielomianu b(x) ∈ GF(2 8 ) określony jest element odwrotny b -1 (x) wzorem:
b(x) • b -1 (x) = 1 mod m(x).
Określa to z kolei dla niezerowego bajtu b bajt odwrotny b -1 taki, że
b •b -1 = 00000001.
Jeśli pomnożymy wielomian b(x) przez x to wynik x • b(x) otrzymujemy redukując wielomian
b 7 x 8 + b 6 x 7 + b 5 x 6 + b 4 x 5 + b 3 x 4 + b 2 x 3 + b 1 x 2 + b 0 x
modulo m(x). Jeśli b 7 = 0 to redukcja jest operacją identycznościową. Jeśli b 7 = 1 to musimy odjąć (to samo co dodać) m(x); tzn. wykonać operację EXOR. Na poziomie bajtów mnożenie przez x (w zapisie szesnastkowym `02' = 0000010) może być zaimplementowane jako lewe przesunięcie, a następnie jako warunkowa operacja EXOR z bajtem `1B' reprezentującym wielomian m(x) bez wyrazu x 8 . Powyższa operacja oznaczona jest przez
a = xtime (b).
Mnożenie przez wyższe potęgi x może być zaimplementowane jako wielokrotne wykonanie operacji xtime. Dołączenie operacji dodawania daje nam implementacje mnożenia przez dowolny wielomian.
Wielomiany o współczynnikach z ciała GF(2 8 ). 4-bajtowy wektor odpowiada wielomianowi o współczynnikach z GF(2 8 ) stopnia mniejszego niż 4. Wielomiany o współczynnikach z GF(2 8 ) dodajemy wykonując operację EXOR na bajtach reprezentujących te współczynniki. Operacja mnożenia wielomianów jest bardziej skomplikowana. Niech
a(x) = a 3 x 3 + a 2 x 2 + a 1 x + a 0 ,
b(x) = b 3 x 3 + b 2 x 2 + b 1 x + b 0 będą wielomianami o współczynnikach z ciała GF(2
(…)
….
Klucz główny szyfru jest przekształcany do tzw. klucza rozszerzonego (ang. expanded key) składającego się z 11 słów 32 bitowych co stanowi 1408 bitów.
Podklucze kolejnych rund są brane z klucza rozszerzonego w następujący sposób: podklucz do rundy nr.0 stanowią pierwsze 4 słowa klucza rozszerzonego, następny podklucz stanowią kolejne 4 słowa i tak dalej.
Klucz rozszerzony jest jednowymiarową tablicą o 4-bajtowych elementach składająca się z 44 słów o długości 32 bitów. Pierwsze 4 słowa stanowią klucz główny szyfru, następne słowa zdefiniowane są rekurencyjnie przy pomocy słów wcześniejszych. Klucz rozszerzony składa się ze słów
W[0], W[1], ..., W[43].
Przedstawiamy algorytm generowania klucza rozszerzonego w postaci pseudo-kodu
KeyExpansion(CipherKey, W)
{
for (i=0; i<4; i++) W[i] = CipherKey…
… w pozostałych rundach. Jest to odpowiednikiem braku przestawienia lewej i prawej połowy stanu w algorytmie DES.
Specyfikacja algorytmu
W Rijndaelu długość bloków szyfrowanych i długość klucza może wynosić odpowiednio 128, 192 i 256 bitów. Przedstawimy wersję algorytmu gdy długość bloków szyfrowanych wynosi 128 oraz długość stosowanego klucza także wynosi 128 bitów. Poszczególne postaci tekstu jawnego…
... zobacz całą notatkę
Komentarze użytkowników (0)