Funksionet transformuese të AES-it
AES-i[1] është një nga algoritmet më të njohura simetrike për kriptimin e të dhënave. Teksti hyrës i njohur si plaintekst është 128 bita kurse çelësi mund të jetë 128 bita, 192 ose 256 bita që korrespondon në tri llojet e AES që janë AES-128,AES-192 dhe AES-256. Blloku 128 bitësh i plaintekst formon matricën STATE tek e cila 4 bajtat e parë zënë kolonën e parë, 4 bajtat e dytë zënë kolonën e dytë e kështu me radhë. Matrica STATE modifikohet pas çdo faze të enkriptimit dhe dekriptimit. Nëse çelësi është 128 bita procesi i kriptimit i ka 10 cikle ,për çelësin 192 bitësh procesi ka 12 cikle,e për 256 bitësh kriptimi i ka 14 cikle. Ai bazohet në katër funksione transmetuese të cilat do t'i shqyrtojmë më hollësisht.
Zëvendësimi i bajtave[2]
[Redakto | Redakto nëpërmjet kodit]Substitute byte - Zëvëndësimi i bajtve është transformimi i parë në kuadër të një cikli të AES-it i cili konsiston në një tabelë. Tek AES-i definohet një matricë 16x16 e quajtur S-box e cila përmban të gjitha 256 vlerat e permutacioneve 8 bitëshe. STATE është vlera 128 bitëshe e bllokut hyrës i ndarë në matricë 4x4 i cili modifikohet pas qdo faze të enkriptimit dhe të dekriptimit dhe pas ciklit final në dalje na jep një matricë. Secili bajt i STATE vendoset në atë mënyrë që 4 bitat më të majtë përdoren si rresht kurse 4 bitat më të djathtë përdoren si kolonë e kështu me radhë.Keto vlera të rreshtave dhe kolonave më pastaj shërbejne si indekse në S-Box për të marrë vlerën 8 bitëshe në dalje. Pra secili bajt zëvëndësohet nga bajti tjetër ashtu që rreshti caktohet nga 4 bitat e majtë kurse kolona nga 4 bitat e djathtë.
Në tabelën e mëposhtme nëse s1,1={1,2} mirret rreshti i parë dhe kolona e dytë ne këtë rast vlera = C9
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | |
0 | 63 | 7c | 77 | 7b | f2 | 6b | 6f | c5 | 30 | 01 | 67 | 2b | fe | d7 | ab | 76 |
1 | ca | 82 | c9 | 7d | fa | 59 | 47 | f0 | ad | d4 | a2 | af | 9c | a4 | 72 | c0 |
2 | b7 | fd | 93 | 26 | 36 | 3f | f7 | cc | 34 | a5 | e5 | f1 | 71 | d8 | 31 | 15 |
3 | 04 | c7 | 23 | c3 | 18 | 96 | 05 | 9a | 07 | 12 | 80 | e2 | eb | 27 | b2 | 75 |
4 | 09 | 83 | 2c | 1a | 1b | 6e | 5a | a0 | 52 | 3b | d6 | b3 | 29 | e3 | 2f | 84 |
5 | 53 | d1 | 00 | ed | 20 | fc | b1 | 5b | 6a | cb | be | 39 | 4a | 4c | 58 | cf |
Pra siq mund të vërehet se ky lloj transformimi kalon nëpër disa faza kryesore siq janë:
- Inicializo S-Boxin me vlerat e bajtit në varg rritës rresht për rresht,rreshti I parë përmban {00},{01},{02}….{0F},rreshti I dytë përmban{10},{11},…{1F} e kështu me radhë.Në mënyrë të përgjitshme vlera e bajtit në rreshtin y dhe kolonën x është{yx}.
- Vendosi secilin bajt në S-Box duke përdorur inversin e shumëfishtë GF(28),ku vlera {00} vendoset sërish.
- Konsideroje që secili bajt në S-Box konsiston në 8 bitat (b7,b6,b5,b4,b3,b2,b1,b0) ku formula e cila aplikohet në secilin bit të çdo bajti është :
b1’=b1⊕b(i+4)mod 8⊕b(i+5)mod 8⊕b(i+6)mod 8⊕b(i+7)mod8⊕ci
për 0 <i <8 ku bi është biti i-të i bajtit dhe ci është biti I i-te i bajtit të c .Shenja (‘) tregon se variabla do të ndryshohet vazhdimisht nga vlerat e vendosura në anën e majtë.
Zhvendosja e rreshtave[3]
[Redakto | Redakto nëpërmjet kodit]Transformimi i dytë në kuadër të një cikli tek AES-i është edhe zhvendosja apo shiftimi i rreshtave. Rreshti i parë nuk zhvendoset apo nuk shiftohet fare kurse për rreshtin e dytë aplikohet një shiftim apo zhvendosje majtas,për rreshtin e tretë aplikohen 2 shiftime majtas kurse për të katërtin aplikohen 3 shiftime majtas. Në formë matematikore ky proces mud tëshprehet si vijon:
S’r,c=Sr,(c+shift(r+NB))mod NB për 0<r<4 dhe 0 <c <NB
Ku vlera e zhvendosjes shift(r,NB) varet nga numri i rreshtit r kurse psh Nb=4 atehere Shift(1,4)=1; shift(2,4)=2; shift(3,4)=3; Një lëvizje e tillë i vendos bajtat në pozitë më të ulët,përderisa bajti me I ulët rrotullohet dhe vendoset në qendër të rreshtit (vlerat më te larta te c në rreshtin tjetër).Inverse Rows Transformation aplikon zhvendosjen apo shiftimin në anën e kundërt.
Përzierja e kolonave
[Redakto | Redakto nëpërmjet kodit]Operon me secilën kolonë individualisht. Secilit bajt të secilës kolonë i vendoset një vlerë e re e cila është si funksion i të gjithë 4 bajtave të asaj kolone.Ky transformim i çdo kolone si një polinom,d.m.th kolonat konsiderohet si një shprehje polinomiale GF(28) dhe shumëzohet me x4+1 dhe nje polinom tjeter : s(x) a(x) ⊕s(x)
Kjo mund të shprehet në një matricë përmes formulës Si rezulat i këtij pjestimi 4 bajtat e një kolone zëvendesohen si vijon:
- s’0,j=(2*s0,j)⊕(3*s1,j)⊕s2,j⊕s3,j
- s’1,j=s0,j⊕(2*s1,j)⊕(3*s2,j) ⊕s3,j
- s’2,j=s0,j⊕s1,j⊕(2*s2,j)⊕(3*s3,j)
- s’3,j=(3*s0,j)⊕s1,j⊕s2,j⊕(2*s3,j)
Gjenerimi i çelësave
[Redakto | Redakto nëpërmjet kodit]Në këtë fazë të fundit të transformimeve të AES-i 128 bitat e tabelës STATE bëhen XOR me 128 bitat e qelësit(round key).Ky operacion shihet si një lloj veprimi në mes të 4 bajteve të state dhe një fjalë të çelësit.Matrica e parë është STATE kurse e dytë RoundKey. Secili çelës i ciklit(Round Key) konsiston në një Nb fjalët e çelësit.Këto Nb fjalë i shtohen secilës kolonë në STATE matricën ashtu që :
[S’0,c ,S’1,c ,S’2,c ,S’3,c]=[S0,c ,S1,c ,S2,c ,S3,c ,S4,c] ⊕[wround+Nb+c] per 0 c < Nb
Ku [wi] është lista e fjalëve të çelësit kurse round një vlerë në diapazonin 0<round<Nr. Në këtë lloj kriptimi Round Key fillestar ndodh kur vetëm kur round=0.
Transformimi Add Round Key zbatohet në Nr rounde të kriptimit kur vlera e round është mes 0<round<Nr.
Një shembull i tillë është i ilustruar në figurë ku l = round * Nb
Vegza dhe referencat
[Redakto | Redakto nëpërmjet kodit]- ^ http://sq.wikipedia.org/wiki/AES
- ^ William Stalling - Cryptography and Network Security
- ^ http://privacyink.org/pdf/maa.pdf