76
пайдалану мүмкін. Шифрлау нәтижесі бастапқы хабардың келесі блокты шифрлау
процедурасының кіруі болып табылады. Шифрлаудың әрбір қадамында шифрланған
блоктан Y
i
кіші j биттер таңдап алынады.
Сонымен, псевдокездейсоқ тізбекті алу үшін мына схема пайдаланылады:
Y
i
= f(Y
i-1
,K),
Y
i
-ың z
i
=j үлкен биттері, 1 i k
Егер шифр блогының мөлшері N битке тең болса, онда j параметрі 1 ден N-ға дейін
мән қабылдай алады. Y
0
мәні инициализациялау векторы деп аталады.
z
i
сандар тізбегін х
i
символдан тұратын бастапқы мәліметтер ағының шифрлау үшін
гамма ретінде пайдалануға болады:
y
i
= x
i
z
i
нәтижесінде шифрланған y
i
символдар ағыны алынады.
y
i
мәні ашық мәтінге x
i
тәуелсіз болғандықтан, бірдей параметрлерді К мен Y
0
пайдаланып, біз бірдей гамма z
i
тізбегін аламыз. Сондықтан әрбір жаңа хабарды
жібергенде кілт К мәнін ауыстыру қажет.
Бейнеленген тәртібі үшін хабарды ашып оқу тізбек басынан ғана жүргізіледі, себебі
алдыңғыларды есептемей кез келген тізбек элементің z
i
алу мүмкін емес.
OFB тәртібінің негізгі артықшылығы – түскен кезде ағынды хабарларды жылдам
шифрлау мен дешифрлау үшін z тізбегі алдын ала құрастырылу мүмкін. Бұл нақты
уақытта деректерді өңдейтін жүйелерге өте өзекті болу мүмкін.
OFB тәртібінің тағы бір маңызды артықшылығы – егер деректерді берген кезде
қателік пайда болса, онда ол келесі шифрланған блоктарға таралмайды, сонымен келесі
блоктарды ашып оқуға мүмкіндік қалады. Мысалы, шуылдаған байланыс арнада y
i
блокта
қателік бит пайда болса, онда тек осы блокты ғана ашып оқуға болмайды.
CTR тәртібінің аты «CounTeR» – «есептеуіш» сөзден шығады. Бұл тәртіп OFB
тәртібінің модификациясы. Бір ғана айырмашылығы - CTR тәртіпте шифрдың бұрыңғы
шығысы емес, әрбір қадамда 1-ге көбейтілетің есептеуіш шифрланады. Есептеуіштің
бастапқы мәні кейбір инициализациялау Y
0
мәнімен анықталады. Жалпы формула келесі
түрде жазылады:
Y
i
= f(Y
i-1
+1,K),
Y
i
-ың z
i
=j үлкен биттері
CTR тәртібінің артықшылығы – z тізбегінің әрбір элементі тікелей есептелу мүмкін.
Өйткені әрбір қадамда Y
i
бірге көбейтіледі, демек, егер біз қадам нөмірін i білсек, онда Y
i
мәнің Y
0
мен i біле отырып, мына формула бойынша тікелей есептеуге болады:
Y
i
= f(Y
0
+i,K).
Бұл хабардың кез келген фрагменттерін бір бірінен тәуелсіз шифрлауға және
дешифрлауға мүмкіндік береді.
8.3 RC4 алгоритмы
RC4 алгоритмды Р.Ривест айнымалы ұзындығы бар кілтімен кілттік ақпарат ағын
генераторы ретінде арнайы жасап шығарған болатын. Осындай алгоритмы көмегімен
құрылған псевдокездейсоқ сандар генераторы блокты шифрларға негізделгеннен бірталай
жылдам. RC4 алгоритмы ақпаратты қорғау жүйелерде, компьютерлік желілерде (мысалы,
SSL протоколда, Windows NT-да парольді шифрлауда және т.б.) кең пайдаланылады.
RC4 — бұл блок немесе сөз мөлшерімен (n параметры) анықталатын алгоритмдар
класы. Әдетте n = 8, бірақ басқа мәндерді де пайдалануға болады. Алгоритм талдауын
оңайлату үшін n=4 алайық. RC4-ң ішкі күйі мөлшері 2
n
сөзді массивтан және бір сөзді екі
77
есептеуіштен тұрады. Екі есептеуішті (екеуі де 4-битты) i және j деп атайық. Барлық
есептер модулі 2
n
бойынша жүргізіледі.
Массив S-бокс деп аталатын ауыстыру кесте ретінде қолданылады, оны әрі қарай S
деп белгілейміз. Әрбір уақытта S кестесі барлық мүмкін n-битты араластырылған түрдегі
сандардан (біздің жағдайда 4-битты) тұрады. Кестедегі мәндердің нақты орын ауыстыруы
кілтпен анықталады. Кестедегі әрбір элемент 0 ден 15-ге дейін мән алатындықтан, оны екі
түрлі түсіндіруге болады: не сан ретінде, не кестедегі басқа элементің нөмірі ретінде.
RC4 алгоритмы екі кезеңнен тұрады. Бірінші, дайындау кезеңде орын ауыстыру S
кесте инициализацияланады. Екінші, негізгі кезеңде псевдокездейсоқ сандар есептеледі.
S кестенің инициализациялауын қарастырайық. Алдымен ол рет-ретімен 0 ден 15-ге
дейін сандармен толтырылады. Кілт 4-битты сөздер тізбегі ретінде беріледі, олармен басқа
К массивы толтырылады, оның мөлшері S массивтың мөлшеріне тең. Егер кілт қысқа
болып қалса, онда ол қажетті рет қайталанады. Сосын келесі амалдар орындалады
(алгоритм 1):
1. j = 0; i = 0;
2. j = (j + S
i
+ K
i
) mod 16;
3. S
i
мен S
j
орынмен ауыстыру;
4. i = i + 1;
5. егер i < 16, онда п.2 қайтып келу
Осы алгоритмды орындау нәтижесінде орын ауыстыру S кестенің бастапқы
толтырылуы жасалынады.
S кестені дайындағаннан кейін, кездейсоқ n-битты сөздердің генерациялауын
бастауға болады. Ол үшін i мен j есептеуіштерге бастапқы мән 0 беріледі. Сосын әрбір
жаңа z
i
мәнің алу үшін келесі амалдар орындалады (алгоритм 2):
i = (i + 1) mod 16;
j = (j + S
i
) mod 16;
S
i
мен S
j
орынмен ауыстыру;
a = (S
i
+ S
j
) mod 16;
z
i
= S
a
.
Алынған 4-битты z
i
мәні келесі кіру деректер ағынның 4-битты блокты шифрлау
үшін кілт ретінде пайдалану мүмкін.
Мысалы, құпиялы кілт алты 4-битты мәннен тұрсын (оларды ондық түрде
көрсетейік): 1, 2, 3, 4, 5, 6. RC4 алгоритмы бойынша сандар тізбегін генерациялап
көрейік.
S кестені рет-ретімен 0 ден 15-ге дейін сандармен толтырайық.
Элемент нөмірі 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Мәні
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Сосын К кестені дайындаймыз, оған кілтті қажетті рет жазамыз:
Элемент нөмірі 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Мәні
1 2 3 4 5 6 1 2 3 4 5 6 1 2 3 4
Сосын S кестенің ішіндегісін араластырамыз. Ол үшін алгоритм 1 пайдаланамыз.
Орындау процесін трассировка кестесі түрінде көрсетеміз (кесте 8.2), онда барлық
амалдарды белгілейміз. Есептеуді орындағанда еске сақтау керек, барлық қосу
операциялар модулі 16 бойынша жүргізіледі.
Кесте 8.2. RC4 алгоритмның дайындау кезеңі (орын ауыстыру кестені инициализациялау)
Алг.
пунктінің
Орындалатын амал (mod 16 бойынша)
i жаңа
мәні
j жаңа
мәні
Достарыңызбен бөлісу: |