2013-11-10-617343082-referat 1 aes

32
UNIVERSITATEA POLITEHNICĂ BUCUREŞTI Facultatea de Electronică, Telecomunicaţii şi Tehnologia Informaţiei Domeniul “INGINERIE ELECTRONICĂ ŞI TELECOMUNICAŢII” Referat nr. 1 Algoritm criptografic cu cheie secretă Advanced Encription Standard (AES) Doctorand: Ioana Roxana DRAGOMIR (MILIŢĂ) Conducător ştiinţific: 1

Upload: ionut-piticas

Post on 17-Dec-2015

19 views

Category:

Documents


4 download

DESCRIPTION

aes

TRANSCRIPT

UNIVERSITATEA POLITEHNIC BUCURETIFacultatea de Electronic, Telecomunicaii i Tehnologia InformaieiDomeniul INGINERIE ELECTRONIC I TELECOMUNICAII

Referat nr. 1

Algoritm criptografic cu cheie secretAdvanced Encription Standard (AES)

Doctorand:Ioana Roxana DRAGOMIR (MILI)

Conductor tiinific:Prof.univ. dr.ing. Adriana VLAD

ADVANCED ENCRYPTION STANDARD(AES)Lucrarea cuprinde o descriere a algoritmului i un exemplu de criptare. Pentru acest exemplu datele de intrare l-am luat din aplicaia Rijndael-Inspector-v1.1, iar calculele au fost elaborate de mine.1. Istoria algoritmilor simetrici 2.Descrierea algorimului AES (Advanced Data Encryption)2.1. Proiectarea algoritmului AES 2.2. Elemente teoretice folosite in implementarea algoritmului AES 2.2.1. Operaii ntr-un cmp Galois2.3. Etapele procesului de criptare 2.4. Descrierea unei runde 2.4.1. Transformarea SubBytes(stare)2.4.2. Transformarea ShiftRows (stare)2.4.3. Transformarea MixColumns(stare)2.4.3. AddRoundKey(Stare, Cheie)2.5. Generarea cheilor 3. Exemplu. Criptarea unui bloc pe o rund cu o cheie dat.

1. Istoria algoritmilor simetrici Mai 1973, Biroul National Federal din SUA lanseaz un apel ce privete construirea unui sistem de criptare oficial care s se numeasc Data Encryption Standard; Martie 1975, firma IBM construiete DES, modificnd un sistem de criptare mai vechi numit Lucifer; Ianuarie 1977 DES a fost adoptat oficial ca standard de criptare, el fiind evaluat o data la 5 ani; Iulie 1998 DES pe 56 bii este spart de ctre organizaia Electronic Frontier Foundation; Acetia au construit un calculator dedicat DESCHALL care poate decripta un mesaj care ncearca toate cheile posibile in mai putin de 3 zile. Atac DES:Cheia: 56 biti de incercat 72,057,594,037,927,936 chei posibile. Cost calculator: < $250,000 Cauta 88 miliarde chei/sec In anul 1990 apare un cifru simetric foarte asemntor cu DES dezvoltat de Xuejia Lai i James Massey de la Institutul Federal al Tehnologiei din Elveia numit PES (Proposed Encryption Standard). In acelai an Biham i Shamir public o metod de atac prin criptanaliz diferenial asupra DES-ului, de aceea un an mai trziu apare IPES (Improved Proposed Encryption Standard) o versiune modificat a PES astfel nct s reziste criptanalizei difereniale. In 1992 IPES este redenumit devenind IDEA (International Data Encryption Standard). IDEA este inclus n PGP (Pretty Good Privacy), practic este o component a sistemului de securitate prin pota electronic care a contribuit la rspndirea acestuia. La sfritul anilor 90 se decide inlocuirea sistemului de criptare DES, de aceea NIST (National Institute of Standards and Tehnology) anun un set de 15 algoritmi propui s inlocuiasc DES. Criteriile stabilite de NIST pentru noul sistem au fost: S fie un sistem de criptare simetric pe blocuri de 128 bii. S accepte chei de lungime 128, 192 si 256 biti; S nu aiba chei slabe; S fie eficient att pe platforme Intel Pentium Pro ct si pe alte platforme software sau hardware; Martie 1999, n finala concursului propus de NIST ajung 5 algoritmi: MARS propus de IBM RC6 versiune a lui RC5 elaborat de laboratoarele RSA SERPENT propus de Ross Ross Anderson (Universitatea Cambridge), Eli Biham (Institutul Tehnion, Haifa) si Lars Knudsen (Universitea Bergen). TWOFISH propus de un colectiv condus de Bruce Schenier. RIJNDAEL propus de ctre Joan Daemen i Vincent Rijmen (Belgia). Mai 2000 NIST anun drept sistem ctigtor sistemul de criptare Rijndael, care devine oficial n noiembrie 2001 standard FIPS-197.

