Дәріс 6
Жағдай және кілт
367.62K
Категория: ИнформатикаИнформатика

AES стандарты. Rijndael алгоритмі. (Дәріс 6)

1. Дәріс 6

AES стандарты. Rijndael
алгоритмі

2.

Енді Rijndael алгоритмін сипаттауға көшеміз.
Алгоритмді
сипаттау кезінде x8 + x4 + x3 + x +1 келтірілмеген көпмүше модулі
бойынша GF(2) өрісінің кеңейтілімі сияқты құрылған GF(28) Галуа
өрісі қолданылады. Алгоритмде операциялар осы өрісте
орындалады. Блок ұзындығы мен кілттер тәуеліз тең 128, 192 мен
256 бит таңдалуы мүмкін. Шифрлеу жағдай деп аталатын
итерацияларды
орындаудан
тұрады.
Жағдай
байттардың
тікбұрышты массиві түрінде көрсетіледі, ол 4 жол мен 32-ге
бөлінген блоктардың ұзындығына тең бағандар санынан тұрады.
Сәйкесінше, кілт тікбұрышты массив түрінде көрсетіледі, бірақ
ондағы бағандар саны 32-ге бөлінген кілт ұзындығына тең. 10-14
итерация саны тікбұрышты массивтердегі бағандар санына
байланысты.
Әрбір итерация 4 түрлендіруден тұрады: сызықты емес байттық
ауысу, жолды жылжыту, бағандарды алмастыру, кілтті қосу. Осы
операцияларды толығырақ қарастырайық.

3. Жағдай және кілт

Nk = 4
әрдайым = 4
Nb = 6 байт *
Жағдай
* AES-те Nb әрдайым= 4 байт
Rijndael 128, 192 мен 256 бит ұзындықты
қолдануға болады
Кілт
Ұзындығы 128, 192 мен 256
бит болуы мүмкін

4.

Сызықты емес байттық ауысу. Әрбір байтқа GF(28) өрісінде көбейту
бойынша кері элементті табады және оған кері байтқа алмастырады.
Нольдік байт өз өзіне көрсетіледі. Өрістің алгебралық қасиетіне
негізделген шабуылдарды болдырмас үшін әрбір байтты аффинді
түрлендіру орындалады, ол мынадай сипатталуы мүмкін
b(x) = (x7+x6+x2+x)+a(x)(x7+x6+x5+x4+1) mod (x8+1)
немесе матрицалық формада

5.

SybBytes түрлендіруі
Жағдайға SubBytes түрлендіруін қолданудың жалпы схемасы
1. Жағдайдың ағымды байты үшін GF(28) Галуа өрісінде көбейту
операциясына қатысты мәнді табу.
2. Аффинді түрлендіруді есептеу
Кері операцияда, InvSubBytes, алдымен жағдаймен кері аффинді
түрлендіру орындалады, ал содан соң көбейту бойынша кері GF(28)-де
мәні табылады.

6.

Жолды жылжыту.
Әртүрлі мөлшерге тікбұрышты массивтің үш соңғы
жолын сол жаққа циклдік жылжыту орындалады (С1, С2 мен
С3 байт, сәйкесінше).

7.

ShiftRows түрлендіруі
ShiftRows түрлендіру құрылымы
Nb жағдай ұзындығына жылжыту шамасының тәуелділігі

8.

Бағандарды алмастыру.
4-байттық векторды көрсететін бағандар 3-тен аспайтын
дәрежелі полином ретінде GF(28)-нен коэффициенттерімен
көрсетіледі және модуль бойынша x4 +1 тіркелген полиномға
көбейтіледі.
c(x) ='00000011'x3+'00000001'x2+'00000001'x+'00000010'.
c(x) x4 +1-пен өзара қарапайым болып табылады. c(x)-ке
кері полином мынаған тең
d(x)='00001011'x3+'00001101'x2+'00001001'x+'00001110'.

9.

MixColumns түрлендіруі
MixColumns түрлендіруінің құрылымы
MixColumns түрленуінің математикалық сипаттамасы
Жағдайдың әрбір бағаны Галуа өрісінде GF(28)
коэффициенттерімен полином түрінде көрсетіледі :
a(x ) = a3x3 + a2x2 + a1x + a0
ол M(x) = x4 + 1 модулі бойынша полиномға көбейтіледі:
c(x ) = ’03’x3 + ’01’x2 + ‘01’x + ‘02’

10.

Кілтті қосу жағдай массивінің әрбір байтын кілт массивінің
сәйкес байтымен екі модулі бойынша биттік қосу жүргізіледі.
Rijndael алгоритмінің ерекшелігі – әрбір итерацияда барлық
блок өзгеріске ұшырайды, сондай-ақ түрлендіру жол мен баған
бойынша екі өлшемде орындалады. Соңғысы екі итерацияда
ақпаратты толық шашыратып және араластыруға кепіл береді.
Шашырату болып ашық мәтіннің бір биті шифрмәтіннің бірнеше
битіне әсер етуі керек екендігімен түсіндіріледі. Минималды
ерекшелігі бар ашық мәтіннің екі блогын шифрлеу кезінде
шифрмәтіннің бір біріне ұқсас емес блоктары алынуы керек.
Араластыру болып шифр алғашқы мәтін символдары арасында
тәуелділікті жасыруы түсіндіріледі.

11.

AddRoundKey түрлендіруі
AddRoundKey түрлендіру құрылымы
ағымды жағдай
ағымды раунд кілті
жағдай-нәтиже
Кері түрлендіру, , InvAddRoundKey, алдыңғысымен бірдей

12.

Кілтті кеңейту механизмі
Әрбір раундте өзінің әмбебап кілті қолданылады, мұндай кілттер
раундтық (циклдік) деп аталады.

13.

Rijndael алгоритмінде бағандарды алмастырудың қосымша
операциясын қарастрайық. GF(28) өрісі көп элементтен (256)
тұратындықтан, қарапайымдылық үшін аз өрісі бар мысалмен
шектелейік. Полином коэффициенттері x4+x+1 примитивті полином
модулі бойынша тұрғызылған GF(24) өрісінен таңдап алынады
делінсін. Ал бағандар 1 байт ұзындығымен векторды көрсетеді. (x2
+1) модулі бойынша
орындалған '0011' x+'0001‘тіркелген
полиномына бағанды көбейтуді қарастырайық.
x4 + x +1 модулі бойынша GF(24) өрісін тұрғызайық. Оның
элементтері көрсетудің келесі формаларына ие:

14.

Вектор түрінде
Көпмүше түрінде
0000
0001
0010
0100
1000
0011
0110
1100
1011
0101
1010
0111
1110
1111
1101
1001
0
1
x
x2
x3
1+x
x + x2
x2 + x3
1 + x + x3
1 + x2
x + x3
1 + x + x2
x + x2 + x3
1 + x + x2 + x3
1 + x2 + x3
1 + x3
Примитивті
дәрежесі түрінде
a0
a
a2
a3
a4 =a +1
a5 = a + a2
a6 = a2 + a3
a7 = 1 + a + a3
a8 = 1 + a2
a9 = a + a3
a10 = 1 + a + a2
a11 = a + a2 +a3
a12 = 1 + a + a2 +a3
a13 = 1 + a2 +a3
a14 = 1 + a3
элемент

15.

Мұнда a15 = 1 болатынын ескеру керек.
Баған a(x) ='1110' x+'1010‘ түріне ие делік. Оны x2 +1 модулі
бойынша c(x) ='0011'x+'0001‘ полиномына көбейтейік.
Көбейтуді GF(24) өрісінің примитивті элемент дәрежесі түрінде a(x)
және c(x) коэффициенттер көрсетілуін пайдалана отырып орындауға
болады. Онда
a(x)c(x)mod(x2 +1) = (a11 x + a9)(a4 x + 1)mod(x2 +1) =
= a15 x2 + (a13 +a11)x + a9 mod(x2 +1) = x2 + (1 + a2 +a3 +a + a2 +a3)x + a9
mod(x2 +1) = = x2 + a4 x + a9 mod(x2 +1) = a4 x + a9 +1 ='0011'x+'1011'.
Барлық қосу 2 модулі бойынша орындалады.
Көбейту
a(x)
және
c(x)
полиномы
коэффициенттерінің
полиномиальді көрсетілімін пайдалана отырып орындауға болады.
Шатасып кетпеу үшін х формальді айнымалысын коэффициенттерді
полиномиальді көрсетілімде у айнымалысына алмастырамыз. Онда
мынаны аламыз:
a(x)c(x)mod(x2+1)=((y3+y2+y)x+(y3+y))((y+1)x+1)mod(x2+1)=
=(y4+y3+y2+y3+y2+y)x2+(y3+y2+y+y4+y2+y3+y)x+(y3+y)mod(x2+1)=
=(y4+y)x2+y4x+(y3+y)mod(x2+1)=x2+(y+1)x+(y3+y)mod(x2+1)=
=(y+1)x+(y3+y+1)='0011'x+'1011'.
English     Русский Правила