8 Дәріс. Мәліметтерді симметриялық шифрлеудің американдық DES стандарты
Дәріс мазмұны: мәліметтерді симметриялық шифрлеудің Data Encryption Standard (DES) стандарты.
Дәріс мақсаты: DES алгоритмі бойынша шифрлеу сұлбасын оқу.
Шифрлеудің DES стандарты 1977 ж. АҚШ-тағы Ұлттық стандарттар бюросымен басылып шығарылған. Бұл шифрлеу АҚШ-тағы мемлекеттік және комерциялық мекемелердегі маңызды бірақ жасырын емес ақпаратты рұқсатсыз қол жеткізуден қорғауға өңделген болатын. Стандарт негізіндегі алгоритм тез тарап, 1980 ж. Ұлттық стандарттар және технологиялар институтымен бекітілген болатын. Осы кезден бері DES тек қана аты бойынша емес (Data Encryption Standard), нақты стандарт болып табылады. Мәліметтерді тасымалдау желілерде ақпаратты шифрлеу және олардың шифрын ашуға негізделген арнайы микроэемдер мен программалық қамтамасыздандыру өңделеді. Қазіргі кезде коммерциялық ақпаратты қорғау жүйелерінде қолданатын алгоритмдерінің ішінде DES алгоритмы ең көп тараған болып табылады.
DES алгоритмы орын басу және орын ауыстыру комбинацияларын қолданады: DES мәліметтердің 64-биттік блоктарын 64-биттік кілтті қолданып шифрлейді; бұл кілтте мәнді болып 56 бит табылады (қалған 8 бит жұптылықты бақылауға негізделген тексеру биттар). DES алгоритмінде шифрды ашу операциясы шифрлеуге кері операция болып табылады, яғни шифрлеу операциялар кері ретімен қайталанады. DES алгоритмі бойынша шифрлеу процесінің жалпы сұлбасы 8.1 суретте көрсетілген. Шифрлеу процесінің негізі келесіде болады: 64-биттік блок биттарына бастапқы орын ауыстыру қолданылады, содан кейін шифрлеудің он алты циклы орындалып, соңынан соңғы биттардың орнын ауыстыруы жасалады.
Алгоритмде қолданылатын кестелер стандарты болып табылады, олар DES алгоритмінің іске асыруларына өзгертілмеген түрде енгізіледі. Кілтті таңдап алып шифрды ашу процесін максималды күрделеу үшін өңдеушілермен кестелердегі барлық орын ауыстырулар мен кодтар арнайы түрде таңдалынған. DES құрылымы 8.2 суретте келтірілген. Мұнда келесідей белгілер қолданылады: L және R – биттар тізбектері (сол жақтағы (left) және оң жақтағы (right)); LR - L және R тізбектерінің конкатенациясы, яғни ұзындығы L мен R ұзындықтарының қосындысына тең тізбек; LR тізбегінде R тізбектері L тізбектің биттарынан кейін орналасады; - 2 модуль бойынша битты битпен қосу операциясы.
Алгоритм жұмысы келесідей орындалады. Бастапқы мәтін файлынан кезекті 64-биттік (8-байттық) Т блогы оқылады. Осы Т блок бастапқы орын ауыстыру IP матрицасы (алгоритмнің стандартты матрицасы) көмегімен түрленеді. Алынған То биттар тізбегі әр қайсысының 32 биты бар екі тізбекке бөлінеді: L0 – сол жақтағы немесе үлкен биттар, Ro – оң жақтағы немесе кіші биттар.
8.1 Сурет - DES алгоритміндегі шифрлеудің жалпы сұлбасы
Содан кейін 16 қадамнан (циклдаран) тұратын шифрлеудің итеративті процесі басталады. Ti - i-ші итерацияның нәтижесі болсын:
,
мұнда Li = t1 t2…t32 (бірінші 32 бит); Ri = t33t34... t64 (соңғы 32 бит). Сонда i-ші итерацияның нәтижесі келесі формулалармен бейнеленеді:
f функциясы шифрлеу функция деп аталады. Итерациялардың алдыңғы қадамында алынған Ri-1 тізбегі мен шифрдың 64-биттік К кілтін түрлендіру нәтижесіндегі 48-биттік Кi кілт осы функцияның аргументтері болып табылады. f функцияның мәнін есептеу үшін қолданылады: 32 биттен 48 битке дейін кеңейту Е функциясы; 6-биттік санды 4-биттік санға түрлендірудің S1, S2, ..., S8 функциялары; 32-биттік тізбекте биттардың орын ауыстыру Р функциясы. Е(RI-1) функцияның нәтижесі 48-биттік сан болып табылады. 32 биттан 48 битқа дейін кеңейтуді орындайтын Е функциясы (32 биттік блокты қабылдап 48 биттік блокты тұдырады) алгортитмнің стандартты кестесімен анықталады. Алынған нәтиже (оны E(Ri-1) деп белгілейміз) модулі 2 бойынша (XOR операциясы) кілттің ағынды Kj мәнімен қосылады, содан кейін сегіз 6-биттік B1, В2, .... B8 блоктарға бөлінеді:
Содан кейін осы блоктардың әрқайсысы 4-биттік мәндерден тұратын S1, S2.....S8 функция-матрицалардың элемент нөмірі ретінде қолданылады (бұл матрицаларда стандартты болып табылады). Нәтижесінде S1(B1) S2(B2) S3(B3) ... S8(B8) яғни 32-биттік блокты аламыз (себебі Sj матрицалар 4-биттік элементтерден тұрады). Осы 32-биттік блок биттардың орынын ауыстыру Р функция көмегімен түрленеді.
Нәтижесінде шифрлеу функцияны келесі түрде жазуға болады:
мұнда Р – биттардың орынын ауыстыру функциясы (алгоритмнің стандартты кестесі).
Әр итерацияда кілттің Ki жаңа мәні қолданылады (ұзындығы 48 бит). Кілттің Ki жаңа мәні бастапқы К кілттен есептеледі. К кілті 64-биттік блок болып табылады, 8, 16, 24, 32, 40, 48, 56, 64 позицияларда жұптықты бақылау 8 биты орнатылған. Кілтті жұмысқа дайындау үшін кілтті бастапқы дайындау G функциясы қолданылады (алгоритмнің стандартты кестесі).
G(K) түрлендіру нәтижесі екі Со және Do бөлікке бөлінеді. Со мен Do анықталғаннан кейін рекурсивті Сi және Di, i = 1, 2.....16 анықталады. Ол үшін итерация қадамының нөмірімен анықталатын сол жаққа бір немесе екі битке циклдық ығысу операциясы қолданылады (алгоритмнің стандартты кестесі көмегімен). Итерацияның әр қадамында анықталатын Кi кілті 56-биттік СiDi тізбектен белгілі биттарды таңдап, олардың орнын ауыстыру нәтижесі болып табылады. Басқа сөзбен айтқанда кілт
мұнда Н функциясы кілтті өңдеуді аяқтайтын матрицамен анықталады (алгоритмнің стандартты кестесі).
Шифрлеу аяқталғаннан соң биттар позициялары IP-1 кері орын ауыстыру матрицасымен қалпына келтіріледі (алгоритмнің стандартты кестесі).
Шифрды ашу процесі шифрлеу процеске инверсті болып табылады. Барлық ірекеттер кері тәртіппен орындалуы керек. Басқа сөзбен айтқанда шифры ашылатын мәліметтер біріншіден IP-1 матрицаға сәйкес орнын ауыстырады, содан кейін шифрлеуде қолданған әрекеттер R16L16 тізбекке кері ретімен орындалады.
Итеративті шифрды ашу процесін келесі формулалармен бейнелеуге болады:
Сонымен, шифрын ашу процесінде орыны ауыстырылған кірудегі R16L16 блокка бірінші итерацияда К16 кілті, екіншіде - К15 кілті, т.с. қолданылады. Итерацияның соңғы қадамында Lo және Ro тізбектер алынады, олар соңынан L0R0 64-биттік тізбекке конкатенацияланады. Содан кейін осы тізбекте 64 биттар IP матрицасына сәйкес орынын ауыстырады. Осы түрлендірулер нәтижесінде биттардың бастапқы тізбегін аламыз (шифры ашылған 64-биттік мәнді).
Достарыңызбен бөлісу: |