Халқаманұлы Шерхан 19-200-31 5-Тәжірибе Мазмұны


А.Ш. Тұрым, Б.М. Мұстафина, А.Ə. Шайқұлова 90-92 бет



бет3/8
Дата07.01.2022
өлшемі1,18 Mb.
#17844
1   2   3   4   5   6   7   8
Байланысты:
Практика

А.Ш. Тұрым, Б.М. Мұстафина, А.Ə. Шайқұлова 90-92 бет.

ГОСТ 28147–89 стандарты

ГОСТ 28147-89 – классикалық блоктық құпия кілттік шифр. Бұл алгоритм 64 биттік блоктарды 256 биттік кілттің көмегімен шифрлауды жүзеге асырады [1, 3, 34].

Мұнда мынадай шартты белгілер пайдаланылады:

· L жəне R- биттер тізбектері;

· LR - L жəне R тізбектерінің конкатенциясы, мұнда R тізбегінің биттері L тізбегінің биттерінен кейін орналасады;

· Å - биттерді өзара екі модулі бойынша қосу операциясы;

· [+] - екі 32 разрядтық екілік сандарды 2 32 модулі

бойынша қосу операциясы;

· [+]’ - екі 32 разрядтық екілік сандарды (2 32 -1) модулі

бойынша қосу операциясы.

Екі бүтін а жəне b сандары 0£ а, b £ 2

32 -1, яғни а=(a32a31 ...a2a1) жəне b=(b32b31... b2b1) екілік түрде берілсін делік: a=a 32231+a31230 + ... +a221+a1,b=b 32 231+b31230 + ... +b221+b1.

[+] жəне [+]’ операциялары келесі ережеге сəйкес орындалады:

а[+]b=a+b, егер a+b<2 32,а[+]b=a+b - 2 32, егер a+b(2 32;

а[+]’b=a+b, егер a+b<2 32 -1,а[+]’b=a+b-(2 32 -1), егер a+b3232 -1.

Алгоритмнің төрт жұмыс режімі бар: қарапайым ауыстыру режімінде деректерді шифрлау, гаммалау режімінде деректерді шифрлау, кері байланысы бар гаммалау режімінде деректерді шифрлау жəне имитоендірмені жасау. Бірінші режім – тек кілттік ақпаратты шифрлауға арналған. Басқа деректерді шифрлау үшін, қалған екі гаммалау режімдері қолданылады. Имитоендірме – өңдіру режімі шифрланатын деректерді имитоқорғау (яғни, оларды кездейсоқ немесе рұқсат етілмеген,

қасақана өзгертулерден қорғау) үшін керек. Төменде тек қарапайым ауыстыру режімі ғана толығырақ қарастырылған.

1) Қарапайым ауыстыру режімі



Қарапайым ауыстыру режімінде деректерді шифрлау алгоритмін іске асыру үшін, жалпы криптожүйе блоктарының бір бөлігі ғана

Шартты белгілер:

· N1, N2 – 32 разрядтық жинақтағыштар;

· SM1 – 2 32 модулі бойынша 32 разрядтық қосындылауыш([+]);

· SM2 – екі модулі бойынша 32 разрядтық қосындылауыш(Å);

· R – циклдік ығыстырудың 32 разрядтық регистрі;

· КЖҚ – кілттік жаттайтын құрылғы (256 биттік). Ол 32разрядтық сегіз Х 0, Х1, ..., Х7жинақтағыштан тұрады;

· Кі– ішкілттер (subkey), раундық кілттер, i=0 ̧7;

2.30-сурет. Қарапайым ауыстыру режімін іске асыру сұлбасы

КЖК32... ...1 32... ...1+ SM132... ...1[+]32... ...1Å 32... ...1Å SM2Tа Тш S8 S7 S6 S5 S4 S3 S2 S1 S RX0(K0)X1(K1) X2(K2) X3(K3) X4(K4) X5(K5) X5(K5) X6(K6) X7(K7) N2 N1· S – 8 ауыстыру (S1, S2, S3, ..., S7, S 8) блогынан тұратынауыстыру блогы;

· Тa – ашық деректер блогы (64 разряд);

· Тш – шифрланған деректер блогы (64 разряд).