2.Descrierea algorimului AES (Advanced Data Encryption)2.1. Proiectarea algoritmului AES Este un cifru bloc simetric proiectat pe principiul substitution-permutation network (SPN); (cifrurile bloc pot fi proiectate cu ajutorul a trei mari principii:1. Substitution-permutation network SPN , adic fiecare rund lucreaz cu ntregul bloc de date;2. Feistel network , fiecare rund opereaz pe o submulime a blocului de date; funcia de rund se aplic doar unei submulimi ntr-o rund;3. Un alt tip de cifru bloc este Lay-Massey scheme ex: IDEA) Rapid att software ct i hardware; Dimensiunea blocului de date este de 128 bii, iar a cheii poate fi 128, 192, 256 bii; Diferena dintre Rijndael i AES o constituie intervalul n care ia valori dimensiunea blocului de date i a cheii. n cazul Rijndael lungimea mesajului clar ct i a cheii pot fi multiplu de 32, nu mai mic de 128 bii i maxim de 256 bii, iar pentru AES lungimea blocului de text clar este fix, adic 128 bii iar lungimea cheii poate fi 128, 192 sau 256 bii. AES opereaz pe o matrice de octei de dimensiune 4x4; (dac blocul de date este mai mare numrul de coloane va crete); Cele mai multe calcule sunt fcute ntr-un cmp finit special, numit cmp Galois i notat GF(28); Cifrarea blocului se face dup un anumit numr de runde; acest numr depinde de dimensiunea cheii; fiecare rund conine 4 transformri mai puin ultima;

2.2. Elemente teoretice folosite in implementarea algoritmului AES2.2.1. Operaii ntr-un cmp GaloisCmpul Galois pentru AES este o construcie matematic special unde adunarea, scderea, multiplicarea i mparirea sunt redefinite i numrul de ntregi din corp este finit.Mai detaliat, cmpul Galois lucreaz pe numere de opt bii (numere de la 0 la 255). Toate operaiile matematice definite pe acest corp au ca rezultat un numr pe opt bii (un octet). AES lucreaz la nivel de octet, o secven de opt bii tratata ca o singur entitate, de exemplu: {b7, b6, b5, b4, b3, b2, b1, b0}. Aceti octei sunt reprezentai ca elemente ale unui cmp finit cu ajutorul unei reprezentri polinomiale:

b7x7 + b6x6 + b5x5 + b4x4 + b3x3 + b2x2 +b1x1 + b0x0 = .De exemplu: octetul {01100011} poate fi elementul x6 + x5 + x + 1.De asemenea putem scrie un octet ca dou caractere hexazecimale (un caracter hexazecimal fiind scris ca un grup de patru bii).De exemplu: {01100011} poate fi scris ca {63} .

Adunarea ntr-un cmp finit:polinomial: (x6 + x4 + x + 1) + (x7 + x6 + x3 + x) = x7 + x4 + x3 + 1

binar: {01010011} {11001010} = {10011001}Hexa: {53} + {CA} = {99}

