I N P U T 128 lub 192 lub 256. K L U C Z 128 lub 192 lub 256 A E S RIJNDAEL. O U T P U T 128 lub 192 lub 256

Podobne dokumenty
Rijndael szyfr blokowy

OCHRONA INFORMACJI W SYSTEMACH I SIECIACH KOMPUTEROWYCH SYMETRYCZNE SZYFRY BLOKOWE

PROBLEMATYKA BEZPIECZEŃSTWA SIECI RADIOWYCH Algorytm szyfrowania AES. Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska

CAST, 3DES, GOST, IDEA, RC2, RC4,

Wykład 5. Podwójny algorytm DES. Podwójny algorytm DES. Podwójny algorytm DES. Podwójny algorytm DES. Podwójny algorytm DES

PROBLEMATYKA BEZPIECZEŃSTWA SIECI RADIOWYCH Algorytm szyfrowania AES. Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska

2 Kryptografia: algorytmy symetryczne

Rozwiązywanie układów równań liniowych metody dokładne Materiały pomocnicze do ćwiczeń z metod numerycznych

5. Rozwiązywanie układów równań liniowych

Układy równań i nierówności liniowych

Laboratorium ochrony danych

Rozdział 4. Macierze szyfrujące. 4.1 Algebra liniowa modulo 26

Wykład 5. Metoda eliminacji Gaussa

Obliczenia naukowe Wykład nr 8

Kryptografia systemy z kluczem tajnym. Kryptografia systemy z kluczem tajnym

DB Algebra liniowa semestr zimowy 2018

INŻYNIERIA BEZPIECZEŃSTWA LABORATORIUM NR 2 ALGORYTM XOR ŁAMANIE ALGORYTMU XOR

Metody iteracyjne rozwiązywania układów równań liniowych (5.3) Normy wektorów i macierzy (5.3.1) Niech. x i. i =1

Kodowanie i kompresja Streszczenie Studia dzienne Wykład 6

Wykład 4 Temat: Algorytm symetryczny Twofish: cele projektowane, budowa bloków, opis algorytmu, wydajność algorytmu.

, A T = A + B = [a ij + b ij ].

Przedmiotowy system oceniania wraz z określeniem wymagań edukacyjnych klasa druga zakres rozszerzony

Wykład 6. Metoda eliminacji Gaussa: Eliminacja z wyborem częściowym Eliminacja z wyborem pełnym

Metody Numeryczne Wykład 4 Wykład 5. Interpolacja wielomianowa

a 11 a a 1n a 21 a a 2n... a m1 a m2... a mn x 1 x 2... x m ...

Treść wykładu. Układy równań i ich macierze. Rząd macierzy. Twierdzenie Kroneckera-Capellego.

Algorytmy i struktury danych. Wykład 4

O MACIERZACH I UKŁADACH RÓWNAŃ

Podstawy systemów kryptograficznych z kluczem jawnym RSA

UKŁADY RÓWNAŃ LINIOWYCH - Metody dokładne

Funkcja kwadratowa. f(x) = ax 2 + bx + c,

Funkcja kwadratowa. f(x) = ax 2 + bx + c = a

Wymagania edukacyjne z matematyki klasa II technikum

Metody szyfrowania danych

SIMR 2016/2017, Analiza 2, wykład 1, Przestrzeń wektorowa

Wstęp do metod numerycznych Eliminacja Gaussa Równania macierzowe. P. F. Góra

3. Macierze i Układy Równań Liniowych

Metody numeryczne Wykład 4

UKŁADY ALGEBRAICZNYCH RÓWNAŃ LINIOWYCH

Matematyka dyskretna

Kryptografia-0. przykład ze starożytności: około 489 r. p.n.e. niewidzialny atrament (pisze o nim Pliniusz Starszy I wiek n.e.)

Bezpieczeństwo systemów i sieci komputerowych

Układy równań liniowych

UKŁADY ALGEBRAICZNYCH RÓWNAŃ LINIOWYCH

Algorytmy asymetryczne

Macierze. Rozdział Działania na macierzach

SCHEMAT OCENIANIA poziom rozszerzony arkusz I

Zarys algorytmów kryptograficznych

Spis treści. Przedmowa... 9

ZAGADNIENIA PROGRAMOWE I WYMAGANIA EDUKACYJNE DO TESTU PRZYROSTU KOMPETENCJI Z MATEMATYKI DLA UCZNIA KLASY II

Matematyka dyskretna

Baza w jądrze i baza obrazu ( )

