Sunteți pe pagina 1din 17

Prelegerea 7 Sistemul de criptare AES

7.1 Istoric

La sf ar situl anilor 90 se decide nlocuirea sistemului de criptare DES . Motivele sunt multiple, dar ment ion am numai dou a: In iulie 1998 sistemul DES pe 56 bit i este spart de c atre organizat ia Electronic Frontier Foundation; s-a folosit un calculator construit special n acest scop, iar timpul necesar spargerii a fost de 3 zile. In luna septembrie a aceluia si an, administrat ia american a acord a companiilor produc atoare de soft de securitate permisiunea de a exporta implement ari ale algoritmului DES bazate pe chei de criptare de 56 bit i. In leg atur a cu aceste evenimente, pe 20 august 1998 N IST (National Institute of Standards and Technology) anunt a ( n cadrul unei conferint e speciale) un set de 15 algoritmi 1 candidat i s a nlocuiasc a DES . Este ales si numele noului sistem de criptare: AES (Advanced Encryption Standard). Cei 15 algoritmi au fost trimi si de membri din comunitatea criptograc a mondial a. Criteriile stabilite de N IST pentru noul sistem au fost: S a e un sistem de criptare simetric pe blocuri de 128 bit i. S a accepte chei de lungime 128, 192 si 256 bit i; S a nu aib a chei slabe; S a e ecient at at pe platforme Intel Pentium Pro c at si pe alte platforme software sau hardware;
Ace stia sunt ( n ordine alfabetic a) CAST 256, CRY P T ON, DEAL, DF C, E 2, F ROG, HP C, LOKI 97, M AGEN T A, M ARS, RC 6, Rijndael, SAF ER+, Serpent, T wof ish.
1

PRELEGEREA 7. SISTEMUL DE CRIPTARE AES

S a poate implementat at at pe procesoare de 32 bit i c at si pe smart- carduri (procesoare de 8 bit i); S a e c at mai simplu. S a e mai rapid dec at DES si s a ofere o securitate mai mare dec at 3DES . A doua conferint a AES are loc n martie 1999; dup a analiza rezultatelor algoritmilor propu si, N IST selecteaz a 5 algoritmi: M ars, RC 6, Rijndael, Serpent si T wof ish. Ace stia sunt supu si testelor si discut iilor publice, folosind drept criterii de evaluare au fost: securitate, cost, implementare. In mai 2000 N IST anunt a drept sistem c a stig ator sistemul de criptare Rijndael, care devine ocial AES .

7.2
7.2.1

Scurt a prezentare a sistemelor de criptare nale


Mars

Sistemul M ARS este propus de rma IBM , autorii s ai ind un grup condus de Don Coppersmith. C ateva detalii de construct ie: Algoritmul este format din trei componente, ecare din ele asigur and protect ie pentru anumite tipuri de atac. Lucreaz a pe procesoare de 32 bit i, put and implementat at at n format big-endian, 2 c at si n little endian . La intrare textul clar este spart n grupuri de 128 bit i (4 numere ntregi de c ate 32 bit i). Prima si a treia parte a algoritmului amestec a ace sti bit i folosind o cheie de dimensiune variabil a ( ntre 128 si 448 bit i) si o S -cutie de 512 elemente. Componenta din mijloc este format a din 16 runde si folose ste n plus o o funct ie de expandare E . Operat iile folosite sunt: adun ari, sc aderi, XOR, rotat ii (xe sau dependente de date) si nmult iri; toate calculele se fac modulo 32. Construct ia S -cutiei s-a f acut pe baza unui algoritm public, plec and de la o serie de condit ii init iale clare. Notat iile folosite n algoritm:
Fie a1 a2 a3 a4 un cuv ant pe 4 octet i, unde ai este un num ar ntreg din intervalul [0, 255]. 1. In arhitectura big-endian (o stat ie SPARK de exemplu), un cuv ant reprezint a ntregul a1 224 + 16 8 a2 2 + a3 2 + a4 . 2. In arhitctura little-endian (cum este familia Intel 80xxx) un cuv ant reprezint a ntregul a4 224 + 16 8 a3 2 + a2 2 + a1 .
2

PREZENTARE A SISTEMELOR DE CRIPTARE FINALE 7.2. SCURTA