Inmultirea: In reprezentarea polinomial, nmulirea n GF(28) ,(notat cu ) este acelai lucru cu nmulirea polinoamelor modulo un polinom ireductibil de grad 8. Un polinom este ireductibil dac i numai dac divizorii si sunt 1 i el nsui. Pentru algoritmul AES acest polinom ireductibil este:m(x) = x8 + x4 + x3 + x + 1 sau in notatie hexazecimala {01}{1b}.De exemplu: {57}{83}=(x6 + x4 + x2 + x + 1)(x7 + x + 1) = x13 + x11 + x9 + x8 + x6 + x5 + x4 + x3 + 1x13 + x11 + x9 + x8 + x6 + x5 + x4 + x3 + 1 modulo (x8 + x4 + x3 + x + 1) = x7 + x6 + 1Operaia modulo m(x) ne asigura ca rezultatul va fi un polinom binar cu gradul mai mic ca 8, i acesta poate fi reprezentat pe un octet. Spre deosebire de adunare , nmulirea nu este o operaie simpl la nivel de octet.nmulirea cum este definit mai sus este asociativ si elementul {01} este element neutru (identitate). Pentru orice polinom binar b(x) diferit de 0 si cu gradul mai mic ca 8, inversul multiplicativ, notat b-1(x), poate fi gsit astfel: cu algoritmul lui Euclid extins se calculeaz polinoamele a(x) si c(x) astfel:b(x)a(x) + m(x)c(x) = c.m.m.d.c.(b(x),m(x)) = 1 (cnd m(x) este ireductibil).Atunci a(x) b(x) mod m(x) = 1 ceea ce nseamn b-1(x) = a(x) mod m(x).Mai mult, pentru orice a(x), b(x) si c(x) din cmpul finit, rezult c:a(x) (b(x) + c(x)) = a(x) b(x) + a(x) c(x).Rezult ca mulimea celor 256 de octei posibili, cu adunarea (operatia XOR) i nmulirea definite mai sus au structur de cmp finit GF(28).

nmultirea cu x: nmulind polinomul binar b7x7 + b6x6 + b5x5 + b4x4 + b3x3 + b2x2 +b1x1 + b0x0 cu x rezult: b7x8 + b6x7 + b5x6 + b4x5 + b3x4 + b2x3 +b1x2 + b0x .Rezultatul x b(x) se obine reducnd rezultatul de mai sus modulo m(x). Dac b7 = 0, rezultatul este n form deja redus. Dac b7 = 1, se scade (XOR-ing) polinomul m(x). Apoi nmulirea cu x (adic cu {00000010} sau {02}) poate fi implementat la nivel de octet ca deplasare la stanga (left shift) i apoi XOR cu {1b}

2.3. Etapele procesului de criptare:1. Expandarea cheii ce are ca rezultat obinerea cheilor de rund; (se face cu ajutorul unui algoritm din cheia principal)2. Runda iniiala n care se execut funcia: AddRoundKey3. Runde intermediare ce conin 4 transformri fiecare: SubBytes: transformare neliniar; ShiftRows: o transpoziie a liniilor: MixColumns: o mixare de operaii pe coloana; AddRoundKey;4. Ultima rund: conine transformrile: SubBytes; ShiftRows; AddRoundKey.

1

Starea intermediar: aceast stare intermediar este reprezentat de un tablou (matrice) a crui elemente sunt reprezentate de octei. Aceast matrice are 4 linii i Nb coloane; Nb este egal cu lungimea blocului de date mprit la 32 de bii. In matricea strii intermediare notate cu s, fiecare octet are doi indici, r numrul liniei n intervalul 0 r < 4 si c numrul coloanei n intervalul 0 c < Nb. Deci elementele matricei de stare vor fi notate cu sr,c sau s[r,c]. octei de intrare starea intermediar octei de iesireAtt la criptare ct i la decriptare matricea de intrare trece n matricea de stare dup formula: s[r,c] = in[r + 4c] pentru 0 c < Nb; i la sfritul criptrii sau decriptrii matricea de stare trece n matricea de ieire astfel: out[ r + 4c] = s[r,c] pentru 0 r < 4 si 0 c < Nb.Toi octei din algoritmul AES sunt interpretai ca elemente ale unui cmp finit. Aceste elemente pot fi adunate, multiplicate dar aceste operaii sunt diferite de cele obinuite cu numere ntregi.2.4. Descrierea unei runde:2.4.1. Transformarea SubBytes(stare) este o substituie neliniar de octei care opereaz independent pe fiecare octet cu ajutorul unui S-box. Acest S-box este construit prin compunerea a dou transformri:1. Calcularea inversului multiplicativ pentru fiecare octet nenul n corpul finit GF(28), elementul {0,0} rmnnd neschimbat;2. Rezultatul este modificat printr-o transformare afina peste Z2:Aceast transformare scris n forma matriceal arat astfel:

