delta = 0
𝑥
9
𝑒
3779
𝑎
9
for I=1 dan 32 gacha
sum = sum + delta
L = L + (((R<<4) + K[0])
⨁
(R + sum)
⨁
((R>>5) + K[1]))
R = R + (((L<<4) + K[2])
⨁
(L + sum)
⨁
((L>>5) + K[1]))
Keyingi
I
Shifrmatn = (
L,R
).
Bu yerda “
≪
” amali sonni chapga surish amali va “
≫
” amali uni o’nga surish
amali hisoblanadi. Masalan, ikkilik ko’rinishdagi bir baytli son “10110101” ga teng
bo’lsa, u holda ushbu sonni chapga 4 birlik surish natijasi “01010000” ga teng bo’ladi.
Ushbu sonni 5 birlik o’nga surish natijasi esa “00000101” ga teng bo’ladi.
TEA algoritmi Feystel tarmog’iga asoslanmagan bo’lsada (Feystel tarmog’ida
shifrlash va deshifrlash funksiyalari bir xil bo’ladi), deshifrlashda XOR amali o’rniga
qo’shish yoki bo’lish amallaridan foydalanilmaydi. TEA algoritmining deshifrlash
funksiyasi quyida keltirilgan.
(
𝐾
[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
5> Do'stlaringiz bilan baham: |