D[0], D[1], D[2], D[3] cuvinte (de 32 bit i), init ializate cu textul clar; n nal aici va blocul de text criptat; se noteaz a D[i : j ] octetul j din D[i] (j = 0, 1, 2, 3). K [] cheia expandat a; secvent a de 40 cuvinte; S [] S - cutia de 512 cuvinte; S 0[] va cont ine primele 256 elemente, iar S 1[] ultimele 256 cuvinte. Faza I (Mixare preliminar a): 1. for i 0 to 3 do D[i] D[i] + K [i]; 2. for i 0 to 7 do 2.1. D[1] D[1] S 0[D[0, 0]]; 2.2. D[1] D[1] + S 1[D[0, 1]]; 2.3. D[2] D[2] + S 0[D[0, 2]]; 2.4. D[3] D[3] S 1[D[0, 3]]; 2.5. D[0] D[0] >>> 24; 2.6. if i {0, 4} then D[0] D[0] + D[3]; 2.6. if i {1, 5} then D[0] D[0] + D[1]; 2.7. (D[0], D[1], D[2], D[3]) (D[3], D[0], D[1], D[2]). Faza II (Transform ari bazate pe cheie): 1. for i 0 to 15 do 1.1. (o1, o2, o3) E (D[0], K [2i + 4], K [2i + 5]); 1.2. D[0] <<< 13; 1.3. D[2] D[2] + o2; 1.4. if i < 8 then 1.4.1. D[1] D[1] + o1; 1.4.2. D[3] D[3] o3; else 1.4.3. D[3] D[3] + o1; 1.4.4. D[1] D[1] o3; 1..5. (D[0], D[1], D[2], D[3]) (D[3], D[0], D[1], D[2]). Faza III (Mixare nal a): 1. for i 0 to 7 do 1.1. if i {2, 6} then D[0] D[0] D[3]; 1.2. if i {3, 7} then D[0] D[0] D[1]; 1.3. D[1] D[1] S 1[D[0, 0]]; 1.4. D[2] D[2] S 0[D[0, 3]]; 1.5. D[3] D[3] S 1[D[0, 2]]; 1.6. D[3] D[3] S 0[D[0, 1]]; 2.5. D[0] D[0] <<< 24; 2.7. (D[0], D[1], D[2], D[3]) (D[3], D[0], D[1], D[2]).

PRELEGEREA 7. SISTEMUL DE CRIPTARE AES

2. for i 0 to 3 do D[i] D[i] K [36 + i]; 3. Output(D[0], D[1], D[2], D[3]). Mai trebuie precizate funct ia E si modalitatea de expandare a cheii K . E (inp, cheie1, cheie2); 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. M inp + cheie1; R (inp <<< 13) cheie2; i cei mai mici nou a bit i din M ; L S [i]; R (R <<< 5); r cei mai mici cinci bit i din R; M (M <<< r); L L R; R (R <<< 5); L L R; r cei mai mici cinci bit i din R; L (L <<< r); output(L, M, R). (M este variabil a auxiliar a) (R este variabil a auxiliar a) (L este variabil a auxiliar a)