de exemplu dac s1,1={53}-> S-box->s1,1={ed} elementul aflat la intersecia liniei 5 cu coloana 3S- boxul este o funcie neliniar, bijectiv (singura parte neliniar a cifrului). S- boxul din AES folosete urmtoarea transformare afin:

y = Ax C mod m(x) unde: m(x) = x8 + x4 + x3 + x + 1A = [f8, 7c, 3e, 1f, 8f, c7, e1, f1]T, matrice 8x8 n GF(2)C = [63]T, matrice coloan n GF(2). Pentru a fi generatoare pentru S-box matricea A trebuie s fie nesingular. Putem genera aproximativ 263 astfel de matrici nesingulare cu fiecare dintre polinoamele ireductibile. Polinoamele rezultate n matricile nesingulare sunt [01, 02, 04, 08, 10, 20, 40, 80], marginea inferioar i [fe, 7f, bf, df, ef, f7, fb, fd], margine superioar.Pentru a satisface efectul de avalan nseamn ca modificarea unui singur bit la intrare s implice modificarea a cel puin 50% din biii de ieire. Pentru a satisface Strict Criterion Avalanche este echivalent a spune c dac modificm un bit la intrare se vor altera exact 50% din biii de ieire.Criterii n proiectarea S-boxului:1. Neliniaritate - Corelaia intrri-ieiri s fie ct mai mic posibil2. Complexitatea algebric. Pentru transformarea tuturor octeilor se folosete un singur S-box. Cu siguran asta nu este o necessitate, transformarea SubBytes putnd fi cu uurin definit cu S-boxuri diferite pentru fiecare octetInversa transformrii se obine aplicnd fiecrui octet transformarea afin invers, dup care se ia inversul multiplicativ din GF(28) (dac octetul nu este nul).

2.4.2. Transformarea ShiftRows (stare) modific octeii ultimilor 3 linii permutndu-i ciclic cu un numr diferit de octei. Prima linie rmne nemodificat . Metoda transpoziiei asigur, n cadrul sistemelor criptografice, realizarea difuziei: mprtierea proprietilor statistice ale textului clar n textul cifrat.

Observm c se modific doar poziia octeilor nu i valoarea lor.Inversa transformrii ShiftRow const n permutarea ciclic spre stnga cu Nb -Ci octei pentru linia i (1 < i < 3); n acest fel, fiecare octet aflat pe poziia j n linia i se deplaseaz pe poziia j + Nb - Ci (mod Nb).

2.4.3. Transformarea MixColumns(stare)Aceast transformare modific coloana matricei de stare, transformand fiecare coloana intr-un polinom cu patru termeni peste GF(28) .

Criterii de proiectare:1. Dimensiunea. Transformarea opereaz pe coloane de patru octei.2. Liniaritate. Este de preferat liniar peste GF(2).3. Difuzia. Trebuie s aib putere de difuzie.4. Performane pe procesoare de 8 bii.Coloanele matricei de stare sunt considerate polinoame peste GF(28) i sunt nmulite modulo x4 +1 cu un polinom fixat c(x), unde:c(x) = 03x3 + 01x2 + 01x + 02.Criteriul de performan poate fi atins dac coeficienii au valori simple. nmulirile cu 00, 01 nu implic procesare. Bazat pe nmulirea polinoamelor n GF(28). Aceast nmulire se face modulo polinomul generator al corpului GF(28) care este:m(x) = x8 + x4 + x3 + x + 1.Operaia invers este similar. Fiecare coloan este transformat prin nmulire cu polinomul invers lui c(X) modulo X4 + 1; acesta este: d(X) = 0BX3 +0DX2 + 09X + 0E

2.4.3. AddRoundKey(Stare, Cheie): Aceast transformare const n aplicarea unui XOR ntre starea curent i cheia de rund. Cheia de rund are lungimea Nb i este dedus din cheia de criptare pe baza unui procedeu pe care l descriem mai jos.

