(
𝐾
[0],
𝐾
[1],
𝐾
[2],
𝐾
[3]) = 128 bitli kalit
(
𝐿
, R) = ochiq matn bloki (64 bit)
delta = 0
𝑥
9
𝑒
3779
𝑎
9
for I=1 dan 32 gacha
R = R - (((L<<4) + K[2])
⨁
(L + sum)
⨁
((L>>5) + K[3]))
L = L - (((R<<4) + K[0] )
⨁
(R + sum)
⨁
((R<<5 + K[1]))
sum = sum - delta
keyingi I
ochiq matn = (
L,R
)
Blokli shifrlar rejimlari:
Oqimli shifrlardan foydalanish juda ham sodda – ochiq matn (yoki shifrmatn)
uzunligiga teng bo’lgan kalitlar ketma-ketligi generasiya
qilinadi va XOR amalida
bajariladi. Blokli shifrlardan foydalanish faqat bir blokni shifrlashda oson. Biroq, bir
nechta (ko’plab) bloklarni shifrlash qanday amalga oshiriladi? Javob esa, bir
qaraganda oson emas.
Faraz qilaylik, quyidagi ochiq matn bloklari berilgan bo’lsin: P
0
, P
1
, P
2
, …
O’zgarmas kalit K blokli shifr kodlar kitobi hisoblanadi. Sababi, blokli
shifrlar ochiq
matn bloki va shifrmatn bloki o’rtasida o’zgarmas bog’lanishni yaratadi. Kodlar kitobi
kabi foydalaniluvchi blokli shifrlash rejimi bu –
elektron kodlar kitobi (Electronic
codebook mode, ECB)
rejimi. ECB rejimida quyidagi formuladan foydalangan holda
ma’lumotlar shifrlanadi:
i = 0,1,2, …
lar uchun
Ci = E(Pi, K)
Deshifrlash uchun esa quyidagi formuladan foydalaniladi:
i = 0,1,2, …
lar
uchun P
i = D(Ci, K)
Ushbu yondashuv asosida blokli shifrlarni samarali amalga oshirsa bo’ladi.
Biroq, mazkur yondashuvda jiddiy xavfsizlik muammosi mavjud.
Faraz qilaylik, ECB rejimdan foydalangan holda ma’lumot shifrlandi va bloklari
orasidan ikkitasining bir-biriga tengligini (
𝐶
i =
𝐶
j)
aniqladi. Natijada tarmoq orqali
uzatildi. Uzatish davomida hujumchi ularni tutib oldi va shifrmatn hujumchi aniqlagan
shifrmatn bloklariga mos ochiq matn bloklari ham bir-biriga teng bo’ladi
𝑃
i
=
𝑃
j
.
Albatta ushbu holat shifrmatnni topish uchun yetarli bo’lmasada, bir shifrmatn blokiga
mos kelgan qolgan bloklarni aniqlash imkoniyatini beradi. Bunday hollarda hujumchi
haqiqatan
𝑃
i
yoki
𝑃
j
ochiq matn bloklarini aniqlay olmasada, unga aloqador ba’zi
ma’lumotni oshkor etadi. Mazkur holat grafik orqali tasvirlanganda 6-rasmda
ko’rsatilganidek bo’ladi. Boshqacha aytganda, rasmning
chap tomonidagi tasvirning
o’xshash har bir bloki o’ng qismida ham bir xil shifrmatn blokiga almashgan. Mazkur
holda hujumchining shifrmatndan foydalangan holda ochiq matnni bashorat qilishi
murakkab vazifa emas.
6
-rasm. ECB rejimida ma’lumotni shifrlash natijasi
Biroq, ECB rejimida shifrlash va deshifrlash amallarini
paralellashtirish
imkoniyati mavjud va bu tezkorlikni oshiradi. Bundan tashqari agar shifrmatnni
uzatish davomida bloklardan birining o’zgarishi faqat shu blokni natijasiga ta’sir
qiladi. Ya’ni, faqat shu blokni o’zi zararlanadi
ECB rejimida mavjud muammolarni bartaraf etgan rejimlardan biri bu -
cipher
block chaining
(CBC) rejimi. CBC rejimida bir blokdan
chiqqan shifrmatn keyingi
ochiq matnni yashirish uchun foydalaniladi va shundan so’ng shifrlash amalga
oshiriladi. Mazkur rejimda shifrlash formulasi quyidagicha:
i = 0,1,2, …
lar uchun
Ci = E(Pi
⨁
Ci-1, K)
Deshifrlash funksiyasi esa quyidagicha bo’ladi:
i = 0,1,2, …
lar uchun P
i = D(Ci,K)
⨁
Ci-1
Birinchi blokni shifrlash uchun undan oldingi shifrmatn bloki bo’lmagani
uchun, boshlang’ich vektor deb ataluvchi (initialization vector, IV) IV
dan
foydalaniladi va u mantiqiy tomondan
𝐶
−
1
ga teng bo’ladi. Shifrmatn bloklari maxfiy
saqlanmagani bois unga analog bo’lgan IV
ham maxfiy saqlanmaydi. Biroq, IV
tasodifiy ravishda generasiya qilinishi shart.
IV dan
foydalangan holda, birinchi blokni shifrlash quyidagicha amalga oshadi:
C
0
= E(P
0
⨁
IV,K)
Mos holda birinchi blokni deshifrlash esa quyidagi chaamalga oshiriladi:
𝑃
0
= D(C
0
,K)
⨁
IV,
𝐾𝐾
)
⨁
𝐿𝐿𝐼𝐼
.
CBC rejimida ma’lumotlarni shifrlash ECB rejimidan farqli ravishda bir xil
ochiq matn bloklari turli shifr matn bloklariga almashinadi. Mazkur holat grafik orqali
tasvirlanganda 7-rasmda ko’rsatilgandek bo’ladi.
16-rasm. CBC
rejimida
shifrlash
natijasi