Cədvəl 5.7. Açarın hesablanması üçün sürüşdürmə cədvəli
İterasiyanın N°-si
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Sola sürüşmələrin sayı
1
1
2
2
2
2
2
2
1
2
2
2
2
2
2
1
Hər iterasiyanm sonunda alman Ki açarı 56 bitlik C;||D; ardıcıllığından H funksiyasının (cədvəl 5.8) ki məyi ilə seçilmiş və yerləri dəyişdirilmiş 48 bitlik ardıcıllıqdan ibarətdir:
AES (Advanced Encryption Standard) 2000-ci ildə DES standartının əvəzinə ümummilli standart kimi istifadə üçün qəbul edilmişdir. Onun əsasmı blok şifri olan Rijndael alqoritmi təşkil edir. Alqoritmin təsviri zamanı Feystel şəbəkəsindən deyil, GF(28) Qalua meydanından istifadə olunur. GF(28) meydanı
m(x) = x8 + x4 + x3 + x +1
çoxhədlisinin kökləri üzrə GF(2) meydanının genişlənməsi şəklində qurulur.
Qeyd olunmalıdır ki, verilənlərin bitləri 0-dan başlayaraq, böyükdən kiçiyə doğru nömrələnir. Alqoritmdə əsas məsələ kodların polinom çoxhədli şəklində təsvir edilməsindən ibarətdir. Belə ki, “10110101” şəklində bayt “x7+x5+x4+x2+l” çoxhədlisi kimi təqdim olunur. Burada yuxanda göstərilən m(x) çoxhədlisi meydanm elementlərinin təqdim olunmasının effektivliyi səbəbindən seçilmişdir.
Rijndael alqoritmində blok və açar dəyişən uzunluğa malikdir, onların uzunluqları bir-birindən asılı olmadan 128, 192 və ya 256 bitə bərabər seçilə bilər.
Şifrləmə prosesi State (vəziyyət) adlanan hər hansı aralıq struktur (blok) üzərində yerinə yetirilən iterasiyalar ardıcıllığından ibarətdir. State və açar baytları matrislər şəklində təsvir olunurlar. Bu matrislərin sətirlərinin sayı - 4, sütunlarının sayı isə, uyğun olaraq, və 2V*/32 olur. Burada M - blokun, M isə açarın uzunluğudur.
Alqoritmin giriş və çıxış qiymətləri baytlann müvafiq uzunluqda birölçülü massivi şəklində təqdim olunur. State və açar massivləri giriş massivlərindən əvvəlcə sütunlarla, soma isə sətirlərlə doldurulur.
Şifrləmə prosesi iterasiyalı şəkildə dörd müxtəlif çevirməni yerinə yetirən proseduralardan ibarətdir.
AddRoundKey - dövr (raund) açarının əlavə edilməsi (toplanması) prosedurası.
Alqoritmin iterasiyalarımn sayı (M) blokun və açarın uzunluqlarından (M və M) asılı olaraq aşağıdakı cədvələ uyğun müəyyən edilir:
M=4 (128b)
M=6 (192b)
M=8 (256b)
M=4 (128b)
10
12
14
M=6 (192b)
12
12
14
M=8 (256b)
14
14
14
SubByte prosedurası
SubByte (Byte Substitution) prosedurasında baytlarm əvəz edilməsi S-blok və ya S-box adlanan əvəzetmə cədvəli vasitəsilə həyata keçirilir. Bu cədvəl bir-birindən asılı olmadan State blokunun hər bir baytma tətbiq olunur, onların qeyri-xətti çevirməsini təmin edir (şək.5.11):
bu =S(aij),i,j = 1,2,3.
Şək.5.11. SubByte prosedurası
Əvəzetmə prosedurası iki əməliyyatı özündə birləşdirir: Hər bir bayt GF(28) meydanında multiplikativ vurmaya nəzərən tərsi ilə əvəz edilir:
Zıf1=b; modm(x).
Bu zaman “00” baytı öz-özünə çevrilir. Hər bir bayt üçün GF(2) meydanında aşağıdakı düsturla müəyyən edilən affin çevirməsi həyata keçirilir:
Bu çevirmə zamanı State cədvəlinin sətirləri dövri olaraq sola doğru rf bayt sürüşdürülür. 0-cı sətir sürüşdürülmür, yəni r,=0, 1-ci sətir Ib sürüşdürülür, yəni r=lb və s. Beləliklə, ShiftRows prosedurasından soma alman çıxış State cədvəlinin sütunları başlanğıc (giriş) State cədvəlinin hər sütunundan bir baytı özündə birləşdirir (şək.5.12).
Şək.5.12. ShiftRows prosedurası
Sürüşmə
yoxdur
lb
<—2b
<—3b
M qiymətindən asılı olaraq, r,- kəmiyyətinin qiymətləri aşağıdakı cədvəldə göstərilmişdir:
M
I rı
r2
r3
4
6
8
1
1
1
2
2
3
3
3
4
Cədvəldən göründüyü kimi, burada 128 və 192 bitlik sətirlər üçün sürüşmənin qiyməti eyni, 256 bitlik sətirlər üçün isə fərqlidir.
MixColumns prosedurası
Bu prosedura zamanı tərsi olan xətti çevirmə vasitəsilə State cədvəlinin sütunlarının baytlan qarışdırılır (şək.5.13). Bunun üçün cədvəlin hər bir sütunu ayrı-ayrılıqda emal olunur. Sütunlardan dörd dərəcəli polinom düzəldilir və bu polinom GF(28) meydanında a4+1 moduluna görə təsbit edilmiş c(x)=3x3+x2+x+2 çoxhədlisinə vurulur:
b(x) = c(x) ■ a(x) mod(v4 +1).
Şək.5.13. MixColumns prosedurası
Bu çevirməni matrislərin köməyi ilə aşağıdakı kimi yazmaq olar:
b0
1
0
0
0
1
1
1
1
b0
1
b{
1
1
0
0
0
1
1
1
b,
1
b2
1
1
1
0
0
0
1
1
b2
0
b3
1
1
1
1
0
0
0
1
b3
0
—
*
+
b.
1
1
1
1
1
0
0
0
b.
0
b5
0
1
1
1
1
1
0
0
b5
1
b6
0
0
1
1
1
1
1
0
b6
1
b'ı
0
0
0
1
1
1
1
1
b7
0
ShiftRows prosedurası
Bu çevirmə zamanı State cədvəlinin sətirləri dövri olaraq sola doğru r,- bayt sürüşdürülür. 0-cı sətir sürüşdürülmür, yəni r,=0. 1-ci sətir Ib sürüşdürülür, yəni r=lb və s. Beləliklə, ShiftRows prosedurasından soma alman çıxış State cədvəlinin sütunları başlanğıc (giriş) State cədvəlinin hər sütunundan bir baytı özündə birləşdirir (şək.5.12).