2.5. Generarea cheilor de rundCriteriile ce au stat la baza algoritmului de extindere al cheii au fost:1. Eficienaa. Memorie de lucru. Posibilitatea de a executa expandarea cheii folosind o mic parte a memoriei de lucru.b. Performan.2. Eliminarea simetriilor. 3. Difuzie 4. Neliniaritate. Cheile de rund se obin din cheia de criptare printr-o prelucrare separat, format din dou componente: extinderea cheii i alegerea cheii de rund. Principiile de baz ale prelucrrii sunt: Numrul total al biilor din toate cheile de rund este Nb(Nr + 1). Cheia de criptare este extins ntr-o Cheie Expandat. Cheia de rund se obine lund primii Nb octei din Cheia Expandat, care nu aufost folosii pentru alte chei.

Fiecare coloana este vazuta ca un cuvant adica 32 biti.w0, w1, w2, w3 reprezinta cheia initiala;Cum se obtin cuvintele in pozitiile multiplu de 4 w4, w8, w12, ,w40:a) Se aplic RotWord() si SubWord() cuvantului anterior;b) Se adun wi-4 cu rezultatul de la punctual a) si cu o constant de rund Rcon[i]

2b 8a 01 = a0

00101011 10001010 00000001 = 10100000

Funcia SubWord() este o funcie care are ca intrare patru octei. Fiecrui octet i se aplic un S-box obinndu-se astfel un octet nou. Funcia RotWord() are ca parametru de intrare un cuvnt [a0,a1,a2,a3] asupra cruia se execut o permutare ciclic i resulta [a1,a2,a3,a0]. Rcon[i], conine valorile date de [xi-1,{00},{00},{00}] cu xi-1 puteri ale lui x (x este notat ca {02}) n cmpul GF(28). (reinei c i ncepe cu valoarea 1 nu 0)

Este important de reinut c rutina de expandare a cheii pentru cifrul cu cheie de 256 bii (Nk=8) este puin diferit de cel cu cheie de 128 i 192 bii. Dac Nk=8 i i-4 este multiplu de Nk, atunci SubWord() este aplicat lui w[i-1] mai nti de XOR.

3. Exemplu:AES 128 Criptarea pe o rund:Intrarea n runda i = 9 a algoritmului AES 128/128 pentru cifrarea textului ,,zero peste tot", cu ajutorul cheii ,,zero peste tot", este:

blocul de text clar

cheia de rundntr-o rund se execut patru transformri: SubBytes: transformare neliniar; ShiftRows: o transpoziie a liniilor: MixColumns: o mixare de operaii pe coloana; AddRoundKey;Transformarea SubBytes(stare)

Gsirea octetului din S-box corespunzator octetului din stare se face astfel: pentru octetul 23 se caut n SBox elementul aflat la intersectia liniei 2 cu coloana 3 i se substituie n stare elementul gsit in Sbox. 23 se va substitui cu 26 Procedeul se aplic similar pentru ceilali octei din stare astfel:23 devine 26 (elem din S-box care se afl la intersecia liniei 2 cu coloana 3)13 7daa ac2e 31e7 9421 fdc0 ba03 7b8c 6463 fbc6 b4cb 1f3c ebdb b957 5b95 2aTransformarea ShiftRows stare) Rutina ShiftRows acioneaz asupra strii astfel: prima linie rmne neschimbat, a doua linie se rotete la stnga cu un octet, a treia linie se rotete la stnga cu doi octei iar a patra linie se rotete la stnga cu trei octei.

Transformarea MixColumns: (stare)Rutina MixColumns presupune nmulirea fiecrei coloane din stare cu urmtoarea matrice fixat:

* = Fiecare elment reprezint un polinom astfel: 01 = 00000001 = 1Observaii: 1. nmulirile cu 01 nu au sens.2. n reprezentarea polinomial nmulirea n GF(28) este echivalent cu nmulirea polinoamelor modulo un polinom ireductibil de grad 8. Un polinom este ireductibil dac nu are nici un divizor mai puin 1 i el nsui. Pentru Rijndael acest polinom este: m(x) = x8 + x4 + x3 + x + 1 = 11b.Un polinom reprezint un octet, de aceea gradul acestuia trebuie s fie mai mic ca 8. Calculm elementele primei coloane:

