Algoritmi moderni de riptare (2)
Elementele ontituente ale unui algoritm modern de riptare: 1. operaţiile elementare pe biţi (onjunţii, dijunţii, omplementări, deplaări, uma modulo 2, permutări, rotaţii et.), 2. utiile S, 3. funţia-ilu şi 4. în final riptoitemul iterat propriu-zi.
Algoritm Carateritiile algoritmilor imetrii Lungime heie Nr. runde DES 56 biți 16 XOR Triple DES 112 au 168 biți 48 XOR Operaţii matematie IDEA 128 biți 8 XOR, adunare, multipliare Blowfih Twofih RC5 RC2 Variabilă până la 448 biți Variabilă până la 256 biți Variabilă până la 2048 biți Variabilă între 8 și 1024 biți RC6 Variabilă 16, 24, 32 biți 16 XOR, adunare 16 XOR, rotația Variabil până la 255 Adunare, XOR, rotația 18 Adunare, XOR, omplement, &, rotația 20 Adunare mod 2, ădere mod 2, XOR, rotația tânga/ dreapta, multipliare mod 2 w
Tabel.do Tabel ronologi
La fârșitul anilor 90 e deide înlouirea itemului de riptare DES. Motivele unt: în iulie 1998 itemul DES pe 56 biți ete part de ătre organizația Eletroni Frontier Foundation; -a foloit un alulator ontruit peial în aet op, iar timpul neear pargerii a fot de 3 zile. în eptembrie 1998 adminitrația ameriană aordă ompaniilor produătoare de oft de euritate permiiunea de a exporta implementări ale algoritmului DES bazate pe hei de riptare de 56 biți. 5
în augut 1998 NIST (National Intitute of Standard and Tehnology) anunță (în adrul unei onferințe peiale) un et de 15 algoritmi andidați ă înlouiaă DES. Cei 15 algoritmi au fot trimiși de membri din omunitatea riptografiă mondială. Criteriile tabilite de NIST pentru noul item au fot: 1. Să fie un item de riptare imetri pe blouri de 128 biți 2. Să aepte hei de lungime 128, 192 și 256 biți; 3. Să nu aibă hei labe; 4. Să fie efiient atât pe platforme Intel Pentium Pro ât și pe alte platforme oftware au hardware; 5. Să poate fi implementat atât pe proeoare de 32 biți ât și pe mart- arduri (proeoare de 8 biți); 6. Să fie ât mai implu 7. Să fie mai rapid deât DES și ă ofere o euritate mai mare deât 3DES. 6
NIST eletează 5 algoritmi: Mar, RC6, Rijndael, Serpent și Twofih. Aeștia unt upuși tetelor și diuțiilor publie, foloind drept riterii de evaluare: euritate, ot, implementare. 7
Algoritmul Organizaţia/ Compania Avantajul prinipal MARS IBM Seuritate porită Dezavantajul prinipal Implementare omplexă RC6 RSA Laboratorie Foarte implu Seuritate labă Rijndael Joan Daemen, Vinent Rijmen, Deign implu Număr de runde inufiient Serpent Ro Anderon, Eli Biham Foarte igur Deign omplex, performanţă ăzută Twofih Brue Shneier Performanţă rezonabilă Deign omplex
Alegerea finală algoritmului a luat în oniderare următorul tabel: MARS RC6 Rijndael Serpent Twofih Seuritate generală 3 2 2 3 3 Implementare 1 1 3 3 2 Performanţă 2 2 3 1 1 oftware Performanţă pentru SmartCard-uri 1 1 3 3 2 Performanţă 1 2 3 3 2 hardware Carateritii de 2 1 2 1 3 deign Total 10 9 16 14 13
în mai 2000 NIST anunță drept item âștigător itemul de riptare Rijndael, are devine ofiial AES. Algoritmul a fot dezvoltat de doi tineri eretători belgieni, Joan Daemen şi Vinent Rijmen şi devine tandard guvernamental al SUA
În proietarea AES -a ţinut ont de trei riterii: rezitenţa împotriva tuturor ataurilor unoute; viteza şi ompatitatea odului pe un mare număr de platforme; implitatea proietării. Ca şi DES, AES foloeşte ubtituţii şi permutări, ât şi runde multiple. Numărul de runde depinde de mărimea heii şi de mărimea bloului, fiind 10 în azul 128/128 şi mărindu-e până la 14 pentru azul 256/128. Spre deoebire de DES, toate operaţiile unt la nivel de otet, pentru a permite implementări hardware şi oftware efiiente.
AES (Advaned Enryption Standard) Algoritmul AES odifiă blouri de date de 128 biţi. Notăm numărul de uvinte pe 32 biţi ale bloului de date Nb=4; Lungimea heii K poate fi de 128, 192 au 256 biţi, aeată lungime fiind exprimată prin Nk= 4, 6 au 8, adiă numărul de uvinte de 32 biţi ai heii. variantele poibile de implementare ale AES, împreună u numărul de runde efetuat în proeul de riptare Variante AES Nk Nb Nr. runde AES-128 4 4 10 AES-192 6 4 12 AES-256 8 4 14 12
Bloul de date de intrare (in) şi el de ieşire (out), ambele pe 128 biţi unt reprezentate a tablouri în are oteţii unt ompletaţi pe oloană. Analog ete format şi un tablou de alul numit tablou de tare. Tablou_I_O_Stare.pdf Atât pentru riptare ât i pentru deriptare, algoritmul AES utilizează un număr preizat de runde e onţin 4 tipuri de tranformări realizate pe otet: 1. ubtituţie, utilizând utii S; 2. rotaţia apliată aupra liniilor tabloului de tare; 3. ombinarea datelor din fieare oloană a tării; 4. adunarea unei ubhei dependente de rundă. 13
Criptarea AES Cipher (byte in[4*nb], byte out[4*nb], word w[nb*(nr+1)]) begin byte tate[4*nb] tate = in //opierea intrării (in) în tabloul tării (tate) AddRoundKey(tate,w) // prima adunare a ubheii for round = 1 tep 1 to Nr-1 // tranformările arateritie rundelor SubByte(tate) // ubtitutie oteti ShiftRow(tate) // deplaarea liniilor MixColumn(tate) // ametearea oloanelor AddRoundKey(tate,w+round*Nb) // adaugare a ubheii end for SubByte(tate) // tranformări ultima rundă ShiftRow(tate) AddRoundKey(tate,w+Nr*Nb) out = tate // tabloul tării (tate) opiat în el al ieşirii (out) end şirul w[ ] - ubheile generate de ătre generatorul de ubhei 14
Tranformarea SubByte( ) Maparea realizată de SubByte În aet pa fieare otet al textului lar ete ubtituit u un otet extra tabel fix de 8-biţi, S-utia lui Rijndael. Aeata operație dă neliniaritatea ifrului. Cutia de tip S ete deriă de matriea ilutrată în tabelul următor.
Derierea ubtituţiei otetului xy (in hexazeimal) utilizând utia S Derierea ubtituţiei otetului xy (in hexazeimal) utilizând utia S Ex. Pentru 1,1 ={5e}, x=5 şi y=e, rezultatul ete 1,1 ={58}.
Tranformarea ShiftRow() oteţii din liniile tabloului de tare unt rotiţi pre tânga atfel: u 0 oteţi pentru linia 1, u 1 otet pentru linia 2, u 2 oteţi pentru linia 3 şi repetiv u 3 oteţi pentru linia 4 17
Combinarea datelor din fieare oloană a tării (MixColumn)
Tranformarea AddRoundKey( ) oloanelor tabloului de tare atual li e apliă o operaţie au-exluiv u o ubheie dependentă de rundă, rezultând tabloul de tare (0 < Nb, 0 round < Nr ) [ ',, ' 1,, ' 2,, ' 3, ] = [ 0,, 1,, 2,, 3, ] [ wround* 0 Nb+ ]
Generarea heilor de rundă Criteriile e au tat la baza algoritmului de extindere a heii au fot: Efiienţa Memorie de luru. Poibilitatea de a exeuta expandarea heii foloind o miă parte a memoriei de luru Performanţă Eliminarea imetriilor Difuzie Neliniaritate
Cheile de rundă e obţin din heia de riptare printr-o prelurare eparată, formată din două omponente: extinderea heii şi alegerea heii de rundă. Prinipiile de bază ale prelurării unt: Numărul total al biţilor din toate heile de rundă ete Nb(Nr +1) Cheia de riptare ete extină într-o Cheie Expandată Cheia de rundă e obţine luând primii Nb oteţi din Cheia Expandată, are nu au fot foloiţi pentru alte hei
Generarea ubheilor KeyExpanion(byte key[4 * Nk], word w[nb * (Nr + 1)], Nk) begin i=0 while (i < Nk) w[i] = word[key[4*i],key[4*i+1],key[4*i+2],key[4*i+3]] i = i + 1 end while i = Nk while (i < Nb * (Nr + 1)) word temp = w[i - 1] if (i mod Nk = 0) temp = SubWord(RotWord(temp)) xor Ron[i / Nk] ele if (Nk = 8 and i mod Nk = 4) temp = SubWord(temp) end if w[i] = w[i - Nk] xor temp i = i + 1 end while end 22
Deriptarea AES InvCipher(byte in[4 * Nb], byte out[4 * Nb], word w[nb * (Nr + 1)]) begin byte tate[4*nb] tate = in AddRoundKey(tate, w + Nr * Nb) for round = Nr - 1 tep -1 to 1 InvShiftRow(tate) InvSubByte(tate) AddRoundKey(tate, w + round * Nb) InvMixColumn(tate) end for InvShiftRow(tate) InvSubByte(tate) AddRoundKey(tate, w) out = tate end 23
Tranformarea InvShiftRow( ) 24
Tranformarea InvSubByte( ) Aeată tranformare (invera tranformării SubByte( )) realizează o mapare a tabloului de tare atual în el de tare viitor utilizând o utie S peifiă 25
Ex. Daă 1,1 ={58}, atuni x=5 şi y=8, iar rezultatul ete 1,1 ={5e}.
27 Tranformarea InvMixColumn( ) Matriială /omponente (pentru 0 < Nb) = e d b b e d d b e d b e 3, 2, 1, 0, 3, 2, 1, 0, 0 09 0 0 0 0 09 0 0 0 0 09 09 0 0 0 ' ' ' ' ) ({09} ) } ({0 ) } ({0 ) } ({0 ', 3 2, 1, 0,, 0 d b e = ) } ({0 ) } ({0 ) } ({0 ) ({09} ', 3 2, 1, 0,, 1 d b e = ) } ({0 ) } ({0 ) ({09} ) } ({0 ', 3 2, 1, 0,, 2 b e d = ) } ({0 ) ({09} ) } ({0 ) } ({0 ', 3 2, 1, 0,, 3 e d b =
http://r.nit.gov/publiation/fip/fip197/f ip-197.pdf
Algoritmul AES ete oniderat ufiient de igur pentru a fi foloit la riptarea informatiilor guvernamentale ameriane nelaifiate In iunie 2003, guvernul SUA a dei a AES a poata fi foloit pentru informatii laifiate Pana la nivelul SECRET, e pot foloi toate ele trei lungimi de heie tandardizate, 128, 192 i 256 biti Informatiile TOP SECRET(el mai inalt nivel de laifiare) pot fi riptate doar u hei pe 256 biti.
Avantajele AES relativ la implementare unt: - AES e poate implementa pe un proeor Pentium Pro şi va rula u o viteză mai mare deât orie alt ifru blo; - AES e poate implementa pe un dipozitiv Smart Card, foloind un paţiu redu de memorie RAM şi un număr redu de iluri; - tranformarea din adrul unei runde ete paralelă prin proietare, eea e ontituie un avantaj pentru viitoarele proeoare; - AES nu foloeşte operaţii aritmetie, i doar operaţii la nivel de şiruri de biţi.
Simplitatea proietării AES: - AES nu foloeşte omponente riptografie externe, um ar fi utii S, biţi aleatori au şiruri de ifre din dezvoltarea numărului π; - AES nu îşi bazează euritatea pe interaţiuni obure au greu de înţele între operaţiuni aritmetie; - proietarea lară a AES nu permite aunderea unei trape. Lungimea variabilă a bloului - lungimile de blo de 192 şi 256 biţi permit ontruirea unei funţii hah iterative foloind AES a funţie de ompreie.
Extenii: - proietarea permite peifiarea de variante u lungimi de blouri şi lungimi de hei aflate între 128 şi 256 biţi, în paşi de âte 32 de biţi; - deşi numărul de runde în AES ete fixat în peifiaţiile algoritmului, el poate modifiat a un parametru în azul unor probleme de euritate
Limitările AES unt în legătură u algoritmul de deriptare: - algoritmul de deriptare ete mai puţin pretabil la implementarea pe un dipozitiv Smart Card, deoaree neeită mai mult od şi mai multe iluri; - implementarea oftware a AES foloeşte od şi/au tabele diferite pentru algoritmul de riptare, repetiv deriptare; - implementarea hardware a AES a algoritmului de deriptare refoloeşte doar parţial iruitele are implementează algoritmul de riptare.