Funksionet transformuese të AES-it

**AES**-i ë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
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

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