02*2603*fdb42a=

26 = = x5 + x2 + x02 = 00000010 = x02*26 = x( x5 + x2 + x) = x6 + x3 + x2 =01001100 = 4c03*fd = (x + 1)( x7 + x6 + x5 + x4 + x3 + x2 + 1) = x8 + x7 + x6 + x5 + x4 + x3 + x + x7 + x6 + x5 + x4 + x3 + x2 + 1 = x8 + x2 + x + 1 (x8 + x2 + x + 1) modulo (x8 + x4 + x3 + x + 1) = x4 + x3 + x2= 00011100 = 1c03 = 00000011 = x+1fd = 11111101 = (x7 + x6 + x5 + x4 + x3 + x2 + 1)

02*2603*fdb42a = 4c 1c b42a

= 01001100 00011100 10110100 00101010 = ce

2602*fdb4*032a= 02*fd = x(x7 + x6 + x5 + x4 + x3 + x2 + 1) = x8 + x7 + x6 + x5 + x4 + x3 + x(x8 + x7 + x6 + x5 + x4 + x3 + x) (modulo x8 + x4 + x3 + x + 1 ) = x7 + x6 + x5 +1 = 11100001 = e103*b4 = (x+1)( x7 + x5 + x4 + x2 ) = x8 + x6 + x5 + x3 + x7 + x5 + x4 + x2 = x8 + x7 + x6 + x4 + x3 + x2b4 = 10110100 = x7 + x5 + x4 + x2 (x8 + x7 + x6 + x4 + x3 + x2) (modulo x8 + x4 + x3 + x + 1 ) = x7 + x6 + x2 + x + 1 = 11000111 = c7

2602*fdb4*032a= 26 e1c72a

= 00100110 111000011100011100101010 = 2a

26fdb4*022a*03= b4*02 = x(x7 + x5 + x4 + x2) = x8 + x6 + x5 + x3( x8 + x6 + x5 + x3) (modulo x8 + x4 + x3 + x + 1 ) = x6 + x5 + x4 + x + 1 = 01110011 = 732a = 00101010 = x5 + x3 + x 2a*03 = (x+1)( x5 + x3 + x) = x6 + x4 + x2 + x5 + x3 + x = 01111110 = 7e

26fdb4*022a*03= 00100110111111010111001101111110= d6

03*26fdb42a*02= 03*26 = (x+1)( x5 + x2 + x) = x6 + x3 + x2 + x5 + x2 + x = x6 + x3 + x5 + x = 01101010=6a2a*02= x(x5 + x3 + x)= x6 + x4 + x2= 01010100 = 54

03*26fdb42a*02= 01101010111111011011010001010100= 77 Calculm valorile de pe coloana a doua a matricei rezultat:

02*7d03*ba01*1f01*eb= 02*7d 03*ba 1f ef02*7d = 00000010 * 01111101 = x (x6 + x5 + x4 + x3 + x2 + 1) = x7 + x6 + x5 + x4 + x3 + x = 11111010 = fa03 * ba = 00000011 * 10111010 = (x+1)(x7 + x5 + x4 + x3 + x ) = x8 + x6 + x5 + x4 + x2 + x7 + x5 + x4 + x3 + x = x8 + x6 + x2 + x7 + x3 + x03 * ba = x8 + x7 + x6 +x3 + x2 +x (modulo x8 + x4 + x3 + x + 1 )= x7 + x6 + x4 + x2 + 1 = 11010101 = d5

02*7d03*ba01*1f01*eb= 02*7d 03*ba 1f ef

= 11111010 11010101 00011111 11101011 =db

7d02*ba03*1feb =7d*01 = (x6 + x5 + x4 + x3 + x2 + 1)*1 = 7d7d = 01111101 = x6 + x5 + x4 + x3 + x2 + 101 = 00000001 = 102*ba = x( x7 + x5 + x4 + x3 + x ) = x8 + x6 + x5 + x4 + x2(modulo x8 + x4 + x3 + x + 1) = x6 + x5 + x3 +x2 + x + 1 = 01101111 = 6f03*1f = (x+1)( x4 + x3 + x2 + x + 1)= x5 + x4 + x3 + x2 + x + x4 + x3 + x2 + x + 1 = x5 + 1= 00100001 = 21

