ПОӘК 042-18.39.1.206/01-2013
10.09.2013 ж. № 1 басылым
81 беттің 27
Шифрлау блогы N
b
үшін бағана, ал кілт үшін N
k
бағана қолданылады. N
k
кілт ұзындығын 32
бөлгендегі шығатын санға тең. N
b
блок ұзындығын 32 бөлгендегі шығатын санға тең.
Раунд саны N
b
және N сандарына тәуелді (7-кестеге қараңыз).
7-кесте.
N
r
N
b
=4
N
b
=6
N
b
=8
N
k
10
12
14
N
k
12
12
14
N
k
14
14
14
Криптоалгоритмде
қолданылатын
операцияларGF(2
8
)өрісіне
тиісті
элементтерде
анықталған. GF(2
8
) өрісінің элементтері болып дәрежесі екілік көпмүшелер саналады. 0 1 0 1 0 1 1
1 байтына келесі көпмүше сәйкес.
х
6
+х
4
+х
2
+х+1
Қосу амалы әдеттегідей көпмүшелерді қосу және ұқсас мүшелерін XOR операциясы
көмегімен біріктіру арқылы орындалады.
(х
6
+х
4
+х
2
+х+1) + (х
7
+х+1) = х
7
+x
6
+x
4
+x
2
немесе
01010111+10000011=11010100
Екі көпмүше үшін көбейту амалын қарастырайық:
a(x) = a
3
x
3
+a
2
x
2
+a
1
x+a
0
x
b(x) = b
3
x
3
+b
2
x
2
+b
1
x+b
0
x
Нәтиже ретінде коэффиценттері келесідей С(х) көпмүшесін аламыз.
c
0
=a
0
b
0
;
c
1
=a
1
b
0
a
0
b
1
;
c
2
=a
2
b
0
a
1
b
1
a
0
b
2
;
c
3
=a
3
b
0
a
2
b
1
a
1
b
2
a
0
b
3
;
c
4
=a
3
b
1
a
2
b
2
a
1
b
3
;
c
5
=a
3
b
2
a
2
b
3
;
c
6
=a
3
b
3
Енді нәтижені дәрежесі 4-тен аспайтын көпмүше модулі бойынша алу қажет. Алгоритм
құрастырушылар келесі көпмүшені ұсынған:
(х)
х
4
+1;
Бұл мүше үшін келесі теңдік орындалады.
x
і
mod
(x)=x
i mod 4
Ақыры нәтижеміз
d(x)=d
3
x
3
+d
2
x
2
+d
1
x
1
+d
0
x
көпмүшесі болады, мұндағы
d
0
=a
0
b
0
a
3
b
1
a
2
b
2
a
1
b
3
;
d
1
=a
1
b
0
a
0
b
1
a
3
b
2
a
2
b
3
;
d
2
=a
2
b
0
a
1
b
1
a
0
b
2
a
3
b
3
;
d
3
=a
3
b
0
a
2
b
1
a
1
b
2
a
0
b
3
;
Ақырлы өрісте кез келген нөлге тең емес z элементі үшін мультипликативный кері элемент
z
-1
анықталған және zz
-1
=1
Өзара кері көпмүшелер мысалы:
(x
4
+1)(x7+x
5
+x
4
+x
2
)=1
Раунд төрт түрлендіруден тұрады: нәтижелер массивындағы байттарды ауыстыру; жолдарды
жылжыту; бағандарды араластыру; раундтық кілтті қосу.
Раунд сипаттамасы:
Round(State, RoundKey)
ПОӘК 042-18.39.1.206/01-2013
10.09.2013 ж. № 1 басылым
81 беттің 28
{
ByteSub(State);
ShiftRow(State);
MixClumn(State);
AddRoundKey(State, RoundKey);
}
Соңғы раундта бағаналарды алмастыру операциясы орындалмайды:
{
ByteSub(State);
ShiftRow(State);
AddRoundKey(State, RoundKey);
}
1-ші қадам. Байт ауыстыру
Әрбір нәтиже массивындағы байттар үшін ауыстыру процедурасы орындалады. Ауыстыру
таблицаларын келесі теңдеумен анықтауға болады: S(x)=M(1/x)+b мұндағы M таңдап алған
матрица, b – тұрақты вектор.
2-ші қадам. Жол жылжыту
Нәтижелер массивының 1-ші жолы жылжымайды. Келесі жолдар Сі, і
2..4 коэффицентіне блок
ұзындығына байланысты.
8-кесте
N
b
C
2
C
3
C
4
4
1
2
3
6
1
2
3
8
1
3
4
3-ші қадам. Бағаналарды алмастыру
Блок бағаналары GF(2
8
)өрісіндегі көпмүшелер ретінде қарастырылады. Көпмүше
c(x)=’03’x3+’01’x2+’01’x+02’ көпмүшесіне көбейтіледі, бұл операция келесі матрицаға
көбейткенмен тепе-тең:
02
03
01
01
01
02
03
01
01
01
02
03
03
01
01
02
4-ші қадам. Раундтік кілтті қосу
XOR
операциясының көмегімен нәтижелер массивы кілтшелер массивына қосылады.
Кілт жасау алгоритмі. Алдымен кілт кеңейту процедурасы орындалады. Алғашқы N
k
сөз шифрлау
кілтінен тұрады. Қалғандары индексі кішіректерінен рекурсия арқылы анықталады.
Раундтық кілттер кеңейтілген кілттен келесі ереже бойывнша алынады: бірінші раундтық кілт
алғашқы N
b
сөзге тең, екіншісі – келесі N
b
сөзге т.с.с.
Ашық кілтті криптожүйе. Ашық кілтті криптографияның негізін қалаған Уитфилдом
Диффи (Whitfield Diffie) және Мартином Хеллманом (Martin Hellman). Алдыңғы азаматтарға
тәуелсіз Ральфом Мерклом (Ralph Merkle) де ойлап тапқан. Симметриялық криптография бір
кілтті қолданса мұнда екі кілт – біріншісі шифрлау үшін, екіншісі дешифрлау үшін қолданылады.
Сіз бірінші кілтті біле отырып екіншісін біріншісінен есептеп таба алмайсыз. Диффи және
Хеллман бұл идеяны алғаш рет 1976 жылы ұсынған және «New Directions in Cryptography» атты
жұмысында жариялаған.
Бүгінгі таңда ашық кілтті криптография негізінен келесі түрлендірулердің бірін
қолданады:
- Үлкен сандарды көбейткішке жіктеу;
- Ақырлы өрістерде логарифм есептеу;