SubBytes (S-blok akslantirishlari jadvali) baytlarni almashtirish jarayonining umumiy sxemasini quyidagicha tasvirlash mumkin.
SubBytes jadvali.
1.5-jadval
S00
|
S01
|
S02
|
S03
|
S10
|
S11
|
Sij
|
S13
|
S20
|
S21
|
S22
|
S23
|
S30
|
S31
|
S32
|
S33
|
S’00
|
S’01
|
S’02
|
S’03
|
S’10
|
S’11
|
S’ij
|
S’13
|
S’20
|
S’21
|
S’22
|
S’23
|
S’30
|
S’31
|
S’32
|
S’33
|
ShiftRows (Holat baytlarini siklik surish) akslantirishining qo‘llanishi - quyidagicha amalga oshiriladi. Holat baytlarini siklik surishda holat jadvali satrlari quyidagicha belgilab olinadi.
C0 - satr C1 - satr C2 - satr C3 - satr
ShiftRows
1.6-jadval
S’00
|
S’01
|
S’02
|
S’03
|
S’10
|
S’11
|
S’12
|
S’13
|
S’20
|
S’21
|
S’22
|
S’23
|
S’30
|
S’31
|
S’32
|
S’33
|
ShiftRows (Holat baytlarini siklik
surish) akslantirishida jadvaldagi oxirgi uchta satr har bir baytlari chapga siklik , ya'ni 1- satr C 1 baytga, 2- satr C 2 baytga, 3- satr C 3 baytga suriladi. C 1 , C 2 , C 3 surilish qiymati Nb blok uzunligiga bog‘liq bo‘lib, ular algoritmda ko‘rsatilganidek, quyidagi 1.7- jadvalda aniqlangan:
Bloklar soni jadvali 1.7 – jadval
l
|
Nb
|
C0
|
C1
|
C2
|
C3
|
128
|
4
|
0
|
1
|
2
|
3
|
192
|
6
|
0
|
1
|
2
|
3
|
Keltirlgan jadvalga ko‘ra l = 128 bitli shifrlash uchun Nb=4 ga teng bo‘lib, birinchi satr bo‘yicha holat baytlarini siklik surish bajarilmaydi, ikkinchi satr bo‘yicha 1 baytga, uchinchi satr bo‘yicha 2 baytga, to‘rtinchi satr bo‘yicha 3 baytga siklik surish amalga oshiriladi. [4]
l = 192 bitli shifrlash uchun Nb=6 ga teng bo‘lib, birinchi satr bo‘yicha holat baytlarini siklik surish bajarilmaydi, ikkinchi satr bo‘yicha 1 baytga, uchinchi satr bo‘yicha 2 baytga, to‘rtinchi satr bo‘yicha 3 baytga siklik surish bajariladi.
l = 256 bitli shifrlash uchun Nb=8 ga teng bo‘lib birinchi satr bo‘yicha holat baytlarini siklik surish bajarilmaydi, ikkinchi qator bo‘yicha 1 baytga, uchinchi satr bo‘yicha 3 baytga, to‘rtinchi satr bo‘yicha 4 baytga siklik surish amalga oshiriladi.
7 – jadvalda esa l = 128 bitli shifrlash uchun Nb=4 ga teng bo‘lganda, satrlarni siklik surish bajarilgandan keyingi baytlarning o‘rni qay tarzda o‘zgarishi ko‘rsatilgan.
1.8-jadval
S’00
|
S’01
|
S’02
|
S’03
|
S’10
|
S’11
|
S’12
|
S’13
|
S’20
|
S’21
|
S’22
|
S’23
|
S’30
|
S’31
|
S’32
|
S’33
|
S’00
|
S’01
|
S’02
|
S’03
|
S’11
|
S’12
|
S’13
|
S’10
|
S’22
|
S’23
|
S’20
|
S’21
|
S’33
|
S’30
|
S’31
|
S’32
|
ShiftRows jadvali
ShiftRows
MixColumns (Ustun elementlarini aralashtirish) akslantirishida holat ustunlari elementlari uchinchi darajadan katta bo‘lmagan ko‘phadning koefisentlari sifatida ifodalanib, ana shu ko‘phad algoritmda berilgan:
g(x) = {03}x3 +{01}x2 +{01}x+{02}
ko‘phadga x4+1 modul bo‘yicha ko‘paytiriladi.
Quyidagicha belgilash kiritilib:
11
12
13
10
s00 = s’00 , s10 = s’ , s20 = s’22 , s30 = s’33 , s01 = s’01 , s11 = s’ , s21 = s’23 , s31 = s’30 , s02 = s’02 , s12 = s’ , s22 = s’20 , s32 = s’31 , s03 = s’03 , s13 = s’ , s23 = s’21 , s33 = s’32
ta'kidlangan ko‘phadlarning ko‘paytmasini matrisa ko‘rinishidagi ifodasi:
s '
s
0 j 02
03 01
01 0 j
s ' 01 02 03 01 s
1 j
1 j
s ' 01 01 02 03 s
0 c 3
2 j
2 j
s '
03 01 01 02 s
3 j
3 j
bo‘ladi, bu erda c- ustun nomeri.
Oxirgi tenglik
s 0 c s1c s 2 c s 3 c
({ 02 } s 0 c ) ({ 03} s1c ) s 2 c s 3 c ,
s 0 c ({ 02 } s1c ) ({ 03} s 2 c ) s 3 c ,
s 0 c s1c ({ 02 } s 2 c ) ({ 03} s 3 c ),
({ 03} s 0 c ) s1c s 2 c ({ 02 } s 3 c ,
tengliklarga ekvivalent.
AddRoundKey (Raund kalitlarini qo‘shish) akslantirishda holat blokining bitlari kalit bloki mos bitlari bilan xarakteristikasi ikki bo‘lgan chekli maydonda qo‘shiladi, ya'ni, massivning har bir ustuni va shu ustunning elementlari kalit massivining mos ustun va elementlariga XOR amali bilan qo‘shiladi.
Kalitlar generasiyasi algoritmi (Key Schedule).
Raund kalitlari daslabki kalitdan, algoritmda ko‘zda tutilgan hamma raundlar
uchun yaratib olinadi. Bu jarayon:
kalitni kengaytirish (Key Expansion);
raund kalitlarini tanlash (Round Key Selection) bosqichlaridan iborat.
Raund kalitlarining umumiy bitlari soni kirish ma'lumotining bitlari sonini raund soniga ko‘paytmasiga va yana bitta kirish ma'lumotining bitlari sonini yig‘indisiga teng (misol uchun 128 bitli shifrlash uchun 128*10+128=1408 bit raund kaliti kerak bo‘ladi), ya'ni Nb (Nr+1) va l(Nr +1)=128 11=1408 bit.
Demak, 128 bit uzunlikdagi blok va 10 raund uchun 1408 bit raund kalitlari talab qilinadi.
Dastlabki kalitni kengaytirishda, 128 bitli (16 bayt, simvol) boshlang‘ich kiruvchi kalit kiritib olinadi va to‘rtta ( w1, w2, w3, w4 ) 32 bitdan bo‘lgan bo‘lakka bo‘linadi. Qolgan kengaytirilgan kalitlar mana shu to‘rtta ( w1, w2, w3, w4 ) kengaytirilgan kalitlar yordamida topiladi. Ya'ni, kengaytirilgan kalitlar quyida keltirilgan (1) va (2) formulalar asosida hisoblab topiladi. Kengaytirilgan kalitlar soni
N[w(i)] Nb (Nr 1) ;
Biz ko‘rayotgan holatda Nb = 4, Nr = 10 ga teng ya'ni, bayt uzunligi 4 ga,
raundlar soni 10 ga teng. Shularni bilgan holda
N [ w (i )]
ni topiladi:
N [ w ( i )] = 4*(10+1) = 44
Demak, 128 bitli kirish blokiga va 10 ta raundga ega bo‘lgan shifrlash uchun 44 ta kengaytirilgan kalitlar kerak bo‘lar ekan.
Raund kalitlari kengaytirilgan kalitlardan quyida bayon qilingan qoida asosida yaratiladi. Kalitlar generasiyasining formulalari quyidagi ko‘rinishlarga ega:
w[i]= w[i-1] w[i-Nk] , (3)
va
w[i]= SubWord ( RotWord ( w[i-1] )) Rcon[ i/Nk] w[i-Nk]. (4.4) Bizning holatda Nk = 4 bo‘lganligi sababli i=4,8,12,16,20,… qiymatlar uchun
(4.2) formuladan foydalanib, kengaytirilgan kalitlar topiladi. Ya'ni, i ning 4 ga karrali, 4 ga qoldiqsiz bo‘linadigan qiymatlarida (4.2) formuladan foydalaniladi. Qolgan barcha i = 5,6,7,9,10,11,13,... qiymatlarida (3) formuladan foydalaniladi.Bu erda w(i) – 32 bit
– so‘zlardan iborat.
Masalan, biz ko‘rayotgan holda raund kalitining uzunligi 128 bitga teng bo‘lib, u to‘rtta kengaytirilgan kalitga teng bo‘ladi, ya'ni,
128 : 32 = 4 demak, w(i) = 1,2,3,4
w1=W1, W2, W3, W4, W5, W6, W7, W8, W9, W10, W11, W12, W13, W14, W15, W16, W17, W18, W19, W20, W21, W22, W23, W24, W25, W26, W27, W28, W29, W30, W31, W32;
w2=W33, W34, W35, W36, W37, W38, W39, W40, W41, W42, W43, W44, W45, W46, W47, W48, W49, W50, W51, W52, W53, W54, W55, W56, W57, W58, W59, W60, W61, W62, W63, W64;
w3=W65 , W66 , W67 , W68 , W69 , W7 , W71 , W72 , W73 , W74 , W75 , W76 , W77 , W78 , W79 , W8 W81 , W82 , W83 , W84 , W85 , W86 , W87 , W88 , W89 , W9 , W91 , W92 , W93 , W94 , W95 , W96 ; w4= W97 , W98 , W99 , W100 , W101 , W102 , W103 , W104 , W105 , W106 , W107 , W108 , W109 , W110
, W111 , W112 , W113 , W114 , W115 , W116 , W117 , W118 , W119 , W120 , W121 , W122 , W123 , W124 , W125 , W126 , W127 , W128 ;
1.9 – jadval.
Algoritm barcha raund kalitlari
0 – raund kaliti kirish kaliti
|
w0, w1, w2, w3.
|
1 – raund kaliti
|
|
|