7d02*ba03*1feb = 01111101011011110010000111101011 = 11011000 = d8

7dba02*1f03*eb =02*1f = x (x4 + x3 + x2 + x + 1) = x5 + x4 + x3 + x2 + x = 00111110 = 3e03*eb = (x+1)( x7 + x6 + x5 + x3 + x + 1) = x8 + x7 + x6 + x4 + x2 + x + x7 + x6 + x5 + x3 + x + 1 = x8+ x5+ x4+ x3+ x2 +1(modulo x8 + x4 + x3 + x + 1) = x5+ x2 + x = 00100110 = 26eb = 11101011 = x7 + x6 + x5 + x3 + x + 1

7dba02*1f03*eb = 01111101101110100011111000100110 = 11011111 = df

03*7dba1f02*eb = 03*7d = (x+1)( x6 + x5 + x4 + x3 + x2 + 1)= x7 + x6 + x5 + x4 + x3 +x + x6 + x5 + x4 + x3 + x2 + 1 = x7 + x2 + x + 1 = 10000111 = 8702*eb = x(x7 + x6 + x5 + x3 + x + 1) = x8 + x7 + x6 + x4 + x2 + x (modulo x8 + x4 + x3 + x + 1) = x7 + x6 + x3 + x2 + 1 = 11001101 = cd

03*7dba1f02*eb = 10000111101110100001111111001101 = 11101111 = efCalculm a treia coloan:

02*ac03*7b64b9 = 02*ac = x (x7 + x5 + x3 + x2 )= x8 + x6 + x4 + x3(modulo x8 + x4 + x3 + x + 1) = x6+ x + 1= 01000011 = 4303*7b = (x+1)( x6 + x5 + x4 + x3 +x + 1) = x7 + x6 + x5 +x4 + x2 +x + x6 + x5 + x4 + x3 +x + 1 = x7 + x3 + x2 +1 = 10001101 = ad7b = 01111011= x6 + x5 + x4 + x3 +x + 1

02*ac03*7b64b9 = 01000011100011010110010010111001 = 00010011 = 13

ac02*7b03*64b9 = 02*7b = x( x6 + x5 + x4 + x3 +x + 1) = x7 + x6 + x5 +x4 + x2 +x = 11110110 = f603*64 = (x+1)( x6 + x5 +x2) = x7 + x6 +x3 + x6 + x5 +x2 = x7 + x3 + x5 +x2 = 10101100 = ac

ac02*7b03*64b9 = 10101100111101101010110010111001 = 01001111 = 4f

ac7b02*6403*b9 = 02*64 = (x)( x6 + x5 +x2) = x7 + x6 +x3 = 11001000 = c803*b9 = (x+1)( x7 + x5 +x4 + x3 +1) = x8 + x6 +x5 + x4 +x + x7 + x5 +x4 + x3 +1 = x8 + x6 +x + x7 + x3 +1 (modulo x8 + x4 + x3 + x + 1) = + x7 + x6+ x4 = 11010000 = d0

ac7b02*6403*b9 = 10101100011110111100100011010000 = 11001111 = cf

03*ac7b6402*b9 = 03*ac =( x+1) (x7 + x5 + x3 + x2 )= x8 + x6 + x4 +x3 + x7 + x5 + x3 +x2 (modulo x8 + x4 + x3 + x + 1)= x7+ x6 + x5 + x3 + x2 + x + 1= 11101111 = ef02*b9 = x( x7 + x5 +x4 + x3 +1) = x8 + x6 +x5 + x4 +x(modulo x8 + x4 + x3 + x + 1) = x6 +x5+ x3 +1 = 01101001 = 69

03*ac7b6402*b9 = 11101111011110110110010001101001 = 10011001 = 99Ultima coloan:

02*3103*94fb5b = 02*31 = x(x5 +x4 +1) = x6 +x5 + x = 01100010 = 6203*94 = (x+1) (x7 + x4 +x2 ) = x8 + x5 +x3 + x7 + x4 +x2(modulo x8 + x4 + x3 + x + 1)= + x7 + x5+x2+ x + 1= 10100111 = a7

02*3103*94fb5b = 01100010101001111111101101011011 = 01100101 = 65

3102*9403*fb5b = 02*94 = x(x7 + x4 + x2) = x8 + x5 +x3(modulo x8 + x4 + x3 + x + 1) = x5+ x4 + x + 1= 00110011 = 3303*fb = (x+1)( x7 + x6+x5+x4 + x3 + x + 1)= x8 + x7+x6+x5 + x4 + x2 + x + x7 + x6+x5+x4 + x3 + x + 1(modulo x8 + x4 + x3 + x + 1) = x4 + x2 + x = 00010110 = 16

3102*9403*fb5b = 00110001001100110001011001011011 = 01001111 = 4f

319402*fb03*5b = 02*fb = x( x7 + x6+x5+x4 + x3 + x + 1) = x8 + x7+ x6+x5 + x4 + x2 + x(modulo x8 + x4 + x3 + x + 1) = x7+ x6+x5 + x3 + x2 + 1= 11101101 = ed03*5b = (x+1)( x6 + x4 + x3 + x + 1) = x7+ x5 + x4 + x2 + x + x6 + x4 + x3 + x + 1= x7+ x5 + x2 + x6 + x3 + 1 = 11101101 = ed5b = 01011011 = x6 + x4 + x3 + x + 1

319402*fb03*5b = 00110001100101001110110111101101 = 10100101 = a5

03*3194fb02*5b = 03*31 = (x+1)(x5 +x4 +1) = x6 +x5 + x + x5 +x4 +1= 01010011 = 5302*5b = x( x6 + x4 + x3 + x + 1) = x7+ x5 + x4 + x2 + x =10110110 = b6

03*3194fb02*5b = 01010011100101001111101110110110 = 10001010 = 8a

Matricea rezultat este:

AddRoundKey(Stare, Cheie): Aceast transformare const n aplicarea unui XOR ntre starea curent i cheia de rund..

=

ceb1 = 11001110 10110001 = 01111111 = 7f

db8a = 11011011 10001010 = 01010001 = 51

131d = 00010011 00011101 = 00001110 = 0e

654c = 01100101 01001100 = 00101001 = 29

2ad4 = 00101010 11010100 = 11111110 = fe

d87d = 11011000 01111101 = 10100101 = a5

4f7b = 01001111 01111011 = 00110100 = 34

4f66 = 01001111 01100110 = 00101001 = 29

d6d8 = 11010110 11011000 = 00001110 = 0e

dfb9 = 11011111 10111001 = 01100110 = 66

cfb3 = 11001111 10110011 = 01111100 = 7c

a549 = 10100101 01001001 = 11101100 = ec

77e2 = 01110111 11100010 = 10010101 = 95

efda = 11101111 11011010 = 00110101 = 35

99de = 10011001 11011110 = 01000111 = 47

8a41 = 10001010 01000001 = 11001011 = cbObservaie:1. Matricea rezultat constituie intrare pentru runda urmtoare.2. Operaiile dei multe sunt simplu de implementat astfel nmulirea cu 00 i 01nu implic nici o operaie, nmulirea cu 02 poate fi implementat ca o rutin dedicat iar nmulirea cu 03 poate fi implementat ca o nmulire cu 02 i operaia XOR. 3. Decriptarea se face prin inversarea transformrilor de mai sus.

Bibliografie:1. FIPS PUB 197, Advanced Encryption Standard (AES), National Institute of Standards and Technology, U.S. Department of Commerce, November 2001.http://csrc.nist.gov/publications/fips/fips197/fips-197.pdf2. Joan Daemen and Vincent Rijmen, The Design of Rijndael, AES - The Advanced Encryption Standard, Springer-Verlag 2002 .3. Joan Daemen, Vincent Rijmen AES Proposal: Rijndael .4. Algebraic Aspects of the Advanced Encryption Standard by Carlos Cid, Sean Murphy and Matthew Robshaw, 2006 Springer Science^-Business Media, LLC