̈ Ашық деректерді қарапайым ауыстыру режімінде шифрлау. Шифрлауға жататын ашық деректерді Тa деген 64 разрядтық блоктарға бөледі. Тa блоктарды шифрлау процедурасы 32 циклдан тұрады (і=1 ̧32). КЖҚ-ға К кілтінің 256 битін сегіз 32 разрядтық Кіші кілттері (раундық кілттер) түрінде енгізеді: К=К7К6К5К4К3К2К1К0 .Тa=(a1(0), a2(0), ..., a31(0), a32(0), b1(0), b2(0), ..., b31(0), b32(0)) биттер тізбегін 32-биттік екі тізбекке (сөзге) бөледі: b(0) жəне а(0). Бұл жерде b(0) сол немесе үлкен биттер, ал а(0) оң немесе кіші биттер.

Бұл тізбектерді N1 жəне N 2 жинақтағыштарын цифрлаудың бірінші циклының басында енгізеді. N1 жинақтағышының бастапқы толтырылымы мынадай: a(0) =(a32(0), a31(0), ..., a2(0), a1(0)), ал N 2жинақтағышының: b(0) =(b32(0), b31(0), ..., b2(0), b1(0)). 64 разрядты блогы бар ашық деректерді шифрлаупроцедурасының бірінші циклын (j=1) келесі теңдеу арқылы жазуға болады.

a(1) = f(a(0) [+] K0) Å b(0),b(1) = a(0).

Мұндағы а(1) – шифрлаудың бірінші циклынан кейінгі N1 толтырылымы; b(1) – шифрлаудың бірінші циклынан кейінгі N 2 толтырылымы; f – шифрлау функциясы. f-функциясының аргументі – 2 32 модулі бойынша алынған а(0) санымен К0 санының қосындысы; а(0) – N1 жинақтағышының бастапқы толтырылымы; К0 – КЖҚ-ның Х0 жинақтағышынан оқылған ішкі кілт. Мұндағы əрбір санның ұзындығы 32 битке тең. f-функциясында алынатын 32 разрядтық қосындыға екі операцияжасалынады (а(0)[+]К0). Бірінші операция – ауыстыру деп аталады да, S ауыстыру блогы арқылы орындалады. S-блогы 0÷15 арлығындағы сандармен кездейсоқ түрде толтырылады. Бұл кестенің ішіндегі сандар шифрдың қосымша құпия параметрі болып табылады

(мəселен, DES алгоритмінде осындай S-блоктар тұрақты жəне

құпия емес). S-блогы сегіз ауыстыру блогынан (S1 , S 2, ..., S8) тұрады.

Оның əрбіреуінің жады көлемі 64 бит. SМ1-дан S ауыстыру блогына түсетін 32 разрядтық вектор 8 төрт разрядтық векторларға бөлінеді. Олардың əрқайсысы 4 разрядтық векторға түрленеді. Əр ауыстыру блогын диапазоны 0000...1111 болып келетін 16 төрт разрядтық екілік сандардың орын ауыстыру кестесі түрінде көрсетуге болады. Кіру векторы кестедегі қатар

(жол) мекен-жайын көрсетеді. Ал бұл жолдағы сан, шығу векторы болып табылады. Содан соң 4 разрядтық шығу екторлары бірінен соң бірі 32 разрядтық векторға бірігеді. Бұл ауыстыру блоктары өте құпия сақталады. Екінші операция кезінде S ауыстыру блогының шықпасынан алынған 32 разрядтық вектор солға циклдік (11 разрядқа) ығыстырылады. Циклдік ығыстыру R ығыстыру регистрі арқылы орындалады. Одан соң f шифрлау функциясының нəтижесімен N 2 жинақтағышының 32-разрядтық бастапқы b(0) толтырылымы SМ 2

қосындылауышта екі модулі бойынша қосылады. Қосындыда N2 жинақтағышының 32 разрядтық бастапқы b(0) толтырылымы болады. Содан соң SМ 2 шықпасынан алынған нəтиже (а(1) мəні) N1 жинақтағышына жазылады, ал N1- нің ескі мəні (а(0) мəні) N2 жинақтағышына көшіріліп жазылады (яғни b(1)=a(0)). Бірінші цикл осымен аяқталады. Келесі циклдар осыған ұқсас жүргізіледі. Яғни, екінші

циклда КЖҚ-дан Х1 толтырылымы, яғни К1 оқылады, үшінші циклда - К2, ал сегізінші циклда К7 оқылады. 9 циклдан 24-ке дейінгі циклдарда КЖҚ-дан ішкілттер, мына тəртіпте оқылады: К0, К1, ..., К6, К7. Ал 25-тен 32-ге дейін КЖҚ ішкілттері кері тəртіпте: К7, К6, ..., К1, К0 оқылады. Сонымен, КЖҚ-дағы ішкілттерді таңдау мына тəртіпте жүргізіледі:

