Uploaded by Asadbek Abduvaliyev

Twofish blokli shifrlash algoritmi va uning kripto tahlili

advertisement
Twofish blokli shifrlash algoritmi va uning kripto
tahlili
Twofish
Yaratuvchi Bryus
Shnayer boshchiligidagi bir
guruh mutaxassislar
Yaratilgan
Kalit
o'lchami
1998 yil
128/192/256 bit
Blok hajmi 128 bit
Turlar soni 16
Turi
Feistel tarmog'i
Twofish - blok o'lchami 128 bit va kalit uzunligi 256 bitgacha bo'lgan
simmetrik blokli shifrlash algoritmi. Turlar soni: 16. Bryus
Shnayer boshchiligidagi mutaxassislar jamoasi tomonidan ishlab
chiqilgan . U AES tanlovining ikkinchi bosqichida beshta finalistdan biri
edi . Algoritm Blowfish , SAFER va SQUARE algoritmlari asosida ishlab
chiqilgan .
Algoritmning o'ziga xos xususiyatlari - oldindan hisoblangan va kalitga
bog'liq almashtirish tugunlaridan foydalanish va shifrlash pastki kalitlarini
ochish uchun murakkab sxema. N -bitli shifrlash kalitining yarmi haqiqiy
shifrlash kaliti sifatida ishlatiladi, qolgan yarmi algoritmni o'zgartirish uchun
ishlatiladi (almashtirish tugunlari unga bog'liq).
Tarkib



1Umumiy ma'lumot
2Algoritmning tavsifi
o 2.1Oqartirish
o 2.2Funktsiya g
o 2.3Pseudo-Hadamar transformatsiyasi (PHT)
o 2.41 bit aylantiring
o 2.5Kalit avlodi
3Texnik tafsilotlar
o 3.1Funktsiya h
 3.1.1q 0 va q 1 almashtirishlar
3.2Kalit avlodi
o 3.3Funktsiya g va S - qutilari
4Kriptanaliz
5Eslatmalar
6Havolalar
o



Umumiy ma'lumot
Twofish NISTning AES [1] uchun talablari va tavsiyalarini hisobga olgan
holda maxsus ishlab chiqilgan :






128-bitli simmetrik blokli shifr,
kalit uzunligi 128, 192 va 256 bit,
zaif kalitlar yo'q,
samarali dasturiy ta'minot (birinchi navbatda 32-bitli protsessorlarda) va
apparat ta'minoti,
moslashuvchanlik (qo'shimcha kalit uzunliklaridan foydalanish
imkoniyati, oqim shifrlashda foydalanish, xesh funktsiyalari va
boshqalar),
algoritmning soddaligi - uni samarali tahlil qilish imkoniyati uchun.
Biroq, bu algoritm tuzilishining murakkabligi va shunga mos ravishda uni
zaif kalitlar yoki yashirin ulanishlar uchun tahlil qilishning murakkabligi,
shuningdek, ko'pgina platformalarda Rijndael bilan solishtirganda ancha
uzoq bajarilish vaqti uning foydasiga ishlamadi [2] .
Twofish algoritmi 128 bitli kirish bloki uchun Blowfish algoritmini
o'zgartirishga urinish natijasida paydo bo'ldi . Yangi algoritm apparatda
oson amalga oshirilishi (jumladan, kichikroq jadvallardan foydalanish),
yanada rivojlangan kalitlarni kengaytirish tizimiga ega bo'lishi
( inglizcha kalit jadvali ) va aniq F funktsiyasiga ega bo'lishi kerak edi.
Natijada, algoritm kripto-Hadamar transformatsiyasi ( PHT ) yordamida birbirini o'zgartiradigan to'rtta filialga ega aralash Feistel tarmog'i sifatida
amalga oshirildi .
Zamonaviy (o'sha vaqt uchun) 32-bitli protsessorlarda (shuningdek, smartkartalar va shunga o'xshash qurilmalarda) samarali tatbiq qilish qobiliyati
Twofish ishlab chiquvchilari tomonidan boshqariladigan asosiy
tamoyillardan biridir.
Masalan, F funktsiyasida PHT ni hisoblash va K kalit qismi bilan qo'shishda
an'anaviy xor o'rniga ataylab qo'shish ishlatiladi . Bu Pentium protsessorlari
oilasining LEA buyrug'idan foydalanish imkonini beradi, bu sizga Hadamard
konvertatsiyasini bir soat siklida hisoblash imkonini beradi.
(ammo, bu
holda kod ma'lum bir kalit qiymati uchun kompilyatsiya qilinishi kerak).
Twofish algoritmi patentlanmagan va har kim tomonidan hech qanday to'lov
va royaltisiz foydalanishi mumkin. U ko'plab shifrlash dasturlarida
qo'llaniladi, garchi u Blowfish ga qaraganda kamroq tarqalgan .
Algoritm tavsifi
Twofish kirish 128-bitli ma'lumotlar blokini to'rtta 32-bitli subbloklarga
ajratadi, ular kirish oqartirilgandan so'ng 16 tur transformatsiyadan
o'tkaziladi. Oxirgi turdan keyin chiqish oqlash amalga oshiriladi.
Oqartirish
Oqartirish - bu birinchi turdan oldin va oxirgi turdan keyin ulanishlar bilan
ma'lumotlarni xoringlash tartibi. Ushbu uslub birinchi marta
Khufu / Khare shifrida va mustaqil ravishda Ron
Rivest tomonidan DESX shifrlash algoritmida ishlatilgan . Jo Killian (NEC)
va Phillip Rogaway (Kaliforniya universiteti) oqartirish aslida DESX-da
kalitlarni to'liq qidirish vazifasini qiyinlashtirishini ko'rsatdi .Twofishni ishlab
chiquvchilarning ta'kidlashicha , Twofish-da oqartirish ham kalitni taxmin
qilish vazifasini sezilarli darajada murakkablashtiradi, chunki kriptoanalitik F
birinchi davra funktsiyasining kirishiga qanday ma'lumotlar tushishini topa
olmaydi.
Biroq, salbiy tomonlari ham paydo bo'ldi. IBM tadqiqot markazi
mutaxassislari tomonidan qiziqarli tadqiqot o‘tkazildi. [5] Ular odatiy CMOS
smart-kartasi uchun Twofish algoritmini amalga oshirdilar va Differentsial
quvvat tahlili (DPA) yordamida hujumni tahlil qildilar. Bu kirish
ma'lumotlarining pastki kalitlarini to'g'ridan-to'g'ri xored qilgani uchun
hujumga uchragan kirishni oqartirish protsedurasi edi. Natijada,
tadqiqotchilar ixtiyoriy bloklarning atigi 100 ta shifrlash amaliyotini tahlil
qilib, 128 bitli kalitni to‘liq hisoblash mumkinligini ko‘rsatdi.
Funktsiya g
g funksiyasi Twofish algoritmining asosi hisoblanadi. Funktsiya kiritish 32bitli X raqami bo'lib, u keyin to'rt baytga bo'linadi x0, x1, x2, x3. Olingan
baytlarning har biri o'ziga xos S-box orqali o'tkaziladi. (Algoritmdagi Squtilari sobit emas, balki kalitga bog'liqligini ta'kidlash kerak). S-box
chiqishlarida olingan 4 bayt to'rt komponentli vektor sifatida talqin
qilinadi. Bu vektor 4x4 o'lchamdagi qat'iy MDS (maksimal masofa
ajratiladigan) matritsaga ko'paytiriladi va hisob-kitoblar Galois maydonida
amalga oshiriladi.
moduli kamaytirilmaydigan polinom
MDS matritsasi - bu chekli K maydoni ustidagi matritsa, agar uni chiziqli
o'zgartirish matritsasi sifatida olsak.
kosmosdan
kosmosga
keyin fazodan istalgan ikkita vektor
(x, f(x)) ko’rinishdagi
,
komponentlarda kamida m+1 farq bo’ladi. Ya'ni (x, f(x)) ko'rinishdagi
vektorlar to'plami maksimal masofadan ajratiladigan kod xususiyatiga ega
bo'lgan kodni hosil qiladi. Bunday kod, masalan, Reed-Solomon kodidir .
Twofish-da MDS matritsasining maksimal xilma-xillik xususiyati vektor a va
vektorning o'zgaruvchan baytlarining umumiy sonini bildiradi.
beshdan
kam emas. Boshqacha qilib aytganda, a dagi faqat bitta baytga har qanday
o'zgarish b dagi barcha to'rt baytga o'zgarishiga olib keladi.
Crypto-Hadamar Transform (PHT)
Hadamard kripto transformatsiyasi - bu 2n uzunlikdagi bit satrning
qaytariladigan o'zgarishi. Satr teng uzunlikdagi n bitli a va b ikkita qismga
bo'linadi. Konvertatsiya quyidagicha hisoblanadi:
Ushbu operatsiya ko'pincha kodni "tarqatish" uchun ishlatiladi
(masalan, SAFER shifrida ).Twofish ushbu transformatsiyadan ikkita gfunktsiya natijalarini aralashtirishda foydalanadi (n = 32).
Shishishni 1 bitga aylantiring
Har bir turda F funktsiyasi natijalari bilan xorlangan ikkita o'ng tomondagi
32 bitli bloklar qo'shimcha ravishda bir bitga aylantiriladi. Uchinchi blok xor
operatsiyasidan oldin, to'rtinchi blok - keyin siljiydi. Ushbu siljishlar Squtilari va MDS matritsalarini ko'paytirish operatsiyalariga xos bo'lgan
baytlarni moslashtirishni buzish uchun maxsus qo'shiladi. Biroq, shifr endi
to'liq nosimmetrik emas, chunki shifrlash va shifrni ochishda siljishlar
qarama-qarshi yo'nalishda amalga oshirilishi kerak.
Kalit avlodi
Twofish 128, 192 va 256 bitli kalitlar bilan ishlash uchun mo'ljallangan. Asl
kalitdan 40 ta 32 bitli pastki kalitlar yaratiladi, ulardan birinchi sakkiztasi
faqat kirish va chiqishda oqlash operatsiyalarida, qolgan 32 tasi esa
shifrlash davrlarida, har bir turda ikkita pastki kalitdan
foydalaniladi. Twofish-ning o'ziga xos xususiyati shundaki, asl kalit shifrlash
algoritmining o'zini o'zgartirish uchun ham ishlatiladi, chunki g funktsiyasida
ishlatiladigan S-qutilari sobit emas, balki kalitga bog'liq.
Dumaloq pastki kalitlarni yaratish uchun M asl kaliti baytlarni qayta
tartiblash orqali ikkita bir xil blokga bo'linadi.
foydalaning
Va
. Keyin blokdan
va h funktsiyasi 2*i qiymati shifrlangan va blok yordamida
qiymat shifrlangan 2*i+1, bu yerda i joriy turning soni (0 - 15). Olingan
shifrlangan bloklar Hadamard kriptotransformasi yordamida aralashtiriladi
va keyin dumaloq pastki kalitlar sifatida ishlatiladi.
Texnik tafsilotlar
128 bitli kalit uchun bitta dumaloq shifrlash sxemasi
Keling, yumaloq pastki kalitlarni yaratish algoritmini, shuningdek, g kalitga
bog'liq funktsiyani batafsil ko'rib chiqaylik. Twofish-da pastki kalitlarni
yaratish va g funktsiyasini yaratish uchun ham bitta asosiy funktsiyadan
foydalaniladi: h(X, L 0 , L 1 , ..., L k ). Bu erda X, L 0 , L 1 , ..., L k 32 bitli
so'zlar va k = N / 64, bu erda N - bitlardagi asl kalitning
uzunligi. Funktsiyaning natijasi bitta 32 bitli so'zdir.
Funktsiya h
Turli uzunlikdagi kalitlar uchun h funktsiyasi
Funktsiya k bosqichda bajariladi. Ya'ni, kalit uzunligi 256 bit uchun 4
bosqich, 192 bitli kalit uchun - 3 bosqich, 128 bit uchun - 2 bosqich bo'ladi.
Har bir bosqichda kirish 32-bitli so'z 4 baytga bo'linadi va har bir bayt
q 0 yoki q 1 o'zgarmas bit almashinuvidan o'tadi.
Natija 4 bayt vektor sifatida ifodalanadi va MDS matritsasi bilan
ko'paytiriladi. Hisoblash Galois maydonida GF(2 8 ) moduli
kamaytirilmaydigan polinomda bajariladi.
MDS matritsasi quyidagicha ko'rinadi:
.
q0
va q 1 almashtirishlar
q 0 va q 1 - 8 bitli kirish baytining o'zgarmas almashtirishlari.
Bayt x ikkita 4 bitli a 0
va b 0 ga bo'linadi , ular orqali quyidagi o'zgarishlar amalga
oshiriladi:
Bu yerga
o'ngga 4 bitli tsiklik siljish va t 0 , t 1 , t 2 ,
t 3 4 bitli raqamlarning jadvallarini almashtirishdir.
q 0 uchun jadvallar quyidagicha ko'rinadi:
t 0 = [ 8 1 7 D 6 F 3 2 0 B 5 9 ECA 4]
t 1 = [ ECB 8 1 2 3 5 F 4 A 6 7 0 9 D]
t 2 = [BA 5 E 6 D 9 0 C 8 F 3 2 4 7 1 ]
t 3 = [D 7 F 4 1 2 6 E 9 B 3 0 8 5 CA]
q 1 uchun jadvallar quyidagicha ko'rinadi:
t 0 = [ 2 8 BDF 7 6 E 3 1 9 4 0 AC 5]
t 1 = [ 1 E 2 B 4 C 3 7 6 DA 5 F 9 0 8]
t 2 = [ 4 C 7 5 1 6 9 A 0 ED 8 2 B 3 F]
t 3 = [ B 9 5 1 C 3 DE 6 4 7 F 2 0 8 A]
Kalit avlodi
M asl kalit va N uning uzunligi bit bo'lsin. Ulanishlar quyidagicha yaratiladi:


Asl kalit 8*k baytga bo'lingan
, bu erda k = N / 64.
Bu 8*k baytlar to‘rt baytli so‘zlarga bo‘linadi va har bir so‘zdagi baytlar
teskari tartibda joylashadi. Natijada 2*k 32-bitli so'zlar

Olingan 2*k 32 bitli so'zlar ikkita vektorga bo'linadi
so'zlarning hajmi.
Va
k 32 bitli
1-bosqich uchun pastki kalitlar formulalar yordamida hisoblanadi:
Funktsiya g va S -boxes
g funktsiya h funksiya bo'yicha aniqlanadi :.
Vektor S ham M e va M o vektorlari kabi original kalitdan hosil bo'lib, k 32
bitli so'zlardan iborat. Asl kalit baytlari sakkiz baytdan iborat k guruhga
bo'lingan . Har bir bunday guruh 8 ta komponentdan iborat vektor sifatida
ko'rib chiqiladi va 4x8 baytlik sobit RS matritsasi bilan
ko'paytiriladi. Ko'paytirish natijasi to'rt baytdan iborat vektordir. Hisobkitoblar Galois maydonida amalga oshiriladi
moduli
kamaytirilmaydigan polinom
. RS matritsasi shaklga ega
Kriptanaliz
Twofish-ni qisqartirilgan turlar bilan o'rganish shuni ko'rsatdiki, algoritm
katta xavfsizlik chegarasiga ega va AES tanlovining boshqa finalchilari
bilan solishtirganda, u eng mustahkam bo'lgan. Biroq, uning g'ayrioddiy
tuzilishi va nisbiy murakkabligi ushbu quvvatning sifatiga shubha tug'dirdi.
Shikoyatlarga dumaloq pastki kalitlarni yaratishda asl kalitning ikkiga
bo'linishi sabab bo'lgan. Kriptograflar Fauzan Mirza va Shon Merfi bunday
boʻlinish “boʻl va zabt et” hujumini tashkil qilish, yaʼni muammoni ikkita
oʻxshash, ammo soddaroq boʻlganlarga ajratish imkonini beradi, deb taklif
qilishdi. Biroq, aslida bunday hujumni amalga oshirish mumkin emas edi.
2008 yil holatiga ko'ra, Twofish kriptoanalizining eng yaxshi varianti 2000
yilda Yaponiyada Shixo Moriai va Yiqun Lisa Yin tomonidan nashr etilgan
kesilgan differentsial kriptoanaliz variantidir. Ular kerakli differensiallarni
topish uchun tanlangan 251 ta ochiq matn kerakligini ko’rsatdi. Biroq,
tadqiqot nazariy edi va hech qanday haqiqiy hujum amalga
oshirilmadi. Twofish yaratuvchisi Bryus Shnayer o'z blogida bunday
hujumni haqiqatda amalga oshirish mumkin emasligini ta'kidlaydi.
Havolalar Twofish veb-sahifasi




(inglizcha) .
Twofish manba kodlari (inglizcha) .
Twofish: 128 bitli blokli shifr 2008 yil 29
avgustda Wayback mashinasida arxivlangan .
Shifrlash algoritmlari AES tanlovining finalchilaridir .
Twofish ishlatadigan mahsulotlar ro'yxati .
Download