1. gost p28147-89 blokli shifrlash algoritmi va uning kriptotahlili


ГОСТ 28147-89 kriptoalgoritmining



Yüklə 91,73 Kb.
səhifə2/2
tarix30.12.2023
ölçüsü91,73 Kb.
#164217
1   2
azlochinz

ГОСТ 28147-89 kriptoalgoritmining 𝒊-raundi
Daniel Julius Bernstein ( djb nomi bilan tanilgan, 1971 yil 29 oktyabrda tug'ilgan) - amerikalik nemis matematik , kriptolog va kompyuter olimi . U Bochum Ruhr universitetidagi CASA [2] bo’limi professori , shuningdek Chikagodagi Illinoys universitetida kompyuter fanlari bo‘yicha tadqiqotchi professori. Bungacha u Eyndxoven texnologiya universitetining matematika va informatika kafedrasi professori edi .
eSTREAM keng tarqalgan foydalanish uchun mos keladigan yangi oqim shifrlarini aniqlash uchun Yevropa Ittifoqi tomonidan tashkil etilgan loyihadir.
U NESSIE loyihasida taklif qilingan barcha 6 shifrni buzgandan keyin boshlangan. Algoritmlarni qabul qilish shartlari birinchi marta 2004 yilda nashr etilgan. 2008 yil aprel oyida tanlov yakunlandi. Loyiha bir necha ketma-ket bosqichlarga bo'lingan bo'lib, uning maqsadi turli xil foydalanish holatlariga mos keladigan shifrlash algoritmlarini topish edi.
Salsa20 'qo'shimcha oqim shifridir, aniqrog'i dizayn printsipiga amal qiladigan qo'shimcha oqim shifrlari oilasiga mansub. U dastlab Den Bernshteyn tomonidan ishlab chiqilgan va 2005 yilda eSTREAM loyihasiga taqdim etilgan.
Uning maqsadi pochta tizimlari orqali uzatiladigan ma'lumotlarni shifrlash bo'yicha Evropa standartlarini yaratish edi. Algoritm birinchi profil (yuqori o‘tkazuvchanlikka ega dasturiy ilovalar uchun oqim shifrlari) bo‘yicha tanlov g‘olibiga aylandi.
O'shandan beri u ko'plab Internet xavfsizligi protokollari va ilovalarida keng qo'llanilgan. Uning asosiy afzalliklari - apparat yoki dasturiy ta'minotni amalga oshirishda soddaligi va samaradorligi. Oddiy dasturiy ta'minotni amalga oshirishda, masalan, Salsa 20 o'tkazuvchanligi oqimli shifrlangan RC4 o'tkazuvchanligidan taxminan besh baravar katta. Yuqorida aytib o'tilganidek, Salsa20 noncesdan foydalanadi va shuning uchun kalitni vaqti-vaqti bilan yangilab turish unchalik muhim emas. Ushbu maqola yozilgunga qadar, Salsa20/20 va Salsa20/12 (ya'ni, Salsa20 ning atigi 12 raundli qisqartirilgan versiyasi) ga qarshi hech qanday nashr etilgan hujumlar mavjud emas. Eng mashhur hujum Salsa 20/8 ni buzishga qodir (ya'ni, Salsa20 ning 8 raundli qisqartirilgan versiyasi), ammo bu hujum amaliydan ko'ra nazariy jihatdan qiziqroq.
Salsa20 64 baytli (yoki 512 bitli) ma'lumotlar bloklarida ishlaydi, ya'ni bir bosqichda qayta ishlangan ochiq matn yoki shifrlangan matn birligi 64 bayt uzunlikda bo'ladi. 

Ushbu iborada Salsa20encrypt Salsa20 shifrlash funksiyasiga ishora qiladi, Salsa20expand esa uning kengaytirish funktsiyasiga ishora qiladi. Ikkala funktsiya ham k harfi bilan (bu odatda 32 bayt uzunlikdagi) tugmachalarga ega bo’lgan 8 baytli nonce n dan foydalanadi. Oddiylik uchun biz Salsa20 shifrlash va kengaytirish funksiyalarini farqlamaymiz va biz Salsa20 atamasini ulardan biriga murojaat qilish uchun ishlatamiz.


Salsa 20 shifrlash funksiyasi va kengaytirish funksiyalaridan tashqari, 64 baytlik z argumentini oladigan va uni 64 baytlik Salsa 20 chiqish qiymatini xesh qiluvchi Salsa20 xesh funksiyasi ham mavjud. Shunday qilib, Salsa20 xesh funksiyasi argumentni siqmaydi va kengaytirmaydi, lekin uni kriptografik xesh funksiyasi (ya’ni, “oddiy” kriptografik xesh funksiyasi bilan bir xil xususiyatlarga ega, masalan, psevdor tasodifiylik) deb hisoblash mumkin. Biz Salsa20 xesh, kengaytirish va shifrlash funksiyalarini keyingi tartibda kiritamiz.
Qator funksiya y ni kiritish sifatida qabul qiladi va yuqorida aytib o‘tilgan choraklik funksiya yordamida matritsa qatorlarini parallel ravishda o‘zgartiradi. Aniqroq aytganda, u 16 so'zli chiqish qiymatini hosil qiladi z=rowround(y)=(z0, z1, z2, … z15) ,

Bu shuni anglatadiki, har bir satr alohida (boshqa qatorlardan mustaqil ravishda) qayta ishlanadi va har bir satrning to'rtta so'zi o'ziga xos tarzda almashtiriladi. Aslida, i qatordagi so'zlar (1 < i < 4 uchun) i – 1 pozitsiyalari uchun chapga aylantiriladi.


Bu shuni anglatadiki, birinchi qatordagi so'zlar umuman almashtirilmaydi, ikkinchi qatordagi so'zlar bir pozitsiya uchun chapga, uchinchi qatordagi so'zlar chapga ikki pozitsiyaga, to'rtinchi qatordagi so'zlar esa chapga aylantiriladi. choraklik funktsiyasi qo'llanilishidan oldin uchta pozitsiyaga qoldiriladi.
Qatorda aylanish funksiyasiga oʻxshab, ustunli funksiya 16 soʻz qiymatini oladi (y0, y1, y2, ..., y15) va z = columnround(y) = (z0, z1, z2, …z15) ga koʻra 16 soʻzli chiqish hosil qiladi.

Ustunli funksiya qaysidir ma'noda qatorli aylanish funksiyasini ko'chirishdir; ya'ni a ni to’ldirish orqali matritsa ustunlarini parallel ravishda o'zgartiradi choraklik funksiya orqali har bir ustunni almashtiradi.


Qator va ustunli funksiyalar ikki bosqichda birlashtirilishi mumkin funktsiyasi. Aniqroq qilib aytadigan bo'lsak, doubleround funksiyasi ustunli funksiya bo'lib, undan keyin qatorli funksiya mavjud. Shunday qilib, u 16 so'zdan iborat ketma-ketlikni oladi va boshqa 16 so'zli ketma-ketlikni chiqaradi. Agar y = (y0, Y1, Y2, ...y15) kirish boʻlsa, u holda
Z = (z0 ,z1 ,z2 , …. z15)
= doubleround(y)
=rowround(columnround(y)) tegishli chiqishdir.
Bu shuni anglatadiki, doubleround funktsiyasi birinchi navbatda kirish ustunlarini parallel ravishda o'zgartiradi va keyin parallel ravishda qatorlarni o'zgartiradi.
Bu, o'z navbatida, har bir so'z ikki marta o'zgartirilganligini anglatadi. Nihoyat, littleendian funksiyasi so'z yoki 4 baytlik ketma-ketlikni kodlaydi b =(b0, b1, b2, b3) o’z-endian tartibda (b3, b2, b1, b0) b3*224+b2*216 + b1*28 + b0 qiymatini ifodalaydi. Bu qiymat, o'z navbatida, odatda o'n oltilik tizimda yoziladi.
Masalan, littleendian(86, 75, 30, 9) = (9, 30, 75, 86) represents 0x091E4B56 sifatida yozilishi mumkin bo'lgan 9*224 +30*216 +75*28 +86 ni ifodalaydi. Littlendian funksiyasi teskari bo'lishi mumkinligini aytishga hojat yo'q, shuning uchun
littleendian-1(0x091E4B56) = (86,75, 30,9). Hammasini jamlagan holda, Salsa20 xesh-funksiyasi 64 baytlik ketma-ketlikni x = (x[0], x[1],....x[63]) kiritadi va yana 64 baytlik Salsa 20(x) = xdoubleround10(x) ketma-ketligini chiqish sifatida hosil qiladi. Kiritish ketma-ketligi x 16 ta soʻzdan iborat.

u holda chiqish Salsa 20(x) xesh-funktsiyasi 16 ta soʻzning birikmasi boʻlib, ular quyidagicha hosil boʻladi:


littlendian-1(z0 +y0)
littlendian-1(z1 +x1)
….
littlendian '(z15+x15);.
Salsa20 ning 20 raundlari ikki tomonlama funksiya 10 marta takrorlanganligidan kelib chiqadi va har bir iteratsiya asosan ikkita turni ifodalaydi, biri ustunli funksiya uchun, ikkinchisi esa qatorli funksiya uchun turadi.
Kengaytirish funktsiyasi
Nomidan ko'rinib turibdiki, Salsa20 kengaytirish funksiyasining maqsadi 32 yoki 16 bayt kalit va doimiy 16 baytdan foydalangan holda 16 baytlik kirish n ni 64 baytlik chiqishga kengaytirishdir. Kalit 32 yoki 16 baytdan iboratligiga qarab, doimiy baytlar va tegishli kengaytirish funktsiyalari biroz farq qiladi.
Agar kalit 32 baytdan iborat bo'lsa, u holda ikkita 16 baytli k0 va k1 tugmachalarini ifodalovchi ikki qismga bo'linadi. Bunday holda, doimiy baytlar quyidagicha ko'rinadi (bu erda har bir  qiymati littleendian funksiyasi yordamida kodlangan to'rt baytdan iborat):
0 = (101, 120, 112, 97)=0x61707865
1 = (110, 100, 32, 51)=0x3320646E
2 = (50, 45, 98, 121)=0x79622D32
3 = (116, 101, 32, 107)=0X6B206574
Keyin Salsa20 kengaytirish funksiyasi quyidagicha aniqlanadi:

E'tibor bering, littleendian(0) = littleendian(101, 120,112,97) = 0x61707865, shuning uchun Salsa20 xesh funksiyasiga bo'ysunadigan argument to'rt bayt bilan boshlanadi, 0x61,0x70, 0x78 va 0x65.


Kalit 16 baytdan iborat bo'lsa, u holda bu ikki marta qo'llaniladigan bitta 16 baytli k kalitni ifodalaydi. Bunday holda, 4 baytli  konstantalarining biroz boshqacha to'plami ishlatiladi
0 = (101, 120, 112, 97)
1= (110, 100, 32, 49)
2= (54, 45, 98, 121)
3= (116, 101, 32, 107)
Ikkala holatda ham  va  doimiy c sifatida qarash mumkin, k kalit, n esa Salsa20 kengaytirish funksiyasining argumenti sifatida qaralishi mumkin. Demak, funktsiyaga kiritilgan ma'lumotlarni yozish mumkin ma'lum bir matritsa tartibi:

Shubhasiz, bu tartib biroz o'zboshimchalik bilan va o'z xohishiga ko'ra o'zgartirilishi mumkin. Keyinchalik tushuntirilganidek, ChaCha20 Salsa 20 ning boshqa matritsa tartibidan foydalanadigan variantidir.


Shifrlash funktsiyasi
Salsa20 qo'shimcha oqim shifridir, ya'ni tegishli o'lchamdagi kalit oqimi yaratiladi va ochiq matnli xabarga modul 2 qo'shiladi. Salsa20 kengaytirish funksiyasi kalit oqimini yaratish uchun ishlatiladi. Aniqroq qilib aytganda, k 32 yoki 16 baytli kalit bo'lsin. n 8 baytlik bo'lgan va m shifrlanadigan l baytli ochiq matnli xabar (bu erda 0 <= l <= 270), k kalit ostida nonce n bilan m ning Salsa20 shifrlanishi Salsa20k (m, n) sifatida belgilanadi. 
Yüklə 91,73 Kb.

Dostları ilə paylaş:
1   2




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©www.genderi.org 2024
rəhbərliyinə müraciət

    Ana səhifə