К0, К1, К2, К3, К4, К5, К6, К7, К0, К1, К2, К3, К4, К5, К6, К7, ...,

К0, К1, К2, К3, К4, К5, К6, К7, К7, К6, К5, К4, К3, К2, К1, К0

32 циклда SМ2 қосындылауыштағы нəтиже N2 жинақтағышына енгізіледі, ал N1 жинақтағышында бұрынғы толтырылым сақталады. Шифрлаудың 32 циклының нəтижесінде алынған N1 мен N2 жинақтағыштардың толтырылымдары (Тa ашық деректер блогына сəйкес келетін) Т шифрланған деректер блогы болып табылады.

Қарапайым ауыстыру режіміндегі шифрлау теңдеулерінің түрі мынадай:

j=1, ..., 24 болғанда: a(j) = f (a(j-1)[+] Kj-1(mod8)) Å b(j-1)b(j) = a(j-1)

j=25, ..., 31 болғанда: a(j) = f (a(j-1)[+] K32-j) Å b(j-1)b(j) = a(j-1)

j=32 болғанда: a(32) = a(31)b(32) = f (a(31)[+] K0) Å b(31).

Бұл жерде:

· а(j)=a32(j), a31(j), .., a1(j) - j-ші циклдан кейінгі N1 жинақтағышының толтырылымы;

· b(j)=b32(j), b31(j), ..., b31(j) - j-ші циклдан кейінгі N2 жинақтағышының толтырылымы, j=1 ̧ 32;

· Тш - шифрланған деректер блогы (64 разряд). N1 жəне N2 жинақтағыштарынан келесі тəртіппен шығарылады: алдымен N1 жинақтағышының 1, ..., 32 разрядтары, сосын N2 жинақтағышы-

ның 1, ..., 32 разрядтары, яғни кіші разрядтардан бастап Тш ( (a1(32), a2(32), ..., a32(32), b1(32), b2(32), ..., b32(32)).

Ашық деректердің басқа блоктары, қарапайым ауыстыру режімінде осыған ұқсас шифрланады. ̈Қарапайым ауыстыру режімінде кері шифрлау. Қарапайым ауыстыру режімінде шифрды ашудың алгоритмін жүзеге асыратын криптографиялық сұлбаның түрі шифрлау кезіндегі сұлба сияқты болады. КЖҚ-ға шифрлау кезінде пайдаланған кілттің 256 биті енгізіледі. Кері шифрлауға дайындалған деректер əрбіреуінде 64 биттер бар Тш деген блоктарға бөлінеді. Кез келген Тш блогын Тш = (a1(32), a2(32), ..., a32(32), b1(32), b2(32), ..., b32(32)) N1 жинақтағышының бастапқы мəні а 32 (32), a31(32), ..., a2(32), a1(32), ал N2 жинақтағышының бастапқы мəні b 32 (32), b31(32), ..., b1(32) болатындай етіп енгізеді.

Шифрды ашу, шифрлау алгоритміндей жүргізіледі. Тек оның айырмашылығы - Х0, Х1, ..., Х7 жинақтағыштарын толтыруда. КЖҚ-дан ішкілттер мына тəртіппен оқылады: К0, К1, К2, К3, К4, К5, К6, К7, К7, К6, К5, К4, К3, К2, К1, К0, ..., К7, К6, К5, К4, К3, К2, К1, К0, К7, К6, К5, К4, К3, К2, К1, К0.

Кері шифрлау тендеуінің түрі мынадай: j=1, ..., 8 болғанда: a(32-j) = f (a(32-j+1)[+] Kj-1) Å b(32-j+1) b(32-j) = a(32-j+1)

j=9, ..., 31 болғанда: a(32-j) = f (a(32-j+1)[+] K32-j(mod8)) Å b(32-j+1) b(32-j) = a(32-j+1)

j=32 болғанда: a(0) = a(1)b(0) = f(a(1)[+] K0) Å b(1).

32 циклдан кейін N1 жəне N2 жинақтағыштарында Тa ашық деректер блогы пайда болады: Тa = (a1(0), a2(0), ..., a32(0), b1(0), b2(0), ..., b32(0)).

Ол шифрланған Тш деректер блогына сəйкес келеді. Бұл жағдайда N1 жинақтағышының күйі: (а 32 (0), (a31(0), ..., a2(0), a1(0)), ал N2 жинақтағышының күйі мынадай болады: (b32(0), b31(0), ..., b2(0), b1(0)).

Шифрланған деректердің қалған блоктары да, осыған ұқсас

түрде кері шифрланады.



Достарыңызбен бөлісу:
1   2   3   4   5   6   7   8




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет