42
Қарсыласқа шифрлау әдісі белгілі деп, ал кілтті ол білмейді деп санайық. Егер
қарсыластың қолына НГЛИСА хабар түссе, оған ең көбі 720 әрекет қажет болады (толық
іріктеп алу әдісті пайдаланғанда). әрбір вариантқа 1 секунд кетсін, онда барлық 720
әрекетке 12 минут қана жұмсалады. Сонымен, ең көбі 12 минуттан кейін қарсылас біздін
кілтті біле алады және барлық хабарларды ашып оқиды. Компьютер көмегімен кілтті
іздегенде одан да аз уақыт қажет болады.
Біздің шифрдың криптоталдау есебін қалай күрделендіруге болады? Орын
ауыстыру периодтың мөлшерін үлкейтуге болады, яғни ішінде символдар ауыстырылатын
блокты, мысалы мың белгіге дейін. Бірақ, біріншіден, жүздеген және мыңдаған белгілерді
іріктеп алу қазіргі компьютерде бір минуттын ішінде орындалады, екіншіден, бұл
жағдайда мың символға дейін кілт ұзындығы да өседі. Осындай кілтті есте қалдыруға да
пайдалануға да қиын.
Басқа жолмен барып көрейік, алты символдан тұратын блокта орын ауыстырудын
алдында, Цезарь әдісі бойынша қарапайым орнына қоюды қолданылайық. Цезарь
әдісіндегі кілтті
k
1
(1
k
1
31), ал орын ауыстыру кілтін
k
2
деп белгілейік. Онда ортақ кілт
K = (
k
1
,
k
2
). Сонымен, егер
К = (5, 436215) болса, онда алдымен кілті 5 бар Цезарь әдісі
бойынша символдар ауыстырылады, сосын алты символды әрбір блокта 436215 кілтпен
орын ауыстыру жүргізіледі. Екі кезеңмен СИГНАЛ сөзді шифрлайық:
1-ші кезең (ауыстыру):
ÖÎÈÒÅÐ
ÑÈÃÍÀË
k
5
1
2-ші кезең (орын ауыстыру):
ÒÈÐÎÖÅ
ÖÎÈÒÅÐ
k
436215
2
Былай да жазуға болады:
Біздің жағдайда Цезарь шифрындағы мүмкін болатын кілттер саны тең 31,
сондықтан қолданылған құрастырылған шифрда мүмкін кілттердің жалпы варианттар
саны (кілттер кеңістігі) тең 31 720=22320. Сонымен, шынында да алынған құрастырылған
шифры жеке орындалған ауыстыру мен орын ауыстыру шифрлардан күштірек.
Статистикалық әдіспен криптоталдауды қиындату үшін біздің құрастырылған
шифрды бір кілтпен екі рет пайдалануға болады:
Шифрлау циклы 1:
1-ші кезең (ауыстыру):
ÖÎÈÒÅÐ
ÑÈÃÍÀË
k
5
1
2-ші кезең (орын ауыстыру):
ÒÈÐÎÖÅ
ÖÎÈÒÅÐ
k
436215
2
Шифрлау циклы 2:
1-ші кезең (ауыстыру):
×ÎÕÓÛË
ÒÈÐÎÖÅ
k
5
1
2-ші кезең (орын ауыстыру):
ÓÕËÎ×Û
×ÎÕÓÛË
k
436215
2
Екі қатарынан орындалған шифрлау циклы нәтижесінде СИГНАЛ сөзі УХЛОЧЫ –
ға айналды. Мұнда шифрдың кілттер кеңістігі өзгермеді, бірақ бастапқы мәтіннің
статистикалық заңдылықтары күштірек жасырынды.
Нақты шифрларда да белгілер блоктарына бірнеше қарапайым операциялардың
комбинациясы пайдаланылады. Криптоберіктікті күшейту үшін бұл операциялар циклды
түрде бірнеше рет орындалады, мұны раунд немесе қадамдар деп атайды. Шифрдың
беріктігіне әсер етеді блок мөлшері, кілт мөлшері, шифрлау раундтар саны. Қазіргі жабық
кілті бар шифрлар тек екілік деректерді өңдейді, сондықтан оларда кәдімгі ауыстыру мен
орын ауыстырудан басқа кейбір екілік сандар үшін арнайы операциялар қолданылады.
Симметриялық шифрлау алгоритмы бастапқы мәтінді блоктармен немесе
ағындармен өңделу мүмкін. Осыған байланысты симметриялық
шифрлаудың блокты және
ағынды алгоритмдарын ажыратады. Мәтін блогы теріс емес бүтін сан ретінде немесе
43
бірнеше тәуелсіз теріс емес бүтін сандар ретінде қарастырылады. Блок ұзындығы әрқашан
екінің дәрежесіне тең деп алынады, мысалы, 64, 128, 256 бит.
3.2 Симметриялық шифрлаудың блокты алгоритмында пайдаланатын операциялар
Симметриялық
шифрлаудың
алгоритмдарының
көбінде
пайдаланылатын
операцияларды қарап шығайық. Қандай да болса ақпарат, мысалы бейне немесе мәтін,
екілік түрде ұсынылу мүмкін.
Жиі пайдаланатын операциялардың біреуі – модулі 2 бойынша биттық қосу
операциясы, ол XOR немесе деп белгіленеді. Модулі 2 бойынша қосуда операндтар
разряд ретімен өңделеді. Нәтиженің разрядына бір қойылады, егер операндатардың сәйкес
разрядында бірліктер саны тақ болса. Мысалы, модулі 2 бойынша екі 16-разрядты санды
қосайық:
Разряд номірі
15
14
13
12
11
10 9 8 7 6 5 4 3 2 1 0
Операнд 1
1
0
1
0
1
0
1 0 1 0 1 0 1 0 1 0
Операнд 2
0
1
1
1
0
0
1 1 0 0 1 1 0 0 1 1
Модулі 2
бойынша
қосынды
1
1
0
1
1
0
0 1 1 0 0 1 1 0 0 1
Осы операцияда өте ыңғайлы қасиеті бар: модулі екі бойынша азайту қосындымен
бірдей, сондықтан операндтардың біреуі басқа операндтың қосындысына қосу арқылы
табылу мүмкін.
Және де блокты шифрлау алгоритмда жиі қолданылады модулі 2
32
немесе модулі
2
16
бойынша қосу операциясы. Бұл операция кәдімгі екілік сандардың қосуы, нәтиженің
разрядын жоғары 32-ші немесе 16-ші разрядқа тасымалдауын еске алмасақ. Мысалы,
модулі 2
16
бойынша екі 16-разрядты санды қосайық:
Разряд номірі
15
14
13
12
11
10 9 8 7 6 5 4 3 2 1 0
Операнд 1
1
0
1
0
1
0
1 0 1 0 1 0 1 0 1 0
Операнд 2
0
1
1
1
0
0
1 1 0 0 1 1 0 0 1 1
Модулі 2
16
бойынша
қосынды (1)
0
0
0
1
1
1
0 1 1 1 0 1 1 1 0 1
15-ші разрядтан тасымалдау, мысалда жақшадағы бір ретінде белгіленген, әрі қарай
пайдаланбайды және сол себептен лақтырып тасталынады.
Циклдық ығысу бит тізбегін бірнеше разрядқа солға немесе оңға қарай
жылжытады. Ығысу операциясын орындағанда, екілік сан туннельдің бір жағынан
жорғалап кіріп жатқан және екінші жағынан жорғалап шығып жатқан ұзын құртқа
ұқсайды. Солға қарай циклдық ығысуда сол жақтан кестеден сыртқа шығатын биттер оң
жағынан босаған орындарға жазылады. Оңға қарай циклдық ығысуда барлық биттер оңға
жылжыйды, ал орын жетпегендіктер тізбектін құйрығына жазылады. Мысалы, екілік
санды 3 разрядқа солға қарай циклдық ығыстырайық. Ол үшін екілік цифрларды солға
қарай 1 разрядқа ығыстыра отырып үш рет қайталап жазамыз және 15-ші разрядтан
шығатын белгілерді нольдік орнына тасымалдаймыз.