Rozdział 5. Macierze. a 11 a a 1m a 21 a a 2m... a n1 a n2... a nm

Zestaw 2. Definicje i oznaczenia. inne grupy V 4 grupa czwórkowa Kleina D n grupa dihedralna S n grupa symetryczna A n grupa alternująca.

Bezpieczeństwo systemów komputerowych. Algorytmy kryptograficzne (1) Algorytmy kryptograficzne. Algorytmy kryptograficzne BSK_2003

Architektury akceleratorów kryptograficznych opartych o układy programowalne. Marcin Rogawski

15. Macierze. Definicja Macierzy. Definicja Delty Kroneckera. Definicja Macierzy Kwadratowej. Definicja Macierzy Jednostkowej

Analiza numeryczna Kurs INP002009W. Wykłady 6 i 7 Rozwiązywanie układów równań liniowych. Karol Tarnowski A-1 p.

Wyznaczniki 3.1 Wyznaczniki stopni 2 i 3

1 Macierze i wyznaczniki

Ciała skończone. 1. Ciała: podstawy

Wykład 4. Określimy teraz pewną ważną klasę pierścieni.

Szyfry afiniczne. hczue zfuds dlcsr

1. PODSTAWY TEORETYCZNE

Układy równań liniowych i metody ich rozwiązywania

5. Algebra działania, grupy, grupy permutacji, pierścienie, ciała, pierścień wielomianów.

Analiza numeryczna Lista nr 3 (ćwiczenia) x x 2 n x.

Met Me ody numer yczne Wykład ykład Dr inż. Mic hał ha Łanc Łan zon Instyt Ins ut Elektr Elektr echn iki echn i Elektrot Elektr echn olo echn

Układy równań liniowych. Krzysztof Patan

urządzenia: awaria układów ochronnych, spowodowanie awarii oprogramowania

Ciała i wielomiany 1. przez 1, i nazywamy jedynką, zaś element odwrotny do a 0 względem działania oznaczamy przez a 1, i nazywamy odwrotnością a);

Mathcad c.d. - Macierze, wykresy 3D, rozwiązywanie równań, pochodne i całki, animacje

Podstawowe struktury algebraiczne

Bezpieczeństwo systemów komputerowych. Algorytmy kryptograficzne. Algorytmy kryptograficzne (1) Algorytmy kryptograficzne. Szyfry przestawieniowe

n = p q, (2.2) przy czym p i q losowe duże liczby pierwsze.

Działania na przekształceniach liniowych i macierzach

Wykład VIII. Systemy kryptograficzne Kierunek Matematyka - semestr IV. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej

UKŁADY RÓWNAŃ LINIOWYCH -Metody dokładne

Kryptografia. z elementami kryptografii kwantowej. Ryszard Tanaś Wykład 7

Przekształcanie równań stanu do postaci kanonicznej diagonalnej

Matematyka dyskretna. Andrzej Łachwa, UJ, /10

Sumy kwadratów kolejnych liczb naturalnych

Post-kwantowy algorytm podpisu cyfrowego Kryptosystem NTRU

Wybrane zagadnienia teorii liczb

Zadanie 1. Zmiana systemów. Zadanie 2. Szyfr Cezara. Zadanie 3. Czy liczba jest doskonała. Zadanie 4. Rozkład liczby na czynniki pierwsze Zadanie 5.

dr Mariusz Grządziel 15,29 kwietnia 2014 Przestrzeń R k R k = R R... R k razy Elementy R k wektory;

Rozdział 1. Wektory losowe. 1.1 Wektor losowy i jego rozkład

Zad. 3: Układ równań liniowych

1. Maszyny rotorowe Enigma

Wyk lad 14 Cia la i ich w lasności

Układy równań liniowych

1.1. Standard szyfrowania DES

Treść wykładu. Pierścienie wielomianów. Dzielenie wielomianów i algorytm Euklidesa Pierścienie ilorazowe wielomianów

Projekt AS KOMPETENCJI jest współfinansowany przez Unię Europejską w ramach środków Europejskiego Funduszu Społecznego

Szyfry kaskadowe. permutacyjnej (SPP).

1 Macierz odwrotna metoda operacji elementarnych

Szyfry kaskadowe. Szyfry kaskadowe

Rekurencja. Rekurencja zwana także rekursją jest jedną z najważniejszych metod konstruowania rozwiązań i algorytmów.

