Funksionet transformuese të AES-it

Nga Wikipedia, enciklopedia e lirë

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ë:

  1. 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}.
  2. Vendosi secilin bajt në S-Box duke përdorur inversin e shumëfishtë GF(28),ku vlera {00} vendoset sërish.
  3. 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]

  1. ^ http://sq.wikipedia.org/wiki/AES
  2. ^ William Stalling - Cryptography and Network Security
  3. ^ http://privacyink.org/pdf/maa.pdf