Funksionet transformuese të AES-it

AES-ihttp://sq.wikipedia.org/wiki/AES ë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 bajtaveWilliam Stalling - Cryptography and Network Security

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

{| class="wikitable" style="width:800px;"
|-
| || 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
|-style="background:grey; color:white"
|1 || ca || 82 || style="background:red; color:white" |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⊕cipë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 rreshtavehttp://privacyink.org/pdf/maa.pdf

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

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

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 

Kategoria:Inxhinieri
Kategoria:Inxhinieri elektrike
Kategoria:Elektronikë