det[a 1,..., A i,..., A j,..., A n ] + det[a 1,..., ka j,..., A j,..., A n ] Dowód Udowodniliśmy, że: det[a 1,..., A i + ka j,..., A j,...

Własności wyznacznika

Transkrypt:

I N P U T 28 lu 92 lu 256 A E S RIJNDAEL K L U C Z 28 lu 92 lu 256 O U T P U T 28 lu 92 lu 256 Źródła. AES Proposal: Rijndael,Joan Daemen, Vincent Rijmen 2. ISO/IEC JTC /SC 27WD 833-3: Encryption algorithms Part 3:Block ciphers (X. Lai) 3. P. Mroczkowski, Rijndael jako nowy standard szyfrowania, IT Security Magazine Nr 6-7 (22-23) czerwiec-lipiec 2.

Przekształcenie strumieni wejściowych w talice stanu Dd N = 32 gdzie: Dd długość loku danych wejściowych w itach, N ilość kolumn talicy stanu. Dk Nk = 32 gdzie: Dk długość klucza w itach, Nk ilość kolumn talicy klucza. a, a, a,2 a,3... a,n- k, k, k,2 k,3... k,nk- a, a, a,2 a,3... a,n- k, k, k,2 k,3... k,nk- a 2, a 2, a 2,2 a 2,3... a 2,N- k 2, k 2, k 2,2 k 2,3... k 2,Nk- a 3, a 3, a 3,2 a 3,3... a 3,N- k 3, k 3, k 3,2 k 3,3... k 3,Nk- gdzie elementy talicy stanu i talicy klucza są ajtami.

Szyfrowanie KLUCZ TEKST JAWNY 2 PK AddRoundKey Runda zerowa 3 ByteSu Oliczanie podklucza PK..Nr- ShiftRow MixColoumn AddRoundKey (Nr-) x runda podstawowa PK Nr ByteSu ShiftRow AddRoundKey Runda końcowa 4 TEKST ZASZYFROWANY 5

AddRoundKey S talica stanu na wejściu S talica stanu na wyjściu w n n+n- podklucz dla rundy round gdzie n = round*n wówczas: S ij = S ij w n+j dla i =.. 3, j =.. N-

2 Jest to nieliniowe podstawienie typu S-ox wykonywane na każdym ajcie talicy stanu. Składa się ono z dwóch przekształceń:. Wyznaczenie multiplikatywnej odwrotności w ciele wielomianowym skończonym wyznaczonym przez wielomian nieredukowalny m(x) = x 8 + x 4 + x 3 + x + (czyli, w zapisie heksadecymalnym x). Zakłada się, że odwrotnością elementu jest element. 2. Zastosowanie przekształcenia afinicznego (nad GF(2)) określonego następująco: i = i (i+4)mod 8 (i+5)mod 8 (i+6)mod 8 (i+7) mod 8 c i Jest to równoważne zapisowi macierzowemu: = 7 6 5 4 3 2 7 6 5 4 3 2 Oa te przekształcenia można staelaryzować (taela 6*6) i zamiast wyznaczać wartości dla każdego ajtu przy pomocy powyższego algorytmu wyierać z wyznaczonej talicy (metoda lookup tale). ByteSu

3 ShiftRow W przekształceniu ShiftRow w trzech ostatnich wierszach talicy stanu elementy są cyklicznie przesuwane na pozycje o niższyc indeksach kolumn o różną liczę pozycji (ajtów). Wiersz pierwszy nie jest przesuwany, drugi jest przesuwany o S ajtów, wiersz trzeci o S2 a wiersz czwarty o S3 ajtów. Przesunięcia S, S2 i S3 zależą od długości loku N. Wartości te pokazuje poniższa talica. N S S2 S3 4 2 3 6 2 3 8 3 4 Przekształcenie ShiftRow można zapisać w postaci: s r,c = s r,(c+sr))mod N dla Sr jak w powyższej taeli, c < N, r =,2,3. Ma to efekt przesunięcia ajtów na niższą pozycję w wierszu (tzn. na niższe wartości c w danym wierszu), podczas gdy najniższe ajty przeskakują na szczyt wiersza (tzn. na najwyższe wartości c w danym wierszu).

4 MixColumn Przekształcenie MixColumn działa na talicy stanu kolumna po kolumnie, traktując każdą kolumnę jako czteroskładnikowy wielomian postaci s 3,c x 3 + s 2,c x 2 + s,c x + s,c. Kolumny te traktowane jako wielomiany nad GF(2 8 ) są mnożone modulo x 4 + przez stały wielomian a(x) postaci: a(x) = x3 x 3 + x x 2 +ox x + x2. W zapisie macierzowym: S (x) = a(x) s(x), lu s s s s, c, c 2, c 3, c 2 = 3 3 2 3 2 s s 3s 2s, c, c 2, c 3, c dla c < N. gdzie mnożenia są realizowane modulo x 4 +. Warto pamiętać, że zachodzi tu wygodna zależność, mianowicie x i mod(x 4 + ) = x i mod 4.

Oliczanie podkluczy Klucze Rundowe są wyprowadzane z Klucza Szyfrowania zgodnie ze Schematem Klucza. Schemat ten składa się z procesu Rozszerzenia Klucza i Wyoru Klucza Rundy. Podstawowa zasada jest następująca: Całkowita licza itów Kluczy Rundowych jest równa iloczynowi długości loku i liczy rund plus jeden. (np. dla długości loku 28 itów i rund potrzenych jest 48 itów kluczy rundowych). Klucz Szyfrowania jest rozszerzany do Rozszerzonego Klucza. Klucze Rundowe są poierane z Rozszerzonego Klucza w ten sposó, że pierwszy Klucz Rundowy składa się z pierwszych N słów, drugi z następnych N słów itd. Ilość wykonywanych rund Nr długość loku danych długość klucza Nk = 4 Nk = 6 Nk = 8 N = 4 2 4 N = 6 2 2 4 N = 8 4 4 4

Ilość podkluczy/ długość podklucza długość loku danych [it]/n dł. klucza [it]/nk 28/4 92/6 256/8 28/4 /28 3/92 5/256 92/6 3/28 3/92 5/256 256/8 5/28 5/92 5/256 Rozszerzony Klucz jest liniowym wektorem 4-ajtowych słów oznaczony W[N*(Nr+)]. Pierwsze Nk słów zawiera Klucz Szyfrowania. Wszystkie pozostałe słowa są zdefiniowane rekursywnie przy pomocy słów o mniejszych indeksach. Schemat ten zależy od wartości Nk; jedna wersja jest dla Nk 6, a druga dla Nk > 6. Dla Nk = 6, mamy: KeyExpansion(CipherKey,W) { for( i= ; i<nk ; i++ ) W[i] = CipherKey[i]; for( j=nk ; j<n*(nr+) ; j += Nk ) { W[j] = W[j-Nk] ^ SuByte(Rotl(W[j-])) ^ Rcon[j/Nk] ; for( i= ; i<nk && i+j < N*(Nr+); i++ ) W[i+j] = W[i+j-Nk] ^ W[i+j-] ; } }

Pierwsze Nk słów wypełnianych jest słowami klucza szyfrującego. Każde następne słowo W[i] jest równe poprzedniemu słowu W[i-] XORowane ze słowem Nk pozycji wcześniejszym W[i-Nk]. Dla pozycji ędących wielokrotnością Nk przekształcenie jest wykonywane na W[i-] Najpierw jest wykonywane cykliczne przesunięcie ajtów w słowie (oznaczone Rotl), następnie realizuje się SuByte, czyli zastosowanie lookup tale do wszystkich czterech ajtów słowa. Wynik jest XORowany ze słowem W[j-Nk] i ze stałą rundową (oznaczoną Rcon). Dla Nk > 6, mamy: KeyExpansion(CipherKey,W) { for( i = ; i < Nk ; i++ ) W[i] = CipherKey[i] ; for( j = Nk ; j < N*(Nr+) ; j += Nk ) { W[j] = W[j-Nk] ^ SuByte(Rotl(W[j-])) ^ Rcon[j/Nk] ; for(i = ; i < 4 ; i++ ) W[i+j] = W[i+j-Nk] ^ W[i+j-]; W[j+4] = W[j+4-Nk] ^ SuByte(W[j+3]); for(i = 5; i < Nk ; i++ ) W[i+j] = W[i+j-Nk] ^ W[i+j-]; } }

Różnica w porównaniu ze schematem dla Nk 6 polega na tym, że jeśli i-4 jest wielokrotnością Nk wówczas przed XORowaniem W[i-] jest poddawane przekształceniu SuByte. Wyór klucza rundy Klucz rundy i znajduje się w uforze kluczy rundowych od W[N*i] do W[N*(i+)-]. k k k 2 k 3 k 4 k 5 k 6 k 7 k 8 k 9 k k k 2 k 3 k 4... Klucz rundy Klucz rundy... Rysunek przedstawia rozszerzanie klucza i wyieranie Klucza Rundy dla N = 6 i Nk = 4. Uwaga: Schemat Klucza może yć stosowany ez używania explicite wektora W[N*(Nr+)]. W implementacjach, gdzie trzea oszczędzać RAM Klucze Rundowe mogą yć wyznaczane w locie korzystając z ufora Nk słów prawie nie zwiększając ociążenia oliczeniowego.

