50
Бірінші кезеңде бастапқы мәтіннің 64-битты блогының бастапқы орын ауыстыруы
орындалады, сол кезде биттер белгілі түрде қайтала реттеледі.
Сурет 4.1. DES-ң жалпы
схемасы
Келесі (негізгі) кезеңде блок екі бөлшекке (бұтаққа) бөлінеді, әрбіреуі 32 бит. Оң
жақ бұтағы кейбір
F функцияны және сәйкес жарым-жарты кілтті пайдаланып
түрлендіріледі. Жарым-жарты кілт шифрлаудың негізгі кілтінен арнайы алгоритмы
бойынша алынады. Сосын блоктың сол жақ пен оң жақ бұтақтарымен деректер
алмастырылады. Бұл циклда 16 рет қайталанады.
Ақырында, үшінші кезеңде негізгі циклдың он алты қадамынан кейін алынған
нәтиженің орыны ауыстыралады. Бұл орын ауыстыру бастапқы орын ауыстыруға кері
болады.
DES стандарты бойынша криптографиялық түрлендірудің барлық кезеңдерін толық
қарап шығайық.
Бірінші кезеңде бастапқы деректердің 64-битты блогы бастапқы орын ауыстыруға
душар етеді. Әдебиетте осы операцияны кейде «ағарту» - whitening деп атайды. Бастапқы
орын ауыстыруда деректер блогының биты белгілі түрде қайтала реттеледі. Бұл операция
бастапқы хабарға кейбір «ретсіздік» береді, сонымен статистикалық әдісі арқылы
криптоталдаудың пайдалану мүмкіндігін азайтады.
Деректер блоктың бастапқы орын ауыстыруы мен бірге кілттің 56 битын бастапқы
орын ауыстыруы орындалады. 4.1 суреттен көрініп тұр, әрбір раундта сәйкес 48-битты
жарым-жарты кілт
K
i
пайдаланады.
K
i
кілттер нақты алгоритм арқылы бастапқы кілттің
әрбір битын бірнеше рет пайдалана отырып алынады. Әрбір раундта 56-битты кілт екі 28-
битты жартыға бөлінеді. Сосын жартылар солға қарай раунд нөміріне байланысты бір не
екі битқа ығысады. Ығысудан кейін белгілі бір түрде 56 биттан 48 таңдап алынады. Осы
51
кезде биттың бағынынқы көптігі ғана таңдап алынбай олардың реті
де өзгереді, сондықтан
бұл операция «сығуымен бірге орын ауыстыру» деп аталады. Оның нәтижесі 48 биттен
тұратын жиынтық. Орта есеппен бастапқы 56-битты кілттің әрбір биты 16 қосалқы
кілттерден 14-де пайдаланады.
Онан әрі түрлендірудің негізгі циклы орындалады. Ол Фейштель желі бойынша
ұйымдастырылған және 16 бірдей раундтан тұрады. Бұл кезде әрбір раундта (сур. 4.2)
аралық 64-битты
мән пайда болады, ол сосын келесі раундта өңделеді.
Әрбір аралық мәннің сол жақ және оң жақ бұтағы жеке 32-битты мәні секілді
өңделеді, олар
белгіленген L және
R.
Алдымен, орын ауыстыруды және 16 битке кеңейтуді анықтайтын кестені
пайдаланып,
R
i
блоктың оң жағы 48 битке дейін кеңейтіледі. XOR операцияны орындау
үшін бұл операция оң жақ бөліктің мөлшерін кілт мөлшеріне сәйкестіреді. Одан басқа,
осы операцияның орындауынан бастапқы деректер мен кілттің биттерінен нәтиженің
барлық биттерінің тәуелділігі тез күшейеді (бұл «көшкін эффектісі» деп аталады).
Сурет 4.2. DES-ң бір
раундтың құрылымы
Алынған 48-битты мәні үшін кеңейюімен бірге орын ауыстыруды орындағаннан
кейін, 48-битты қосалқы кілтпен
K
i
XOR операциясы орындалады. Сосын алынған 48-
битты мәні ауыстыру блоктың
S (ағыл.
Substitution – ауыстыру, орнына қою) кіруіне
беріледі, нәтижесінде 32-битты мән алынады. Ауыстыру сегіз ауыстыру блокта немесе
сегіз
S-блокта (
S-boxes) жасалынады. Осы операция орындалғанда деректердің 48 биты
52
сегіз 6-битты қосалқы блокқа бөлінеді, олардың әрбіреуі төрт битпен ауыстырылады.
S-
блок көмегімен ауыстыру DES-ң ең маңызды кезеңі болып табылады. Осы операцияға
максимал қауіпсіздігін қамтамасыз ету үшін ауыстыру кестелері арнайы жобаланған. Бұл
кезеңнің нәтижесінде сегіз 4-битты блок пайда болады, олар қайтадан бірыңғай 32-битты
мәніне бірлеседі.
Әрі қарай 32-битты мән
Р орын ауыстыру (ағыл.
Permutation – орын ауыстыру),
көмегімен өңделеді, ол пайдаланатың кілтке тәуелді болмайды. Орын ауыстырудың
мақсаты - келесі шифрлау раундта әрбір бит басқа
S-блокпен өңделсін деп биттерді
максимал қайта реттеуі.
Ақырында, орын ауыстыру нәтижесі XOR операция көмегімен бастапқы 64-битты
деректер блоктың сол жақ жартысымен бірлеседі. Сосын сол жақ және оң жақ жартылары
орнымен алмасады, және келесі раунд басталады.
Он алты шифрлау раундтан кейін нәтиженің соңғы орын ауыстыруы орындалады.
Бұл орын ауыстыру бастапқы орын ауыстыруға инверсты (кері).
Барлық көрсетілген қадамдарды орындағаннан кейін деректер блогы толық
шифрланған деп есептеледі және бастапқы хабардың келесі блогын шифрлауға болады.
Сонымен, қағаздағы DES-ң жай бейнелеуі ғана күрделі болып көрінеді, ал оның
бағдарламалық жүзеге асыруы одан да қиын!
Дешифрлау (ашып оқу)
Криптографиялық жүйе хабарларды шифрлау мен бірге дешифрлауға да мүмкіндік
беру керек. DES бойынша ашып оқу процесі өте шиеленген деп күтуге болар еді. Бірақ
құрастырушылар шифрлау мен дешифрлау үшін бірдей алгоритмды пайдаланады. Ашып
оқу кезінде алгоритмның кіруіне шифрланған мәтін беріледі. Бір ғана айырмашылық
жарым-жарты кілттерді
K
i
кері ретпен пайдалану.
K
16
бірінші раундта пайдаланады,
K
1
–
соңғы раундта.
Ашып оқудың соңғы раундынан кейін шығудың екі жартысы орындарымен
алмасады, аяқтау орын ауыстырудың кіруі
R
16
мен
L
16
құрастырған болатындай. Бұл
сатының шығуы ашық мәтін.
4.2 Екі еселі DES және «ортада кездесу» шабуыл
Қазіргі уақытта DES-ң негізгі кемшілігі кілттің кішкене ұзындығы.
Криптоталдауды күрделендірудің ең қарапайым тәсілі әртүрлі кілттермен бірдей алгоритм
көмегімен екі еселі шифрлауды пайдалану.
Егер
М – хабар,
К
1
,
К
2
– кілт,
f – DES бойынша шифрлау процесі, ал
Е –
шифрланған хабар болса,
онда жазуға болады
E =
f(
f(
M,
K)),
яғни алдымен блок бір кілтпен шифрланады, сосын алынған шифрмәтін екінші кілтпен
шифрланады.
Дешифрлау кері ретпен жүргізіледі (
f
-1
– DES бойынша ашып оқу):
E =
f
-1
(
f
-1
(
E,
K
2
),
K
1
)
Бұл жағдайда кілт ұзындығы тең 56 2 = 112 бит, сондықтан блокты шифрлаған екі
есе кілтті табу үшін жалпы 2
112
әрекет қажет болады.
Осы проблеманы зерттеп американ ғалымдары Меркл мен Хеллман ашық мәтін
арқылы
шабуылдың тәсілін ойлап тапты, оған 2
112
емес 2
57
әрекет қажет.
Шабуылдың бұл варианты «ортада кездесу» деп аталады. Ол алгоритмның келесі
қасиетіне негізделген. Бізде болсын
E =
f(
f(
M,
K
1
),
K
2
)
мұндағы
М – хабар,
К
1
,
К
2
– кілт,
f – DES бойынша шифрлау процесі, ал
Е – шифрланған
хабар.
Онда
X =
f(
M,
K
1
) =
f
-1
(
E,
K
2
).