4.4 Rijndael алгоритмы
Rijndael алгоритмды («Рейндал» деп оқылады) бельгияның мамандары Joan Daemen
(Proton World International) және Vincent Rijmen (Katholieke Universiteit Leuven) жасаған
болатын. Бұл шифр АҚШ-та AES (Advanced Encryption Standard) атағын алу үшін
конкурста жеңді және 2001 жылы жаңа американ стандарты ретінде қабылданды. Rijndael
54
алгоритмды бейнелеу оңай емес, сондықтан тек негізгі құру аспектілерін және пайдалану
ерекшелігін қарастырайық.
Rijndael / AES шифры (яғни ұсынылатын стандарт) 128 битты блокпен, кілт
ұзындығымен 128, 192 немесе 256 бит және кілт ұзындығына тәуелді раундтар санымен
10, 12 немесе 14 сипатталады. Rijndael құрылымын 32-ге еселі блок пен кілттің түрлі
мөлшеріне лайықтауға болады және раунд санын өзгертуге болады.
DES пен ГОСТ 28147-89 ұсынатын шифрларға қарағанда Rijndael негізінде
Фейштель желісі жатпайды. Rijndael негізінде сызықты-ауыстырылу деп аталатын
түрлендіру жатыр. Деректер блогы байттар массивтерге бөлінеді, және әрбір шифрлау
операциясы байт-бағытталған болып табылады. Әрбір раунд үш әртүрлі қайтымды
түрлендіруден тұрады, оларды қабаттар деп атайды. Бұл қабаттар келесі.
1. Сызықты емес қабат. Бұл қабатта байттар ауыстыруы орындалады. Қабат тиімді
сызықты еместігі бар S-блоктар көмегімен жүзеге асырылған, және дифференциал,
сызықтық және басқа криптоталдау әдістерінің пайдалану мүмкіндігін болдырмайды.
2. Сызықтық араластыру қабаты статистикалық байланысты жасыру үшін блок
символдарының өзара ішіне кіруінің жоғары дәрежесін кепілдейді. Бұл қабатта
тікбұрышты байт массивінде массив жолдарының ығысуы мен бағандардың орын
ауыстыруы орындалады.
3. Қосалқы кілті бар модуль 2 бойынша қосу қабаты шифрлауды тікелей
орындайды.
Шифр кілтпен қосуымен басталады және аяқталады. Бұл белгілі мәтін арқылы
шабуыл кезінде бірінші раундтың кіруін жабады және соңғы раундтың нәтижесін
криптографиялық маңызды болып істейді.
Алгоритмда кестелік есептер кең пайдаланады, барлық қажетті кестелер тұрақты
түрде беріледі, яғни не кілтке не деректерге тәуелді емес.
Айта кетейік, Фейштель желі бойынша құрастырылған шифрларға қарағанда,
Rijndael-да шифрлау мен дешифрлау функциялары әртүрлі.
Rijndael алгоритмы бағдарламалық та аппараттық та жүзеге асыруда жақсы
орындалады. Rijndael-да жадқа қойылатын талаптары аса жоғары емес, сондықтан оны
шектелген ресурстары бар жүйеде пайдалануға болады. Rijndael алгоритмның сенімділігі
өте жоғары.
4.5 Блокты алгоритмдердің жұмыс тәртіптері
Блокты шифрлар әртүрлі есептерді орындау үшін пайдалану мүмкін. Сондықтан,
түрлі симметриялық блокты шифрлау алгоритмы үшін оның бірнеше қолдану тәртібі
анықталған. Әрбір тәртіптің өз ерекшелігі мен қолдану саласы бар.
Кейбір блокты шифр бар болсын, ол К кілт көмегімен бастапқы Х деректер
блогының Y шифрланған блоққа f түрлендіруін орындайды:
Y = f(X,K)
Түрлендіру f-ң кейбір мүмкін болатын орындау тәртіптерің қарап шығайық.
Ең қарапайым тіртібі қарапайым блокша ауыстыру тәртібі. Мамандар бұл
тәртіпті ECB - Electronic CodeВook деп атайды (аудырылады – электронды код кітабі).
Осы тәртіпте бастапқы деректердің әрбір блогы бірдей кілтті пайдаланып басқа блоктарға
тәуелсіз шифрланады. Егер хабар блок ұзындығынан артық болса, онда ол сәйкес
ұзындығы бар Х
1
, Х
2
,..., X
n
блоктарға бөлінеді. Керек болса соңғы блок тіркелген
мәндірімен толтырылады. Әрбір блок блокты шифрмен шифрланады:
Y = f(X
i
,K) барлық 1-ден n-ға дейін i үшін
Бастапқы X
i
деректер блоктарының шифрлау нәтижесінде шифрланған хабар Y =
Y
1
, Y
2
,..., Y
n
алынады.
Дешифрлау мына ереже бойынша орындалады
X = f
-1
(Y
i
,K) барлық 1-ден n-ға дейін i үшін
55
ECB тәртіптің анықтамасынан шығады, хабардың ашып оқуын шифрмәтін
блоктарын ретсіз түрде таңдап жүргізуге болады. Осындай тәртіп көп нақты жағдайларда
ыңғайлы. Мысалы, ECB тәртібінде шифрланған деректер базамен жұмыс істеуге болады,
егер оның әрбір жазуы жеке деректер блогы болса және басқалардан жеке шифрланған
болса.
Осы тәртіптің кемшілігі - бастапқы мәтіннің бірдей блоктары бірдей шифрмәтінге
түрлендіріледі. Нақты шифрланатын деректер жиынтықтарда қайталанатын элементтер
жиі кездеседі. Хабарларда жоғары артықшылығы болу мүмкін: қайталанатын бастары
және аяқтары немесе нөлдер мен ақ жолдарының ұзын сериясы. Сонымен, қарсыластын
қолына жиілік талдауды жүргізу үшін мәліметтер түсу мүмкін. Және де қарсылас
алушыны алдау үшін шифрланған хабарды өзгерту немесе ауыстыру мүмкін.
Толығымен, ECB тәртібі бөлек қысқа хабарларды (мысалы, криптографиялық
кілтті) беру үшін пайдалануға ұсынылады.
Бірнеше деректер блоктарын бергенде ECB-ң кемшіліктерін жою үшін келесі
тәртіп ұсынылады CBC (Chipher Block Chaining) – шифр блоктарын тіркелу тәртібі.
СВС тәртіпте түрлендіру былай жүргізіледі: ашық мәтіннің әрбір блогы модуль 2
бойынша бұрынғы блоктың шифрлау нәтижесімен қосылады. Сонымен, бұрынғы
блоктарының шифрлау нәтижелері келесі блоктардың шифрлауына әсер етеді. СВС
тәртіпте шифрлау операциясы математикалық түрде келесі формуламен сипатталады:
Y = f((X
i
Y
i-1
), K) барлық 1-ден n-ға дейін i үшін
Яғни келесі блоктың шифрлауының алдында ашық мәтін үстіне және бұрынғы
блоктың шифрлау нәтижесінің үстіне «модуль 2 бойынша қосынды» деген операция
орындалады. Ашық мәтін блогы шифрланғаннан кейін, ол шифраушы құрылғының
жадында сақталынады, мысалы, кері байланыс регистрде. Келесі деректер блогын
шифрлаудын алдында, ол кері байланыс регистрмен бірге «модуль 2 бойынша қосынды»
операцияға душар болады және осыдан кейін ғана шифрланады. Алынған шифрланған
блок қайтадан кері байланыс регистрде сақталынады және келесі кіру деректер блокты
шифрлауда пайдаланады, және әрі қарай хабардың аяғына дейін. Y
0
блогы бастапқы
деректердің бірінші блогын шифрлауының алдында құрастырылу қажет. Ол
инициализациялау векторы деп аталады және кіру деректердің бірінші блогымен модуль 2
бойынша қосу үшін пайдаланылады.
Кері байланысты пайдалану нәтижесінде әрбір блоктын шифрлауы барлық
бұрыңғы блоктарға тәуелді болады.
Шифрланған хабарды келесі түрде ашып оқуға болады:
X
i
= Y
i-1
f
-1
(Y
i
, K) барлық 1-ден n-ға дейін i үшін
Шифрмәтін блогы алдымен кері байланыс регистрде сақталынады, сосын
әдеттегідей дешифрланады. Онан әрі келесі блок дешифрланады және кері байланыс
регистрмен «модуль 2 бойынша қосынды» операцияға душар болады. Осылай хабардын
аяғына дейін орындалады.
Егер бастапқы X
i
деректердің барлық блоктары ұқсас болса да, шифрмәтін әртүрлі
Y блоктан тұрады. Бұл тәртіпті блок мөлшерінен артық болатын хабарларды шифрлауға
жөн. Бірақ, екі бірдей хабар бірдей де шифрланады. Осыны болдырмау үшін әрбір
шифрлауда әртүрлі инициализациялау векторын пайдалану қажет. Инициализациялау
векторы деректерді ашып оқу үшін де қажет, сондықтан оларды не шифрланған хабармен
бірге адресатқа жіберу керек не кездейсоқ тәріздес инициализациялау векторын
адресатпен бірге құрастыру керек.
СВС тәртіпте шифрланған хабарды, тек бірінші блоктан бастап рет-ретімен ашып
оқуға болады.
56
Негізгі ұғымдар
AES (Advanced Encryption Standard) – АҚШ-та 2001 жылдан деректерді шифрлау
облыста мемлекеттік стандарт ретінде пайдаланатын шифрлау алгоритмы. Стандарт
негізінде Rijndael шифры жатыр. Rijndael / AES шифры (яғни ұсынылатын стандарт) 128
битты блокпен, кілт ұзындығымен 128, 192 немесе 256 бит және кілт ұзындығына тәуелді
раундтар санымен 10, 12 немесе 14 сипатталады. Rijndael негізін сызықты-ауыстырылу
деп аталатын түрлендірулер құрайды. Rijndael құрылымын 32-ге еселі блок пен кілттің
түрлі мөлшеріне лайықтауға болады және раунд санын өзгертуге болады. Алгоритмда
кестелік есептер кең пайдаланады, барлық қажетті кестелер тұрақты түрде беріледі, яғни
не кілтке не деректерге тәуелді емес.
DES (Data Encryption Standard) – АҚШ-та 1977 жылдан 2001 жылға дейін
деректерді шифрлау облыста мемлекеттік стандарт ретінде пайдаланған шифрлау
алгоритмы. DES-ң негізгі параметрі: блок өлшемі 64 бит, кілт ұзындығы 56 бит, раунд
саны – 16. DES бұл екі бұтағы бар классикалық Фейштель желісі. Алгоритм бірнеше
раундта деректердің 64-битты кіру блогын 64-битты шығу блокка түрлендіреді. DES
стандарты орын ауыстыруды, алмастыруды және гаммалауды араластырып пайдаланады.
Құрастырылған (композициялық) шифр - бірнеше қатарынан пайдаланған
қарапайым шифрлардың комбинациясы нәтижесінде деректердің криптографиялық
түрлендіруі.
ECB (Electronic CodeВook) тәртібі – блокты шифрлау алгоритмның пайдалану
тәртібінің біреуі. Ааудырылады – электронды код кітабі – бұл қарапайым блокша
ауыстыру тәртібі. Осы тәртіпте бастапқы деректердің әрбір блогы бірдей кілтті
пайдаланып басқа блоктарға тәуелсіз шифрланады. Егер хабар блок ұзындығынан артық
болса, онда ол сәйкес ұзындығы бар блоктарға бөлінеді. Керек болса соңғы блок тіркелген
мәндірімен толтырылады. ECB тәртібі бөлек қысқа хабарларды (мысалы,
криптографиялық кілтті) беру үшін пайдалануға ұсынылады.
CBC (Chipher Block Chaining) тәртібі – шифр блоктарын тіркелу тәртібі. Блокты
шифрлау алгоритмның пайдалану тәртібінің біреуі. СВС тәртіпте түрлендіру былай
жүргізіледі: ашық мәтіннің әрбір блогы модуль 2 бойынша бұрынғы блоктың шифрлау
нәтижесімен қосылады. Сонымен, бұрынғы блоктарының шифрлау нәтижелері келесі
блоктардың шифрлауына әсер етеді.
Сұрақтар
1. Қандай шифр құрастырылған немесе композициялық шифр деп аталады?
2. Блокты шифрлау алгоритмның беріктігіне қандай факторлар әсер етеді?
3. Фейштель желісі деген не?
4. Симметриялық шифрлау DES, AES алгоритмдардың негізгі параметрлерін атйып
беріңіз.
5. Блокты шифрлау DES, AES алгоритмда қандай операциялар пайдаланады?
6. «Ортада кездесу» шабуыл деген не?
7. Үш еселі DES-ты пайдалану принципі қандай?
8. Қарапайым ауыстыру тәртібінде (ЕСВ) блокты шифрлау алгоритмы қалай
пайдаланады?
9. ЕСВ тәртібінің кемшіліктері қандай?
10. Шифр блоктарын тіркелу тәртібінде шифрлау алгоритмның пайдалану
ерекшелігі қандай?
11. СВС тәртібінің кемшіліктері қандай?
57
Жаттығулар
1. Модулі 2 бойынша қосыңыз:
- екілік сандарды 10101100 мен 11001010;
- ондық сандарды 15 пен 10;
- он алтылық сандарды 0В5 пен 37.
Ескерту: ондық және он алтылық сандарды алдымен екілік түрге айналдыру қажет.
2. Модулі 2
8
бойынша қосыңыз:
- екілік сандарды 10101100 мен 11001010;
- ондық сандарды 155 пен 100;
- он алтылық сандарды 0В5 пен 37.
Ескерту: ондық сандарды алдымен екілік түрге айналдыру қажет.
3. Циклдық ығысу операцияны орындаңыз:
- екілік сан 10101100 үшін солға қарай 5 разрядқа;
- он алтылық сан 9Е үшін оңға қарай 4 разрядқа;
- он алтылық сан 55 үшін оңға қарай 2 разрядқа;
Ескерту: он алтылық сандарды алдымен екілік түрге айналдыру қажет.
5
ДЕРЕКТЕРДІ КРИПТОГРАФИЯЛЫҚ ТҮРЛЕНДІРУ
ГОСТ 28147
-
89 АЛГОРИТМЫ
Бұл бөлімде ресей блокты шифрлау алгоритмы сипатталған. Бөлімде ГОСТ 28147-
89 алгоритмның құрылымы және деректерді шифрлау тәртіптері толық қарастырылады.
Бөлім мақсаты: блокты шифрлау ГОСТ 28147-89 алгоритмды зерттеу.
5.1 Негізгі мәліметтер
Ресейде жабық кілті бар блокты шифрлау алгоритмның стандарты ретінде 1989
жылы ГОСТ 28147-89 қабылданған болатын. Оның пайдалануы деректерді
криптографиялық қорғау үшін ұсынылады. Шифр принциптері американдық DES-қа
ұқсайды, бірақ оған қарағанда бағдарламалық жүзеге асурыға ыңғайлылау.
Американдық DES-қа қарағанда ГОСТ-ң кілті ұзынырақ - 256 бит. Одан басқа,
ресей стандарты шифрлаудын 32 раундын пайдаланады, ал DES-та – тек 16 ғана.
Сонымен, деректерді криптографиялық түрлендіру ГОСТ 28147-89 алгоритмның
негізгі параметрлері келесі: блок өлшемі 64 бит, кілт мөлшері - 256 бит, раундтар саны –
32.
Алгоритм классикалық Фейштель желісі болып табылады. Шифрланатын деректер
блогы екі бірдей бөлшекке бөлінеді, оң жаққа R және сол жаққа L. Оң жағы раундтын
қосалқы кілтімен қосылады және кейбір алгоритм бойынша сол жағын шифрлайды. Келесі
раунд алдында сол жағы және оң жағы орындарын айырбастайды. Осындай құрылым
блокты шифрлау үшін де дешифрлау үшін де бірдей алгоритмды пайдалануына мүмкіндік
береді. Шифрлау алгоритмда келесі операциялар пайдаланылады:
- модулі 2
32
бойынша сөздерді қосу;
- сөзді көрсетілген бит санына солға қарай циклдық ығысу;
- модулі 2 бойынша бит бойы қосу;
- кесте арқылы ауыстыру.
58
ГОСТ алгоритмның түрлі қадамдарында деректер түсіндіріледі және әртүрлі
пайдаланады. Кейбір жағдайда деректер элементы тәуелсіз биттер массивы ретінде
өңделеді, басқа жағдайда – таңбасы жоқ бүтін сан ретінде, үшінші жағдайда – бірнеше
қарапайым элементтен тұратын күрделі элемент ретінде өңделеді.
5.2 ГОСТ 28147-89 раундының құрылысы
ГОСТ 28147-89 бір раундының құрылысы 5.1 суретте көрсетілген.
Шифрланатын деректер блогы екі бөлшекке бөлінеді, олар кейін жеке 32-битты
таңбасы жоқ бүтін сан ретінде өңделді. Алдымен блоктын оң жақ жартысы және раундтың
қосалқы кілті модулі 2
32
бойынша қосылады. Сосын блок бойы ауыстыру жүргізіледі.
Алдынғы қадамда алынған 32-битты мән (оны S деп белгілейік) кодтың сегіз 4-битты
блоктан тұратын массив ретінде түсіндіріледі: S=(S
0
, S
1
, S
2
, S
3
, S
4
, S
5
, S
6
, S
7
). Әрі қарай
әрбір сегіз блоктын мәні жаңаға ауыстырылады, ол ауыстыру кестеден былай таңдап
алынады: S
i
блок мәні i-ші ауыстыру түйіндінің (яғни ауыстыру кестенің i-ші жолы) S
i
ретті элементпен (нөмірлеу нөлден басталады) ауыстырылады. Басқа сөзбен айтқанда,
блок мәні үшін ауыстыру ретінде жол нөмірі ауыстырылатын блок нөміріне тең, және
баған нөмірі ауыстырылатын блок мәніне тең элемент таңдап алынады. Ауыстыру
кестенің әрбір жолында 0 ден 15 дейін сандар ретсіз, қайталанбай жазылған (себебі төрт
битта 0 ден 15 диапазондағы таңбасы жоқ бүтін сан жазулы мүмкін). Мысалы, S-блоктың
бірінші жолында мұндай мән болу мүмкін: 5, 8, 1, 13, 10, 3, 4, 2, 14, 15, 12, 7, 6, 0, 9, 11.
Бұл жағдайда S
0
блогының (32-разрядты S санның төрт кіші биты) мәні нөмірі,
ауыстырылатын блок мәніне тең, позицияда тұратын санға ауыстырылады. Егер S
0
= 0,
онда 5 ауыстырылады, егер S
0
= 1, онда ол 8 ауыстырылады және т.б.
59
Сурет 5.1. ГОСТ 28147-89 бір раундының құрылысы
Ауыстыруды орындағаннан кейін барлық 4-битты блоктар қайтадан бірыңғай 32-
битты сөзге бірлеседі, ол сосын 11 битке солға қарай циклдық ығысады. Ақырында, бит
бойы «модулі 2 бойынша қосу» операция көмегімен нәтиже сол жақ жартысымен
бірлеседі, осыдан жаңа оң жақ жартысы R
i
табылады. Жаңа сол жағы L
i
өзгертілетің
блоктың кіші бөлігіне тең деп алынады: L
i
= R
i-1
.
Өзгертілетің блоктың алынған мәні шифрлау алгоритмның бір раундының орындау
нәтижесі ретінде қарастырылады.
Шифрлау мен ашып оқу процедурасы
ГОСТ 28147-89 блокты шифр, сондықтан деректердің түрлендіруі базалық циклда
блоктармен жүзеге асырылады. Базалық циклда деректер блогы үшін негізгі раунд
бірнеше рет орындалады. Әрбір раундта сегіз мүмкін 32-разрядты қосалқы кілттердің
біреуі пайдаланады.
Раундтардың қосалқы кілттерін жасау процесін қарап шығайық. ГОСТ-а бұл
процедура өте қарапайым, әсіресе DES-пен салыстырғанда. 256-битты кілт К сегіз 32-
битты қосалқы кілттерге K
0
, K
1
, K
2
, K
3
, K
4
, K
5
, K
6
, K
7
бөлінеді. Алгоритмда 32 раунд бар,
сондықтан әрбір қосалқы кілт шифрлау кезінде төрт раундта 5.1 кестеде көрсетілген
ретімен пайдаланады.
Кесте 5.1. Шифрлау кезінде қосалқы кілттерді пайдалану реті
Раунд
1 2 3 4 5 6 7 8
Қосалқы кілт K
0
K
1
K
2
K
3
K
4
K
5
K
6
K
7
Раунд
9 10 11 12 13 14 15 16
Қосалқы кілт K
0
K
1
K
2
K
3
K
4
K
5
K
6
K
7
Раунд
17 18 19 20 21 22 23 24
Қосалқы кілт K
0
K
1
K
2
K
3
K
4
K
5
K
6
K
7
Раунд
25 26 27 28 29 30 31 32
Қосалқы кілт K
7
K
6
K
5
K
4
K
3
K
2
K
1
K
0
Ашып оқу процесі шифрлаудағы алгоритмы бойынша жүргізіледі. Бір ғана
айырмашылығы қосалқы кілттердің K
i
пайдалану ретінде. Ашып оқуда қосалқы кілттер
кері ретімен пайдалану керек, 5.2 кестеде көрсетілгендей.
Кесте 5.2. Ашып оқу кезінде қосалқы кілттерді пайдалану реті
Раунд
1 2 3 4 5 6 7 8
Қосалқы кілт K
0
K
1
K
2
K
3
K
4
K
5
K
6
K
7
Раунд
9 10 11 12 13 14 15 16
Қосалқы кілт K
7
K
6
K
5
K
4
K
3
K
2
K
1
K
0
60
Раунд
17 18 19 20 21 22 23 24
Қосалқы кілт K
7
K
6
K
5
K
4
K
3
K
2
K
1
K
0
Раунд
25 26 27 28 29 30 31 32
Қосалқы кілт K
7
K
6
K
5
K
4
K
3
K
2
K
1
K
0
5.3 Шифрлаудың негізгі тәртіптері
ГОСТ 28147-89 деректерді шифрлаудың келесі тәртіптері бар: қарапайым
ауыстыру, гаммалау, кері байланысы бар гаммалау және бір қосымша тәртіп еліктеу
ендірмені жасау.
Осы тәртіптердің қайсысында да деректер шифрланатын массив бөлінген 64 битты
блоктармен өңделеді, дәл сондықтан ГОСТ 28147-89 блокты шифрларға жатады.
Гаммалау тәртібінде толық емес (өлшемі 8 биттан кем) деректер блокты өңдеуге
мұмкіндік бар.
Қарапайым ауыстыру тәртібі. Бұл блокты шифрды пайдалану тәртібі блок бойы
қарапайым ауыстыру тәртібіне (ЕСВ) ұқсас. Бұл тәртіпте бастапқы деректердің әрбір
блогы бірдей шифрлау кілтті пайдаланып басқа блоктардан тәуелсіз шифрланады. Осы
тәртіптің ерекшелігі - бастапқы мәтіннің бірдей блоктары бірдей шифрмәтінге
түрлендіріледі. Сондықтан, қарапайым ауыстыру тәртібін ГОСТ 28147-89 тек кілттерді
шифрлау үшін ұсынады.
Гаммалау және кері байланысы бар гаммалау тәртібі кез келген өлшемді деректерді
шифрлау үшін пайдалануға болады.
Гаммалау тәртібінде бастапқы мәтіннің биттері модулі 2 бойынша гаммамен
қосылады, гамма шифрлау ГОСТ 28147-89 алгоритмы көмегімен жасалынады. Яғни
берілген тәртіпте шифрлау ГОСТ алгоритмы генератор ретінде 64-разрядты гамма
блоктарын пайдаланады. Әрбір жаңа деректер блокты шифрлағанда, бұрыңғы қадамда
пайдаланған гамма шифрланады және «жаңа» гамма ретінде пайдаланады. Ең бірінші
гамманы алу үшін бастапқы деректер массивы ретінде синхрожөнелту деп аталатын 64-
түрлі бастапқы деректер блогы пайдаланады (ол екі жақта да бірдей болу керек).
Гамманың салу мен алуы бір модулі 2 бойынша қосу операция көмегімен
орындалғандықтан, гаммалау тәртібінде шифрлау және дешифрлау алгоритмдер сәйкес
келеді.
Нақты шифрлау массивтері үшін гамма элементтері әртүрлі болғандықтан, екі
бірдей блоктын шифрлау нәтижесі де әртүрлі болады. Одан басқа, гамма элементтері
бірдей 64 битты порциямен жасалынса да, осындай блоктың шифрланатын блок өлшеміне
тең бір бөлігін де пайдалануға болады. Дәл осы толық емес деректер блокты шифрлауға
мүмкіндік береді.
Достарыңызбен бөлісу: |