xtime xtime realizuje mnożenie wielomianu w(x) przez x modulo nieredukowalny wielomian m(x), gdzie m(x) = x 8 + x 4 + x 3 + x + lu w postaci heksadecymalnej m(x) = x. x*w(x) x2 * xw xw<<, czyli res = xw<<. Jeśli w 7 == to res jest wynikiem, a jeśli w 7 == to wynikiem jest res^x. Rotl Funkcja Rotl() ierze słowo czteroajtowe [a,a,a 2,a 3 ], wykonuje permutację cykliczną i zwraca słowo [a,a 2,a 3,a ].

SuByte Funkcja SuByte ierze czteroajtowe słowo i przekształca każdy ajt stosując podstawienie typu S-ox jak to przedstawiono w 2 - ByteSu. Rcon Stałe rundowe są niezależne od Nk i definiuje się je następująco: Rcon[i] = (RC[i],,, ) gdzie RC[i] = x i-, co rekurencyjnie RC[] = RC[i] = xtime(rcon[i-])

KLUCZ Odszyfrowywanie TEKST ZASZYFROWANY 6 PK Nr AddRoundKey InvShiftRow InvByteSu Odwrotna runda końcowa 7 Oliczanie podklucza PK Nr-.. AddRoundKey InvMixColoumn InvShiftRow (Nr-) x Odwrotna runda podstawowa 8 InvByteSu PK AddRoundKey Odwrotna runda zerowa TEKST JAWNY

6 InvShiftRow Przekształcenie InvShiftRow jest przekształceniem odwrotnym do ShiftRow. W przekształceniu InvShiftRow w trzech ostatnich wierszach talicy stanu elementy są cyklicznie przesuwane na pozycje o wyższych indeksach kolumn o różną liczę pozycji (ajtów). Wiersz pierwszy nie jest przesuwany, drugi jest przesuwany o S ajtów, wiersz trzeci o S2 a wiersz czwarty o S3 ajtów. Przesunięcia S, S2 i S3 zależą od długości loku N. W szczególności przekształcenie InvShiftRow można zapisać w postaci: s r,(c-sr)mod N = s r,c dla Sr jak w taeli, c < N, r =,2,3. Ma to efekt przesunięcia ajtów na wyższą pozycję w wierszu (tzn. na wyższe wartości c w danym wierszu), podczas gdy najwyższe ajty przeskakują na spód wiersza (tzn. na najniższe wartości c w danym wierszu).

7 InvByteSu InvByteSu jest odwrotnością przekształcenia ByteSu. Jest to nieliniowe podstawienie typu S-ox wykonywane na każdym ajcie talicy stanu. Składa się ono z dwóch przekształceń:. Zastosowanie przekształcenia afinicznego (nad GF(2)) określonego następująco: i = (i+2)mod 8 (i+5)mod 8 (i+7) mod 8 c i Jest to równoważne zapisowi macierzowemu: = 7 6 5 4 3 2 7 6 5 4 3 2 2. Wyznaczenie multiplikatywnej odwrotności w ciele wielomianowym skończonym wyznaczonym przez wielomian nieredukowalny m(x) = x 8 + x 4 + x 3 + x + (czyli, w zapisie heksadecymalnym x). Zakłada się, że odwrotnością elementu jest element. Oa te przekształcenia można staelaryzować (taela 6*6) i zamiast wyznaczać wartości dla każdego ajtu przy pomocy powyższego algorytmu wyierać z wyznaczonej talicy (metoda lookup tale).

8 InvMixColumn Przekształcenie MixColumn jest odwrotnością przekształcenia MixColumn.Działa ono na talicy stanu kolumna po kolumnie, traktując każdą kolumnę jako czteroskładnikowy wielomian postaci s 3,c x 3 + s 2,c x 2 + s,c x + s,c. Kolumny te traktowane jako wielomiany nad GF(2 8 ) są mnożone modulo x 4 + przez stały wielomian a(x) postaci: a - (x) = x x 3 + xd x 2 +ox9 x + xe. W zapisie macierzowym: s (x) = a - (x) s(x), lu s s s s, c, c 2, c 3, c e = 9 d e 9 d d e 9 9s d s s es, c, c 2, c 3, c dla c < N. gdzie mnożenia są realizowane modulo x 4 +. Warto pamiętać, że zachodzi tu wygodna zależność, mianowicie x i mod(x 4 + ) = x i mod 4.