Лабораториялық жұмыс № 2

ГОСТ 28147-89 алгоритмі

Алгоритмнің жұмыс процессі 32 этаптан тұрады. Шифрленетін текст алдын ала 64 биттік блоктарға бөледі. Әрбір блок 32 биттік екі жартыға бөлінеді, мұнда сол немесе үлкен биттер(L), оң немесе кішкентай биттер(R) деп белгіленеді. ГОСТ алгоритмнің i-ші этапының орындалуы төменде көрсетілген:

Li = Ri-1

Ri = Li Å f(Ri-1,Ki)

Мұндағы Å - екі модулі бойынша қосу(XOR операциясы), ал f шифрлеу функциясы, Ki – кілт(кілттерді түрлендіру туралы төменде жеке түсіндіріледі). Алгоритмнің і-ші этапының орындалу схемасы 1-суретте көрсетілген.

Сурет-1 ГОСТ 28147-89 алгоритмінің бір этапы

f - шифрлеу функциясы(i- ші этап): алдымен оң жартысы(Ri-1) мен Ki кілт 232 модулі бойынша қосылады([+] -232 модулі бойынша екі 32 разрядтық екілік сандарды қосу операциясы). Сосын нәтижесі 4-биттік сегіз бөлікке бөлініп, содан кейін S- ауыстыру блоктарында алмастырылады. ГОСТ-та әр түрлі сегіз S-ауыстыру блоктары(кесте -1) қолданылады, алғашқы 4 бит бірінші S-блокта алмастырылады, екінші 4 бит екінші S-блокта және т.с.с. Әрбір S- блок 0 –ден 15-ке дейінгі орынауыстырылған сандардан тұрады. S- ауыстыру блоктары құпия сақталады, яғни құпия кілт болып есептеледі. Кездейсоқ сандар генераторының көмегімен, жасаушы S – ауыстыру блоктарың өз бетінше құрастырады.

Мысалы S1-блоктың жұмысын қарастырайық:

S1 | 4 | 10 | 9 | 2 | 13 | 8 | 0 | 14 | 6 | 11 | 1 | 12 | 7 | 15 | 5 | 3

Кірісіндегі 0101 бит шығысында 1101 битке алмастырылған.

Мұнда 01012 = 5, ал бесінші реттегі 13 элемент= 1101 болады.

Осылайша S-ауыстыру блоктардан шыққан 32 бит бірігіп, 11 битке циклді солға жылжытылады. Сонында, қозғалыстың нәтижесі мен сол жақ жартысы(L) XOR операциясының көмегімен қосылып жаңа оң жақты (Ri) береді, ал, түрлендірілмеген қалпында оң жақ(Ri-1) жаңа сол жаққа(Li) ауыстырылады(1-сурет назар аударыңыз).

Бұл әрекеттер әрбір 64 биттік блок үшін 32 рет қайталанады.

Кесте-1. S блоктар

S - Блок | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15
S1 | 4 | 10 | 9 | 2 | 13 | 8 | 0 | 14 | 6 | 11 | 1 | 12 | 7 | 15 | 5 | 3
S2 | 14 | 11 | 4 | 12 | 6 | 13 | 15 | 10 | 2 | 3 | 8 | 1 | 0 | 7 | 5 | 9
S3 | 5 | 8 | 1 | 13 | 10 | 3 | 4 | 2 | 14 | 15 | 12 | 7 | 6 | 0 | 9 | 11
S4 | 7 | 13 | 10 | 1 | 0 | 8 | 9 | 15 | 14 | 4 | 6 | 12 | 11 | 2 | 5 | 3
S5 | 6 | 12 | 7 | 1 | 5 | 15 | 13 | 8 | 4 | 10 | 9 | 14 | 0 | 3 | 11 | 2
S6 | 4 | 11 | 10 | 0 | 7 | 2 | 1 | 13 | 3 | 6 | 8 | 5 | 9 | 12 | 15 | 14
S7 | 13 | 11 | 4 | 1 | 3 | 15 | 5 | 9 | 0 | 10 | 14 | 7 | 6 | 8 | 2 | 12
S8 | 1 | 15 | 13 | 0 | 5 | 7 | 10 | 4 | 9 | 2 | 3 | 14 | 6 | 11 | 8 | 12

Кілттерді түрлендіру.

256-биттік кілт 32-биттен сегіз блокқа бөлінеді: K1, K2 , K3 , ... K8 . Әр этапта қолданылатын кілттердің реті 2 кестеде көрсетілген. Дешифрлеу үшін де осы алгоритм қолданылады, бірақ кілттер реті инвертирленеді.

Кесте-2. ГОСТ-ің әр этапында пайдаланылатын кілттер.

Этап | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16
Кілт – Kі | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8
Этап | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32
Кілт – Kі | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1

Техникалық тапсырма

1. Текстік файлды ГОСТ шифрлеу алгоритмін қолданып шифрлеуді ұйымдастыру

2. Текстік файлды ГОСТ шифрлеу алгоритмін қолданып дешифрлеуді ұйымдастыру