Expandarea cheii: Aceast a procedur a expandeaz a o cheie k [0, . . . , n 1] de n cuvinte (4 n 14) ntr-o cheie K de 40 cuvinte, folosind un vector temporar T de 15 cuvinte si un vector xat Z de 4 cuvinte. 1. Z 0xA4A8D57B 0x5B 5D193B 0xC 8A8309B 0x73F 9A978; 2. T [0, . . . , n 1] k [0, . . . , n 1], T [n] n, T [n + 1, . . . , 14] 0; 3. for j 0 to 3 do 3.1. for i 0 to 14 do T [i] T [i] ((T [(i 7) mod 15] T [(i 2) mod 15] <<< 3) (4 i + j ); 3.2. for m 1 to 4 to for i 0 to 14 to T [i] (T [i] + S [cei mai mici nou a bit i dinT [(i 10) mod 15]]) <<< 9; 3.3. for i 0 to 9 do K [10 j + i] T [4 i mod 15]; 4. for i 5, 7, . . . , 33, 35 do 4.1. j cei mai din dreapta doi bit i din K [i]; 4.2. w K [i] cu cei mai din dreapta doi bit i setat i pe 1; 4.3. for p 2 to 30 to if (w[p 1] = w[p] = w[p + 1]) (w[p] e ntr-o secvent a de 10 bit i consecutivi egali) then M [p] 1; 4.4. r cei mai din dreapta cinci bit i din K [i 1]; 4.5. X (Z [j ] <<< r);

PREZENTARE A SISTEMELOR DE CRIPTARE FINALE 7.2. SCURTA

4.6. K [i] w (X M ). 5. output(K []). Cele 512 cuvinte ale S -cutiei au fost generate n a sa fel nc at s a verice condit iile: - Nu are valorile 0x00000000 si 0xF F F F F F F F ; - Orice dou a valori difer a prin cel put in 4 bit i; - Nu exist a dou a valori a, b astfel ca a = b sau a = b; - Diferent ele de sc adere sau XOR ntre orice dou a valori sunt maxime. Pentru alte detalii privind securitatea sistemului MARS, algoritmul de decriptare, moduri de implementare, componentele S -cutiei etc, a se vedea [3].

7.2.2

RC6

Sistemul de criptare RC 6 este o versiune a lui RC 5, elaborat a de laboratoarele RSA (sub coordonarea lui Ron Rivest) cu scopul de a ndeplini criteriile AES . Este un sistem simplu, f ar a atacuri practice cunoscute (sunt elaborate doar c ateva atacuri teoretice), complet parametrizat: versiunea general a este RC 6 w/r/b unde m arimea cuvintelor este w, num arul de runde este r, iar b este m arimea ( n octet i) a cheii de criptare. Versiunea pentru AES are w = 32, r = 20. Algoritmul lucreaz a pe blocuri de lungime w folosind sase operat ii: +, , (toate modulo 2w ), , a <<< b (rotirea lui a spre st anga cu un num ar de pozit i dat cei mai put in semnicativi log2 w bit i din b) si a >>> b (operat ie similar a spre dreapta). Algoritmul de criptare Intrare: - Textul clar stocat n cuvintele A, B, C, D; - Num arul r de runde; - Cheia [0, . . . 2r + 3]; Ie sire: Textul criptat stocat n A, B, C, D. Algoritm: 1. B B + S [0]; 2. D D + S [1]; 3. for i 1 to r do 3.1. t (B (2B + 1)) <<< log2 w; 3.2. u (D (2D + 1)) <<< log2 w; 3.3 A ((A t) <<< u) + S [2i]; 3.3 C ((C u) <<< t) + S [2i + 1]; 3.4. (A, B, C, D) (B, C, D, A); 4. A A + S [2r + 2]; 5. C C + S [2r + 3]. Detalii privind securitatea si modalit a ti de implementare pot g asite n [4]. Algoritmul de diversicare a cheii S este identic cu cel de la RC 5. In [5] acesta este prezentat mpreun a cu un cod pentru RC 5, scris n C + +.

PRELEGEREA 7. SISTEMUL DE CRIPTARE AES

Cheia init ial a are b octet i (0 b 255) si este stocat a ntr-un tablou L cu c = b/4 cuvinte (complet and ultimul cuv ant cu 0 dac a este necesar). In prima faz a tabloul S este init ializat folosind un generator liniar congruent ial: 1. S [0] P ; 2. for i 1 to 2(r + 1) 1 do S [i] (S [i 1] + Q) mod 232 P = 0xB 7E 15163 si Q = 0x9E 3779B 9 sunt constante bazate pe reprezentarea binar a a lui e si . In etapa a doua se efectueaz a un amestec ntre L si S : 3. i 0, j 0; 4. A 0, B 0; 5. for s 1 to 3 max{c, 2(r + 1)} do 5.1. S [i] (S [i] + A + B ) <<< 3, A S [i]; 5.2. L[i] (L[i] + A + B ) <<< (A + B ), B L[i]; 5.3. i (i + 1) (mod 2(r + 1)); 5.4. j (j + 1) mod c

7.2.3

Serpent

Sistemul de criptare Serpent a fost propus de Ross Anderson (Universitatea Cambridge), Eli Biham (Institutul Tehnion, Haifa) si Lars Knudsen (Universitea Bergen). El cripteaz a texte clare de 128 bit i n blocuri de aceea si lungime, n 32 runde, folosind 33 chei de criptare de rund a, de lungime 128 bit i 3 . Ea se extinde la 256 bit i pun and n fat a 1 pentru primul bit, apoi 0 pentru ceilalt i bit i at at c at este necesar. Algoritmul de criptare cuprinde 3 pa si: Intrare: P (textul clar) Ie sire: C (Textul criptat) Algoritm: 0 = IP (P ): (IP - permutare init 1. B ial a); i+1 Ri (B i ); 2. for i 0 to 31 do B i (Xi K i )), where Ri (X ) = L(S

0 i 30,

7 (X31 K 31 ) K32 . R31 (X ) = S Se aplic a 32 runde formate din: combinarea cu cheia de rund a Ki , o trecere printro S -cutie si o transformare liniar a L; n ultima rund a, transformarea liniar a este nlocuit a cu nc a o combinare cu o a doua cheie de rund a; S reprezint a aplicarea n paralel a 32 copii ale S -cutiei Si mod 8 . 32 ) (F P - permutare nal 3. C F P (B a).
Lungimea cheii date de utilizator este variabil a, ns a algoritmul descris folose ste chei de lungime 128, 192 sau 256 bit i.
3

PREZENTARE A SISTEMELOR DE CRIPTARE FINALE 7.2. SCURTA

Observat ia 7.1 S -cutiile lucreaz a pe 4 bit i, ca si la DES 4 . Fiecare rund a folose ste o singur a S -cutie n 32 copii. De exemplu, runda R0 folose ste cutia S0 n 32 exemplare; o copie pentru bit ii 0 3 din B0 K0 ntorc and primii patru bit i dintr-un tablou intermediar, a doua copie pentru bit ii 4 7 din B0 K0 ntoarce bit ii 4 7 din vectorul intermediar s.a.m.d. Apoi vectorul intermediar obt inut trece prin transformarea liniar a, produc and B1 . Analog, R1 folose ste 32 S - cutii identice S1 pentru bit ii din B1 K1 produ and un vector intermediar care dup a trecerea prin L d a B2 etc. Detalii asupra IP, F P , cont inutul si modul de generare a S -cutiilor, precum si o criptanaliz a am anunt it a pot g asite n [2], [7]. De remarcat c a la ecare etap a IP (Bi ) = i , IP (Ki ) = K i. B Transformarea liniar a L: Blocul de 128 bit i dintr-o rund a este spart n patru cuvinte (X0 , X1 , X2 , X3 ) = Si (Bi Ki ). Se aplic a apoi urm atorii pa si: 1. 3. 5. 7. 9. X0 X1 X1 X0 X0 (X0 <<< 13); X1 X0 X2 ; (X1 <<< 1); X0 X1 X3 ; (X0 <<< 5); 2. 4. 6. 8. 10. X2 (X2 <<< 13); X3 X3 X2 (X0 << 3); X3 (X3 <<< 7) X2 X2 X3 (X1 << 7); Bi+1 (X0 , X1 , X2 , X3 ).

unde <<< nseamn a rotire spre st anga, iar << este deplasare spre st anga. In ultima rund a, L este nlocuit a cu B32 S7 (B31 K31 ) K32 . Generarea cheilor de rund a: Fiecare rund a necesit a 132 fragmente de c ate 32 bit i. In prima faz a se completeaz a cheia furnizat a de utilizator p an a la 256 bit i. Apoi ea se extinde p an a la 33 subchei de c ate 128 bit i K0 , K1 , . . . , K32 n modul urm ator: Cheia K se descompune n opt cuvinte w8 , . . . , w1 care se extind la o cheie intermediar a w0 , . . . , w131 prin formula wi (wi8 wi5 wi3 wi1 i) <<< 11 unde este partea fract ionar a a raportului de aur (0x9E 3779B 9). Cheile de rund a sunt calculate din cheia intermediar a folosind S -cutiile: (k0 , k1 , k2 , k3 ) S3 (w0 , w1 , w2 , w3 ) (k4 , k5 , k6 , k7 ) S2 (w4 , w5 , w6 , w7 ) (k8 , k9 , k10 , k11 ) S1 (w8 , w9 , w10 , w11 )
4

O variant a init ial a, Serpent0 folosea acelea si S -cutii ca DES .

PRELEGEREA 7. SISTEMUL DE CRIPTARE AES

(k12 , k13 , k14 , k15 ) S0 (w12 , w13 , w14 , w15 ) (k16 , k17 , k18 , k19 ) S7 (w16 , w17 , w18 , w19 ) ...... (k124 , k125 , k126 , k127 ) S4 (w124 , w125 , w126 , w127 ) (k128 , k129 , k130 , k131 ) S3 (w128 , w129 , w130 , w131 ) Cheile de rund a se regrupeaz a n Ki (k4i , k4i+1 , k4i+2 , k4i+3 )

7.2.4

Twosh

Sistemul Twosh este propus de un colectiv condus de Bruce Schneier, ind unul din put inele sisteme free (implementarea este disponibil a la adresa [6]). Algoritmul cripteaz a blocuri de 128 bit i, folosind o cheie de lungime variabil a. Algoritmul de criptare Intrare: P = p0 p1 . . . p15 un bloc de text clar de 128 bit i (pi - octet i) Ie sire: C - bloc text criptat, de 128 bit i. Algoritm: 1. P se sparge n patru cuvinte P0 , P1 , P2 , P3 dup a sistemul little-endian:
3

Pi
j =0

p4i+j 28j ,

(0 j 3)

2. R0,i Pi Ki , (0 i 3)5 3. for r 0 to 15 do 3.1. (Fr,0 , Fr,1 ) F (Rr,0 , Rr,1 , r); 3.2. Rr+1,0 (Rr,2 Fr,0 ) >>> 1; 3.3. Rr+1,1 (Rr,3 <<< 1) Fr,1 ; 3.4. Rr+1,2 Rr,0 3.5. Rr+1,3 Rr,1 4. Ci R16,(i+2) mod 4 Ki+4 , (0 i 3) C i 4 5. ci 8(i mod mod 28 , (0 i 15) 4) 2 (cele patru cuvinte din textul criptat sunt scrise ca o secvent a de opt octet i n sistemul little-endian).
Operat ia este numit a whitening si a fost introdus a n mod independent de Merkle pentru Khuf u/Khaf re, respectiv Rivest pentru DES X .
5

PREZENTARE A SISTEMELOR DE CRIPTARE FINALE 7.2. SCURTA

Funct ia F F (R0 , R1 , r) este o funct ie ternar a care ntoarce dou a valori (F0 , F1 ). Varianta propus a este bazat a la rdul ei pe o alt a funct ie g . 1. T0 g (R0 ) 2. T1 g (R1 <<< 8) 32 3. F0 (T0 + T1 + K2r+8 ) mod 2 4. F1 (T0 + 2 T1 + K2r+9 ) mod 232 Funct ia unar a g constituie esent a sistemului de criptare Twosh: 1. xi X/28i mod 28 (0 i 3) Cuv antul de intrare X este spart n patru octet i. 2. yi si [xi ], (0 i 3) Octet ii sunt trecut i prin patru S -cutii, dependente de cheie. y0 01 EF 5B 5B z0 5B EF EF z 01 y1 1 3. EF 5B z2 01 EF y2 EF 01 EF 5B z3 y3
3

4. Z
i=0

zi 28i .

(Z este valoarea rezultat a).

Observat ia 7.2 La pasul 3 se face o corespondent a ntre octet i si elementele corpului GF (28 ). Deoarece GF (28 ) GF (2)[X ]/v (X ) unde v (X ) = X 8 + X 6 + X 5 + X 3 + 1 este
7

un polinom primitiv peste Z2 . Elementul a =


i=0 7

ai X i GF (28 ) se identic a cu octetul

ai 2i . Elementele matricii 4 4 au fost scrise ca valori hexazecimale ale octet ilor,


i=0

folosind aceast a corespondent a. Diversicarea cheii Sistemul Twosh este denit pentru chei de lungime N unde standardul este N = 128, 192 sau 256. Se pot folosi ns a chei de orice lungime mai mic a de 256; dac a se d a o astfel de cheie, ea este extins a prin completare cu 0 la cea mai apropiat a lungime standard. Din cheia M a utilizatorului, prin diversicare se obt in 40 cuvinte K0 , K1 , . . . , K39 si patru S -cutii folosite la funct ia g . Fie k N/64. Cheia M const a din 8k octet i m0 , m1 , . . . , m8k1 . Se calculeaz a vectorii Me , Mo , S astfel:
3

1. Mi
j =0

m4i+j 28j ,

(0 j 2k 1) Mo = (M1 , M3 , . . . , M2k1 );
3

2. Me (M0 , M2 , . . . , M2k2 ),

3. S = (Sk1 , Sk2 , . . . , S0 ) unde Si


j =0

si,j 28j ,

(0 i k 1)

10

PRELEGEREA 7. SISTEMUL DE CRIPTARE AES

Octet ii si,j se obt in printr-o codicare cu un cod Reed-Solomon, pe baza formulei m 8i m8i+1 m8i+2 01 A4 55 87 5A 58 DB 9E si,0 A4 56 82 F 3 1E C 6 s 68 E 5 m8i+3 i,1 = 02 A1 F C C 1 47 AE 3D 19 m8i+4 si,2 m A4 55 87 5A 58 DB 9E 03 si,3 8i+5 m8i+6 m8i+7 Pentru generarea S -cutiilor si a cuvintelor cheii expandate se folose ste funct ia h, denit a astfel: Drept argumente sunt X (cuv ant) si L = (L0 , L1 , . . . , Lk1 ) o list a de k cuvinte. Rezultatul va un cuv ant Z . 8j 1. li,j Li /2 mod 28 , (0 i k 1) xj X/28j mod 28 , (0 j 3) (cuvintele sunt sparte n octet i) 2. yk,j xj , (0 j 3) 3. if k = 4 then y3,0 q1 [y4,0 ] l3,0 , y3,1 q1 [y4,1 ] l3,1 , y3,2 q1 [y4,2 ] l3,2 , y3,3 q1 [y4,3 ] l3,3 4. if k 3 then y2,0 q1 [y3,0 ] l2,0 , y2,1 q1 [y3,1 ] l2,1 , y2,2 q1 [y3,2 ] l2,2 , y2,3 q1 [y3,3 ] l2,3 y0 q1 [q0 [q0 [y2,0 ] l1,0 ] l0,0 , y1 q0 [q0 [q1 [y2,1 ] l1,1 ] l0,1 , 5. y2 q1 [q1 [q0 [y2,2 ] l1,2 ] l0,2 , y3 q0 [q1 [q1 [y2,3 ] l1,3 ] l0,3 unde q0 si q1 sunt permut ari pe 8 bit i, denite detaliat n [6]. 6. Z se obt ine aplic and pa sii 3 si 4 din denit ia funct iei g . In acest moment putem deni: S -cutiile din funct ia g sub forma g (X ) = h(X, S ) Pentru i = 0, 1, 2, 3, S -cutia si dependent a de cheie se formeaz a prin aplicarea lui h de la xi la yi , n care lista L este vectorul S derivat din cheie. Cuvintele cheii expandate: Fie 224 + 216 + 28 + 20 , , Mo ) <<< 8 Atunci K2i (A + i + Bi ) mod 232 , K2i+1 ((Ai + 2Bi ) mod 232 ) <<< 9 Ai h(2i , Me ), Bi (h((2i + 1)

7.3. DETALII ALE SISTEMULUI DE CRIPTARE AES

11

7.3

Detalii ale sistemului de criptare AES

Din 2000, sistemul de criptare Rijndael creat de olandezii Joan Daemen si Vincent Rijman 6 devine ocial sistemul AES . Similar sistemulelor anterioare (inclusiv DES ), si acest sistem cripteaz a blocuri de text clar de lungime x a, folosind subchei ale unei chei generate aleator. Lungimile folosite sunt de 128, 192 sau 256 bit i. Denit ia 7.1 Un rezultat intermediar al sistemului de criptare se nume ste stare. Vom reprezenta starea unui bloc sub forma unui tablou cu 4 linii si Nb coloane, ale c arui elemente sunt octet i; deci valoarea lui Nb se determin a u sor: Nb = N/32, unde N este lungimea blocului text care se cripteaz a. Similar, o cheie de criptare se va reprezenta printr-un tablou 4 Nk , unde Nk = K/32 (K ind lungimea cheii). Exemplul 7.1 O stare cu Nb = 6 si o cheie cu Nk = 4 au forma urm atoare: a0 , 0 a1 , 0 a2 , 0 a3 , 0 a0 , 1 a1 , 1 a2 , 1 a3 , 1 a0 , 2 a1 , 2 a2 , 2 a3 , 2 a0 , 3 a1 , 3 a2 , 3 a3 , 3 a0 , 4 a1 , 4 a2 , 4 a3 , 4 a0 , 5 a1 , 5 a2 , 5 a3 , 5 k 0 ,0 k 1 ,0 k 2 ,0 k 3 ,0 k 0 ,1 k 1 ,1 k 2 ,1 k 3 ,1 k 0,2 k 1,2 k 2,2 k 3,2 k 0 ,3 k 1 ,3 k 2 ,3 k 3 ,3

Uneori, aceste blocuri se reprezint a ca un vector n care ecare element este coloana unei st ari (deci, av and o lungime de 4 octet i). In funct ie de m arimea N a blocului de criptare (respectiv K a cheii), un astfel de vector are 4, 6 sau 8 componente, numite cuvinte. Octet ii unui cuv ant se noteaz a cu a, b, c si respectiv d; astfel, octetul 0 este a, octetul 1 este b s.a.m.d. Intrarea si ie sirea din sistemul AES sunt denite sub forma unor vectori av and drept componente octet i, numerotate de la 0 la 4Nb 1. Un vector de intrare/ie sire are deci 16, 24 sau respectiv 32 componente, numerotate 0 . . . 15, 0 . . . 23 sau 0 . . . 31. Similar, cheia de criptare este denit a ca un vector de 16, 24 sau 32 octet i, numerotat i de la 0 la 4Nk 1 (unde Nk = 128, 192 si respectiv 256). Octet ii care formeaz a intrarea n sistem (textul clar, dac a se folose ste modul de criptare ECB ) completeaz a pe coloane un tablou ca n exemplu, numit starea init ial a. Similar se procedeaz a cu cheia de criptare. Procedeul este identic la sf ar sit, c and se obt ine blocul criptat prin liniarizarea pe coloane a st arii nale rezultate dup a criptare. Relat iile dintre indexul n al unui element (octet) din reprezentarea liniar a si coordonatele (i, j ) ale aceluia si octet din reprezentarea matricial a sunt i = n (mod 4); j = n/4 ; n = i + 4 j.
Rijndael a c a stigat obt in and 86 voturi, contra Serpent cu 59, Twosh cu 31, RC6 cu 23 si Mars cu 13 voturi. Principalul atu: de si Serpent este considerat mai sigur, Rijndael are mai put ine transform ari si este mai rapid.
6

12

PRELEGEREA 7. SISTEMUL DE CRIPTARE AES

In plus, i este indicele octetului n cadrul unui cuv ant care cont ine acel octet, iar j este indicele cuv antului n cadrul blocului care l cont ine. Criptarea se realizeaz a n Nr runde, unde Nr depinde de Nb si Nk . Valorile lui Nr sunt date n tabelul: Nr N b = 4 Nb = 6 N b = 8 Nk = 4 10 12 14 Nk = 6 12 12 14 Nk = 8 14 14 14 Fiecare rund a are la intrare o stare si folose ste o cheie de rund a. Cu except ia rundei nale, o rund a este format a din patru transform ari, notate pe scurt:

ByteSub(Stare); ShiftRow(Stare); MixColumn(Stare); AddRoundKey(Stare, Cheie).

Ultima rund a cont ine numai trei transform ari, ind eliminat a MixColumn(Stare). S a vedem cum sunt denite aceste transform ari: ByteSub(Stare): Este o substitut ie neliniar a care opereaz a pe octet i. Tabela de substitut ie (S - box, dac a folosim termenul consacrat din DES ) este o matrice inversabil a format a din compunerea a dou a transform ari: 1. Fiecare octet nenul este nlocuit cu inversul s au 1 GF (28 ); octetul 00 este l asat nemodicat. 2. Rezultatul este modicat printr-o transformare an a peste Z2 :

y0 y1 y2 y3 y4 y5 y6 y7

1 1 1 1 1 0 0 0

0 1 1 1 1 1 0 0

0 0 1 1 1 1 1 0

0 0 0 1 1 1 1 1

1 0 0 0 1 1 1 1

1 1 0 0 0 1 1 1

1 1 1 0 0 0 1 1

1 1 1 1 0 0 0 1

x0 x1 x2 x3 x4 x5 x6 x7

1 1 0 0 0 1 1 0

7.3. DETALII ALE SISTEMULUI DE CRIPTARE AES

13

Transformarea ByteSub se aplic a tuturor octet ilor st arii de intrare n rund a, rezultatul ind o alt a stare de ie sire din rund a. Inversa transform arii se obt ine aplic and ec arui octet transforma-rea an a invers a, 8 dup a care se ia inversul multiplicativ din GF (2 ) (dac a octetul nu este nul). ShiftRow(Stare): La acest pas, liniile st arii sunt permutate ciclic spre st anga. Num arul de octet i cu care se face ciclarea sunt: 0 pentru linia 0, Ci pentru linia i (1 i 3). Valorile Ci depind de lungimea Nb a blocului si sunt date de tabelul Nb C1 C2 C3 4 1 2 3 6 1 2 3 8 1 3 4 Exemplul 7.2 Aplic and transformarea ShiftRow st arii din Exemplul 7.1 (unde Nb = 6), vom obt ine starea a0 , 0 a1 , 1 a2 , 2 a3 , 3 a0 , 1 a1 , 2 a2 , 3 a3 , 4 a0 , 2 a1 , 3 a2 , 4 a3 , 5 a0 , 3 a1 , 4 a2 , 5 a3 , 0 a0 , 4 a1 , 5 a2 , 0 a3 , 1 a0 , 5 a1 , 0 a2 , 1 a3 , 2

Inversa transform arii ShiftRow const a n permutarea ciclic a spre st anga cu Nb Ci octet i pentru linia i (1 i 3); n acest fel, ecare octet aat pe pozit ia j n linia i se deplaseaz a pe pozit ia j + Nb Ci (mod Nb ). MixColumn(Stare): In aceast a transformare, ecare coloan a a st arii este privit a ca 8 un polinom de gradul 3 cu coecient i n GF (2 ). Fiecare astfel de polinom este nmult it cu c(X ) = 03 X 3 + 01 X 2 + 01 X + 02 n algebra polinoamelor modulo X 4 + 1; polinomul c(X ) este prim cu X 4 + 1, deci va inversabil. Aceast a transformare poate reprezentat a si sub forma unei nmul-t iri matriciale, care transform a starea coloan a cu coloan a; anume:

b0 b1 b2 b3

02 01 01 03

03 02 01 01

01 03 02 01

01 01 03 02

a0 a1 a2 a3

14

PRELEGEREA 7. SISTEMUL DE CRIPTARE AES

Operat ia invers a este similar a. Fiecare coloan a este transformat a prin nmult ire cu polinomul invers lui c(X ) modulo X 4 + 1; acesta este d(X ) = 0B X 3 + 0D X 2 + 09 X + 0E AddRoundKey(Stare, Cheie): Aceast a transformare const a n aplicarea unui XOR () ntre starea curent a si cheia de rund a. Cheia de rund a are lungimea Nb si este dedus a din cheia de criptare pe baza unui procedeu pe care l descriem mai jos. Formal, transformarea are loc conform gurii (pentru Nb = 6): a0 , 0 a1 , 0 a2 , 0 a3 , 0 a0 , 1 a1 , 1 a2 , 1 a3 , 1 a0 , 2 a1 , 2 a2 , 2 a3 , 2 a0 , 3 a1 , 3 a2 , 3 a3 , 3 a0 , 4 a1 , 4 a2 , 4 a3 , 4 b 0,0 b 1,0 b 2,0 b 3,0 a0 , 5 k 0 ,0 a1 , 5 k 1 ,0 a2 , 5 k 2 ,0 a3 , 5 k 3 ,0 b 0 ,1 b 0 , 2 b 0 ,3 b 1 ,1 b 1 , 2 b 1 ,3 b 2 ,1 b 2 , 2 b 2 ,3 b 3 ,1 b 3 , 2 b 3 ,3 k 0 ,1 k 1 ,1 k 2 ,1 k 3 ,1 b 0,4 b 1,4 b 2,4 b 3,4 k 0 ,2 k 1 ,2 k 2 ,2 k 3 ,2 b 0 ,5 b 1 ,5 b 2 ,5 b 3 ,5 k 0,3 k 1,3 k 2,3 k 3,3 k 0 ,4 k 1 ,4 k 2 ,4 k 3 ,4 k 0 ,5 k 1 ,5 = k 2 ,5 k 3 ,5

unde bi,j = ai,j ki,j (0 i 3, 0 j 5). Transformarea AddRoundKey si inversa ei sunt identice. Algoritmul de criptare AES este format din: 1. O transformare AddRoundKey init ial a; 2. Nr 1 runde; 3. O rund a nal a. Inainte de aplicarea acestui algoritm (sau eventual n paralel) se folose ste un algoritm de obt inere a cheilor de rund a.

7.3.1

Prelucrarea cheii de criptare

Toate cheile de rund a se obt in din cheia de criptare printr-o prelucrare separat a, format a din dou a componente: extinderea cheii si alegerea cheii de rund a. Principiile de baz a ale prelucr arii sunt: Num arul total al bit ilor din toate cheile de rund a este Nb (Nr + 1). Cheia de criptare este extins a ntr-o Cheie Expandat a.

7.3. DETALII ALE SISTEMULUI DE CRIPTARE AES

15

Cheia de rund a se obt ine lu and primii Nb octet i din Cheia Expandat a, care nu au fost folosit i pentru alte chei. Extinderea cheii Cheia expandat a (notat a W [Nb (Nr + 1)]) este un tablou liniar ale c arui elemente sunt cuvinte. Primele Nk cuvinte sunt cheia de criptare; celelalte cuvinte se obt in recursiv din cuvintele denite anterior. Funct ia de extindere a cheii depinde de valoarea lui Nk ; exist a o versiune pentru Nk 6 si o alta pentru Nk > 6. Pentru Nk 6 avem: KeyExpansion(byte Key [4 Nk ] word W [Nb (Nr + 1)]) { f or (i = 0; i < Nk ; i + +) W [i] = (Key [4 i], Key [4 i + 1], Key [4 i + 2], Key [4 i + 3]); f or (i = Nk ; i < Nb (Nr + 1); i + +) { temp = W [i 1]; if (i % Nk == 0) temp = SubByte(RotByte(temp)) Rcon(i/Nk ); W [i] = W [i Nk ] temp; } } In acest algoritm (scris n C + +), SubByte(W ) este o funct ie care ntoarce un cuv ant n care ecare octet este rezultatul aplic arii S - boxului denit la transformarea ByteSub ec arui octet din cuv antul de intrare. RotByte(w) ntoarce un cuv ant n care octet ii sunt rotit i ciclic la st anga (pentru intrarea (a, b, c, d) ie sirea este (b, c, d, a)). Esent a algoritmului este urm atoarea: primele Nk cuvinte sunt completate cu cheia de criptare. In continuare, ecare cuv ant W [i] este egal cu W [i 1] W [i Nk ]. Pentru cuvintele care sunt pe pozit ii multipli de Nk , nainte de aceast a operat ie, lui W [i 1] i se aplic a o permutare ciclic a spre st anga a octet ilor, urmat a de aplicarea unui S - box. In plus, rezultatul este XOR - at nc a odat a, cu o constant a de rund a. Pentru Nk > 6, algoritmul este: KeyExpansion(byte Key [4 Nk ] word W [Nb (Nr + 1)]) { f or (i = 0; i < Nk ; i + +) W [i] = (Key [4 i], Key [4 i + 1], Key [4 i + 2], Key [4 i + 3]); f or (i = Nk ; i < Nb (Nr + 1); i + +) { temp = W [i 1]; if (i % Nk == 0)

16

PRELEGEREA 7. SISTEMUL DE CRIPTARE AES

temp = SubByte(RotByte(temp)) Rcon(i/Nk ); else if (i % Nk == 4) temp = SubByte(temp) W [i] = W [i Nk ] temp; } } La aceast a schem a apare condit ia suplimentar a ca pentru situat ia c and i 4 este multiplu de Nk , procedura SubByte este aplicat a lui W [i 1] nainte de XOR. Constantele de rund a sunt independente de Nk si sunt denite prin Rcon[i] = (RC [i], 00 , 00 , 00 ) i1 unde RC [i] = unde este un element generator al lui GF (28 ). Selectarea cheii de rund a Cheia rundei i este format a din secvent a de cuvinte W [Nb i] . . . W [Nb (i + 1) 1]. Ca o remarc a, aceast a cheie poate calculat a treptat, pe m asur a ce se ajunge la runda respectiv a. Pentru alte detalii privind securitatea sistemului, a se vedea [1], [8]

Bibliograe
[1] Joan Daemen, Vincent Rijmen - The http://csrc.nist.gov/CryptoToolkit/aes/ Rijndael Block Cipher Proposal,

[2] Ross Anderson s.a. - Serpent: A proposal for the Advanced Encryption Standard, http://www.ftp.cl.cam.ac.uk/ftp/users/rja14/serpent.pdf [3] Don Coppersmith s.a. - MARS - a candidate cypher for AES, http://www.research.ibm.com/security/mars.pdf [4] Ronald Rivest s.a - The RC 6T M Block Cipher, ftp://ftp.rsasecurity.com/pub/rsalabs/rc6/rc6v11.pdf [5] Bruce Schneier - Applied Cryptography, Second Edition, John Wiley & Sons, 1996 [6] Bruce Schneier s.a. - Twosh, http://www.counterpane.com/twosh.html [7] Serpent homepage, http://www.cl.cam.ac.uk/ rja14/serpent.html [8] Douglas Stinton - Cryptography, Theroy and Practice, Ed. II (2002)

17

S-ar putea să vă placă și