O‘ZBEKISTON RESPUBLIKASI AXBOROT TEXNOLOGIYALARI VA KOMMUNIKATSIYALARINI RIVOJLANTIRISH VAZIRLIGI MUHAMMAD AL-XORAZMIY NOMIDAGI TOSHKENT AXBOROT TEXNOLOGIYALARI UNIVERSITETI SAMARQAND FILIALI “TASDIQLAYMAN” O‘quv va tarbiyaviy ishlar bo‘yicha direktor o‘rinbosari dots. Z.A. Qarshiyev _______________ “__” _________ 2020-yil “AXBOROT XAVFSIZLIGI” KAFEDRASI OpenSSL kutubxonasidan foydalangan holda ma’lumotlarni xesh qiymatini hisoblash «Kriptografiya 1» fanidan amaliy mashg‘ulotlari uchun Uslubiy ko‘rsatma (5330300-Axborot xavfsizligi ta’lim yo‘nalishi talabalari uchun) Samarqand-2020 Zaynalov N.R., Aliyev N.A., Achilov S.S., Qilichev D. OpenSSL kutubxonasidan foydalangan holda ma’lumotlarni xesh qiymatini hisoblash. Uslubiy ko‘rsatma. Samarqand: TATU SF nashri, 2020, 27 bet. Mazkur uslubiy ko‘rsatmada “Kriptografiya 1” fani bo‘yicha amaliy mashg‘ulotlarni o‘tkazish bo‘yicha to‘liq va batafsil tavsiyalar berilgan. Keltirilgan mavzu bo‘yicha talabalar tomonidan o‘zlashtirishni aniqlashda yangi pedagogik texnologiyalardan keng foydalanilgan. Uslubiy ko‘rsatma Axborot xavfsizligi ta’lim yo‘nalishi uchun mo‘ljallangan bo‘lib, undan talabalar o‘zlarining bilimlarini mustaqil ravishda ham oshirishlari mumkin. Tuzuvchilar: Zaynalov N.R. – TATU SF, «Axborot xavfsizligi» kafedrasi mudiri, dotsent, f.-m.f.n. Aliyev N.A. – TATU SF, «Axborot xavfsizligi» kafedrasi dotsent, f.-m.f.n. Achilov S.S. – TATU SF, «Axborot xavfsizligi» kafedrasi k.o‘q., i.f.n. Qilichev D. – TATU SF, «Axborot xavfsizligi» kafedrasi assistenti. Taqrizchilar: Yakubjanova D. – TATU SF, «Axborot ta’lim texnologiyalari» kafedrasi mudiri. Urunbayev E. – SamDU, «Modellashtirish» kafedrasi dotsenti, f.-m.f.n. Uslubiy ko‘rsatma "Axborot xavfsizligi" kafedrasi majlisining 2020-yil 28avgust № 1 bayonnomasi bilan tasdiqlangan. Uslubiy ko‘rsatma TATU SF o‘quv-uslubiy kengash tomonidan tavsiya qilingan 29 - avgust 2020-yil №1-bayonnoma. MUNDARIJA Kirish ............................................................................................................................. 4 1. Xesh funksiya haqida ................................................................................................ 4 2. MD5 xesh funksiyasi................................................................................................. 7 3. Qisqartirilgan MD5 algoritmini amaliy qo‘llashga misol....................................... 11 4. SHA xeshlash algoritmi .......................................................................................... 18 Amaliy mashg‘ulot ..................................................................................................... 21 Amaliy mashg‘ulot ishini bajarish tartibi................................................................... 26 Hisobotni rasmiylashtirish tartibi ................................................................................ 28 Amaliy mashg‘ulotlari uchun variantlar .................................................................... 28 Foydalanilgan adabiyotlar ........................................................................................... 30 1-ilova. ASCII jadvali ................................................................................................. 31 2-ilova.Sanoq tizimlari ............................................................................................... 33 3-ilova. Mantiqiy amallarni yagona jadvali ................................................................ 34 Sadaqaning afzali musulmon kishining ilm o‘rganib, so‘ng boshqa musulmon birodarlariga ham o‘rgatishidir. Xadis Kirish Zamonaviy MD5 algoritmi ХХ asrning 90-yillarida yaratilgan bo‘lib, bevosita xesh-funksiyani shakllantiruvchi MD4 algoritmining yaxshilangan varianti hisoblanadi. Bunda MD quyidagi so‘zlardan Message Digest tashkil topgan. Ushbu MD4 va MD5 algoritmlarining muallifi R.Rivest hisoblanadi. MD5 algoritmining natijasi 128-bitli xesh-kod bo‘ladi. Kiruvchi ma’lumotlar 512 bitli bloklarga taqsimlanadi va qayta ishlanadi. Algoritmda arifmetik amallar bilan birgalikda oddiy mantiqiy operatsiyalar ham qo‘llaniladi, masalan, mantiqiy qo‘shish, ko‘paytirish, inkor etish va boshqalar. Ushbu operatsiyalarning har xil shaklda qo‘llash orqali ma’lumotlarni aralashtirishga imkon beradi. MD5 algoritmi parollarni shifrlash, fayllarni butunligini nazorat qilish, elektron raqamli imzoda va kriptografiyaning boshqa sohalarida qo‘llaniladi. 1. Xesh funksiya haqida Kriptografiyada, xesh-funksiya deb ixtiyoriy uzunlikdagi (bitlar yoki baytlar birliklarida) ma’lumotni biror fiksirlangan (belgilangan) uzunlikdagi (bitlar yoki baytlar birliklariga) qiymatga o‘tkazib beruvchi funksiyaga aytiladi. Xesh funksiyalardan amalda statistik tajribalar o‘tkazishda, mantiqiy qurilmalarni tekshirishda, ma’lumotlar bazasida tez qidirib topish algoritmlarini yaratishda va ma’lumotlar bazasidagi ma’lumotlarning butunligini tekshirishda foydalaniladi. Xesh funksiya (ingl. hash function) deb, ixtiyoriy uzunlikdagi M ma’lumotni fiksirlangan uzunlikdagi h(M)=H qiymatga akslantirib beruvchi, oson hisoblanadigan bir tomonlama funksiyaga aytiladi. Xesh funksiya: “xesh qiymat”, “daydjest”, “barmoq izlari” deb ham ataladi. Xesh funksiyaga nisbatan quyidagi talablar qo‘yiladi: 1. Ixtiyoriy uzunlikdagi matn uchun qo‘llab bo‘lishlik. 2. Chiqishda belgilangan uzunlikdagi qiymatni berishlik. 3. Ixtiyoriy berilgan x bo‘yicha h(x) oson hisoblanishlik. 4. Ixtiyoriy berilgan H bo‘yicha h (x)= N tenglikdan x ni hisoblab topib bo‘lmaslik. (Bir tomonlamalik xususiyati). 5. Olingan x va y ≠ x matnlar uchun h(x) ≠ h(y) munosabat o‘rinli bo‘lishi. (Kolliziyaga bardoshlilik xususiyati). Demak, xabar daydjesti (ingl. message digest) – bu muayyan usul yordamida beriladigan bir tomonloma xesh-funksiya yordamida ma’lumotlarni qayta ishlash natijasi hisoblangan qayd etilgan uzunlikdagi simvollarning noyob ketma-ketligi. Xeshlash algoritmi (ingl. Hashing algorithm) – chekli uzunlikdagi dastlabki ketma-ketligini qayd qilingan uzunlikdagi bitlarning ketma-ketligiga almashtiruvchi kriptografik algoritm. Agar kolliziyalarni aniqlash murakkab bo‘lsa, xesh-funksiya ziddiyatsiz hisoblanadi. Bu yerda kolliziya – bu ikki turli dastlabki ma’lumotlar uchun bir tomonlama funksiyaning qiymatlari teng bo‘lgan voqea. Bir tomonlama funksiya – bu berilgan x argument bo‘yicha f(x) funksiyaning qiymatini hisoblash oson, lekin f(x) dan x ni aniqlash qiyin bo‘lgan funksiya. Xesh, xesh qiymat (ingl. hash, hash value) – bu ma’lumotlar ketma-ketligidan ishlab chiqariladigan va boshqa kirish ma’lumotlaridan xuddi shunday qiymatini hosil qilish ehtimoli kamayadigan tarzda generatsiyalanadigan son. Xesh-kod – bu xesh-funksiyaning chiqish natijasi bo‘lgan bitlar satri. Xeshlash – bu xesh-funksiya qiymatini hisoblash jarayoni. Xesh-funksiya (ingl. Hash function) – bu chekli uzunlikdagi bitlar satrini qayd qilingan uzunlikdagi bitlar satriga o‘zgartirish funksiyasi. Asosan ushbu qiymat 64 yoki 128 bitdan tashkil topgan bo‘ladi. Xesh-funksiyaning mazmun-mohiyati bevosita xesh kodga asoslangan ushbu kodni hosil qiluvchi funksiya argumetni haqida qandaydir xulosa qilish. Masalan, ikkita massivning xesh-kodlari har xil bo‘lsa, demak ushbu massivlar bir-biriga teng bo‘lmaydi. Ammo, xesh-kodlari teng bo‘lsa, massivlar ham teng ekanligini bildirmaydi. Chunki, umumiy holda xesh-kodlarning soni kiruvchi qiymatlar sonidan ancha kam bo‘ladi. Demak ikkita har xil kiruvchi qiymat bitta xesh-kodga ega bo‘ladi, ya’ni kolliziya sodir bo‘ladi. Ushbu holatning sodir bo‘lish ehtimoli bevosita xeshfunksiyani tahlil qilishda juda muhim ahamiyatga ega. Eng oddiy xesh-funksiya sifatida quyidagini taklif qilish mumkin, masalan, berilgan belgilar qatoridagi har bir baytni Xor operatsiyasi bilan qo‘shib chiqsak, natijada bir bayt olinadi. Ushbu natija 8 bitli xesh-kod bo‘ladi va kirish qatorining uzunligi qanday bo‘lishidan qat’iy nazar doimo bir bayt bo‘ladi.Masalan, quyidagi o‘n oltilik qator berilgan bo‘lsin: 3E 54 A0 1F B4. Ushbu qatorni ikkilik ko‘rinishga o‘tkazib, Xor bilan qo‘shamiz: 0011 0101 1010 0001 1011 0110 1110 0100 0000 1111 0100 0001 Bu yerdagi natija 0110 00012 yoki 6116 xesh-kod bo‘ladi. Ammo bunday oddiy xeshfunksiyani kriptografiyada qo‘llash tavsiya etilmaydi. Shu bois xesh-funksiyaga quyidagi talablar qo‘yiladi: • har qanday uzunlikdagi xabarga xesh-funksiyani qo‘llash mumkin bo‘lishi kerak; • xesh-funksiyani hisoblash oz vaqt talab qilishi kerak; • xesh-funksiya f(M) ma’lum bo‘lsa, uning argumentini M aniqlash murakkab bo‘lishi kerak; • agar M ma’lum bo‘lsa, unda f(M) ga teng bo‘lgan boshqa M* xabarni aniqlash murakkab masala bo‘lishi kerak; • xesh-funksiyalari teng bo‘lgan tasodifiy ikki xabarning mavjudligini aniqlash murakkab masala bo‘lishi kerak. Ushbu talablarga javob beradigan xesh-funksiyani yaratish murakkab masala hisoblanadi. Hozirgi kunda xabarni bloklarga taqsimlab, so‘ng bloklar bo‘yicha xesh- funksiyani hisoblash amalyotda taklif qilingan. Bunda har bir xabar uchun Mi xeshfunksiya hi quyidagicha hisoblanadi hi=H(Mi,hi-1). Natijada olingan hn qiymati barcha bloklarga bog‘liq bo‘ladi. 2. MD5 xesh funksiyasi MD5 algoritmda kiruvchi ma’lumot uzunligi ixtiyoriy bo‘lib, xesh qiymat uzunligi 128 bit bo‘ladi. MD5 xesh funksiyasi algoritmida kiruvchi ma’lumot 512 bitlik bloklarga ajratilib, ular 16 ta 32 bitlik qism bloklarga ajratiladi va bular ustida amallar bajariladi. Ushbu algoritmda "so‘z" tushunchasi sifatida 32 bitli ma’lumot deb qabul qilinadi. Algoritm boshiga kirish ma’lumotlar oqimi N bitdan iborat bo‘lib, ularni qadambaqadam qayta ishlab xesh-kod tashkil qilinadi. Ushbu qadamlar bilan tanishamiz. 1-qadam: oqimni to‘ldirish. Oqimni to‘ldirishda bevosita oqim oxirida 1 va nollar qo‘shiladi. Bunda hosil qilingan oqim uzunligi 512*n+448 ga, ya’ni 512 moduli bo‘yicha 448 ga teng bo‘lishi kerak. Oqim uzunligi ushbu shartni bajargan holda ham, oqimni to‘ldirish baribir amalga oshiriladi. 2-qadam: uzunlikni oshirish. Boshlang‘ich qator uzunligining ikkilik ko‘rinishi qator oxiridan qo‘shiladi. Ushbu uzunlik 64 bitli son shaklida yoziladi. Bunda 64 bitli son ikki 32 bitli “so‘z” ga ajratiladi va ular o‘rinlari bilan almashtiriladi. Natijada tashkil qilingan bitlar oqimi uzunligi 32 bitli “so‘z” lardan tashkil etilgan bo‘ladi va ular 16 soniga karrali bo‘ladi, Keyinchalik bajariladigan hisoblashlar uchun N ta so‘zdan tashkil topgan A[0…N-1] massivi qo‘llaniladi. 3-qadam: MD buferini to‘ldirish. Keyingi hisoblashlarda ma’lumotlarni buferda vaqtinchalik saqlash uchun 4 ta so‘zlik uzunlikdagi o‘zgaruvchilar kiritiladi: A, B, C, D. Ushbu o‘zgaruvchilarning boshlang‘ich qiymatlari quyidagicha qabul qilingan: A = 0x67452301 B = 0xEFCDAB89 C = 0x98BADCFE D = 0x10325476 4-qadam: 16 ta so‘zdan iborat blokni qayta ishlash. Keyingi hisoblashlarda 3 ta so‘zli argumentdan iborat quyidagi funksiyalar kiritiladi va natija ham so‘z bo‘ladi: F(x, y, z) = (x ˄ y) ˅ (¬x ˄ z) G(x, y, z) = (x ˄ z) ˅ (y ˄ ¬z) H(x, y, z) = x ⊕ y ⊕ z I(x, y, z) = y ⊕ x ˅ ¬z) Bu yerda «˄» belgisi bit operatsiyasi AND , «˅» belgisi bit operatsiyasi OR, «⊕» belgisi bit operatsiyasi XOR, «¬» belgisi bit operatsiyasi NOT. Ushbu funksiyalarning haqiqiylk jadvali quyidaicha bo‘ladi: 1-jadval F, G, H, I funksiyalari uchun haqiqiylik jadvali X 0 0 0 0 1 1 y 0 0 1 1 0 0 z 0 1 0 1 0 1 F 0 1 0 1 0 0 x 0 0 0 0 1 1 y 0 0 1 1 0 0 z 0 1 0 1 0 1 G 0 0 1 0 0 1 x 0 0 0 0 1 1 y 0 0 1 1 0 0 z 0 1 0 1 0 1 H 0 1 1 0 1 0 x 0 0 0 0 1 1 y 0 0 1 1 0 0 z 0 1 0 1 0 1 I 1 0 0 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 0 1 0 1 1 1 1 1 0 1 0 0 Ushbu qadamda quyidagi o‘zgarmas qiymatlar T[1...64] kerak bo‘ladi va ular T[i] = [4294967296 * abs(sin(i))] formula asosida hisoblanadi, bu yerda [x] – bu x qiymatining butun qismi. Shu bilan birga X va Y so‘zlari uchun siklik surish X<<<Y operatsiyasi kiritiladi. Keyingi bajariladigan jarayonlarni psevdokod shaklida keltiramiz: // oqimni 16 ta so‘zdan iborat bloklarga taqsimlaymiz: for i = 0 to N/16 - 1 do { // i-blokni X[] massiviga kiritamiz for j = 0 to 15 do X[j] = M[i * 16 + j] // A, B, C, D qiymatlarini saqlaymiz AA = A BB = B CC = C DD = D // 1-raund // yozuv [abcd k s i] quyidagini anglatadi: // a = b + ((a + F(b, c, d) + X[k] + T[i]) <<< s) // 16 ta operatsiya bajariladi: [ABCD 0 7 1] [DABC 1 12 2] [CDAB 2 17 3] [BCDA 3 22 4] [ABCD 4 7 5] [DABC 5 12 6] [CDAB 6 17 7] [BCDA 7 22 8] [ABCD 8 7 9] [DABC 9 12 10] [CDAB 10 17 11] [BCDA 11 22 12] [ABCD 12 7 13] [DABC 13 12 14] [CDAB 14 17 15] [BCDA 15 22 16] // 2- raund // yozuv [abcd k s i] quyidagini anglatadi // a = b + ((a + G(b, c, d) + X[k] + T[i]) <<<s) // 16 ta operatsiya bajariladi: [ABCD 1 5 17] [DABC 6 9 18] [CDAB 11 14 19] [BCDA 0 20 20] [ABCD 5 5 21] [DABC 10 9 22] [CDAB 15 14 23] [BCDA 4 20 24] [ABCD 9 5 25] [DABC 14 9 26] [CDAB 3 14 27] [BCDA 8 20 28] [ABCD 13 5 29] [DABC 2 9 30] [CDAB 7 14 31] [BCDA 12 20 32] // 3- raund // yozuv [abcd k s i] quyidagini anglatadi // a = b + ((a + H(b, c, d) + X[k] + T[i]) <<< s) // 16 ta operatsiya bajariladi: [ABCD 5 4 33] [DABC 8 11 34] [CDAB 11 16 35] [BCDA 14 23 36] [ABCD 1 4 37] [DABC 4 11 38] [CDAB 7 16 39] [BCDA 10 23 40] [ABCD 13 4 41] [DABC 0 11 42] [CDAB 3 16 43] [BCDA 6 23 44] [ABCD 9 4 45] [DABC 12 11 46] [CDAB 15 16 47] [BCDA 2 23 48] // 4-raund // yozuv [abcd k s i] quyidagini anglatadi // a = b + ((a + I(b, c, d) + X[k] + T[i]) <<< s) // 16 ta operatsiya bajariladi: [ABCD 0 6 49] [DABC 7 10 50] [CDAB 14 15 51] [BCDA 5 21 52] [ABCD 12 6 53] [DABC 3 10 54] [CDAB 10 15 55] [BCDA 1 21 56] [ABCD 8 6 57] [DABC 15 10 58] [CDAB 6 15 59] [BCDA 13 21 60] [ABCD 4 6 61] [DABC 11 10 62] [CDAB 2 15 63] [BCDA 9 21 64] A = AA + A B = BB + B C = CC + C D = DD + D } 4-qadam: MD5 natijasi chop etiladi. Ushbu natija ABCD buferida saqlanadi, faqatgina teskari chiqarish talab etiladi, ya’ni md5hash=DCBA. MD5 algoritmiga asoslangan on-line kalkulyatorlar quyidagi veb-saytlarda keltirilgan: http://crypt-online.ru/crypts/md5/ http://sitespy.ru/md5/ https://pr-cy.ru/md5/ Ushbu jarayonga quyidagi misollarni keltirish mumkin: 1)MD5("md5") = 1bc29b36f623ba82aaf6724fd3b16718 2) Bitta bitga farq qiladigan natijalarga e’tibor bering: MD5(abc) = 900150983CD24FB0D6963F7D28E17F72 MD5(acc) = 1673448EE7064C989D02579C534F6B66 3. Qisqartirilgan MD5 algoritmini amaliy qo‘llashga misol Yuqorida keltirilgan jarayonni aniq misolda ko‘rib chiqamiz va quyidagi ‘Ota’ qatorini kirish ma’lumotlari sifatida olamiz. ASCII jadvali asosida str=‘Ota’ qatorni ikkilik sanoq tizimida 0100111101110100011000012 va o‘n oltilik sanoq tizimidagi shaklida yozamiz, ya’ni str= 4f 74 61. Umuman, keyingi yozuvlarni ixcham yozish uchun o‘n oltilik sanoq tizimidan foydalanamiz, ammo hisoblashlar bitlar bilan amalga oshiriladi. Ushbu xabarning uzunligi Length = 24 ga teng. Ushbu sonni ikkilik sanoq tizimiga o‘tkazamiz, Length2= 110002. Ushbu bitlarni 64 gacha uzaytiramiz (ixcham shakli-000000000000001816): 0000000000000000000000000000000000000000000000000000000000011000 Birinchi va ikkinchi so‘zlarni o‘rni bilan almashtiramiz va Length-1 deb belgilaymiz: 0000000000000000000000000001100000000000000000000000000000000000 Endi dasturda qayta ishlanadigan 512 bitdan iborat M[] massivini shakllantiramiz va shu bilan X[] massivini aniqlaymiz, ya’ni str & 10…0 & Length-1 : X X[0] = X[1] = M[] 01001111011101000110000110000000 00000000000000000000000000000000 X[2] = X[3] = X[4] = X[5] = X[6] = X[7] = X[8] = X[9] = X[10] = X[11] = X[12] = X[13] = X[14] = X[15] = 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000011000 00000000000000000000000000000000 A, B, C, D qiymatlarini ikkilik tizimida yozamiz, bunda kalkulyatorning dasturlovchi (1-rasm) bandidan foydalanish mumkin: AA = A = 0x67452301 = 01100111010001010010001100000001 BB = B = 0xEFCDAB89 = 11101111110011011010101110001001 CC = C = 0x98BADCFE = 10011000101110101101110011111110 DD = D = 0x10325476 = 00010000001100100101010001110110 1-rasm. Kalkulyator Hisoblashlarda zarur bo‘lgan T[i] massiv elementlarini MS Excel dasturidan foydalanib aniqlaymiz: I 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 T[i] 3614090360 3905402710 606105819 3250441966 4118548399 1200080426 2821735955 4249261313 1770035416 2336552879 4294925233 2304563134 1804603682 4254626195 2792965006 1236535329 i 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 T[i] 4129170786 3225465664 643717713 3921069994 3593408605 38016083 3634488961 3889429448 568446438 3275163606 4107603335 1163531501 2850285829 4243563512 1735328473 2368359562 i 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 T[i] 4294588738 2272392833 1839030562 4259657740 2763975236 1272893353 4139469664 3200236656 681279174 3936430074 3572445317 76029189 3654602809 3873151461 530742520 3299628645 i 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 T[i] 4096336452 1126891415 2878612391 4237533241 1700485571 2399980690 4293915773 2240044497 1873313359 4264355552 2734768916 1309151649 4149444226 3174756917 718787259 3951481745 Endi 1-raundda keltirilgan hisoblashlarni bajaramiz va faqatgina birinchi qatoriga to‘xtalamiz. Yuqorida e’tirof etilganidek, [abcd k s i] yozuvi quyidagini anglatadi: a = b + ((a + F(b, c, d) + X[k] + T[i]) <<< s) (1*) Algoritmda mavjud 16 ta operatsiyadan faqatgina bittasini bajaramiz, ya’ni [ABCD 0 7 1] Yuqoridagi (1*) formula bo‘yicha [ABCD 0 7 1] yozuvi quyidagi ko‘rinishga ega bo‘ladi: a = b + ((a + F(b, c, d) + X[0] + T[3]) <<< 17) (1**) Bu yerdagi F(b, c, d) funksiya qiymatini F, G, H, I funksiyalari uchun haqiqiylik jadvaliga asoslanib hisoblaymiz: Jarayon B C D F(b, c, d) Qiymat 11101111110011011010101110001001 11101111110011011010101110001001 00010000001100100101010001110110 11111111111111111111111111111111 Ushbu (1**) formula bo‘yicha hisoblashni jadval orqali amalga oshiramiz va qavsdan boshlaymiz: Jarayon Qiymat A 01100111010001010010001100000001 F(b, c, d) 11111111111111111111111111111111 X[0] 01001111011101000110000110000000 T[3] 00100100001000000111000011011011 a+F(b,c,d)+X[0]+T[3] 11110011111011101100110010110101 (a+F(b,c,d)+X[0]+T[3])<<<17 01100110010110101111100111110111 B 11101111110011011010101110001001 b+((a+F(b,c,d)+X[0]+T[3])<<<17) 10001001100101110101001001111110 Izoh. 1) T[3]= 606105819 soni ikkilik sanoq tizimiga o‘tkazilgan (1-rasm). 2) Qo‘shish amali Xor orqali amalga oshiriladi. Demak, A = 10001001100101110101001001111110 ga teng bo‘ladi. Endi 2-raundda keltirilgan hisoblashlarni bajaramiz va faqatgina birinchi qatoriga to‘xtalamiz. Yuqorida e’tirof etilganidek, [abcd k s i] yozuvi quyidagini anglatadi: a = b + ((a + G(b, c, d) + X[k] + T[i]) <<< s) (2*) Algoritmda mavjud 16 ta operatsiyadan faqatgina bittasini bajaramiz, ya’ni [DABC 6 9 18]. Yuqoridagi (2*) formula bo‘yicha [DABC 6 9 18] yozuvi quyidagi ko‘rinishga ega bo‘ladi: d = a + ((d + G(a, b, c) + X[6] + T[18]) <<< 9) (2**) Bu yerdagi G(a, b, c) funksiya qiymatini F, G, H, I funksiyalari uchun haqiqiylik jadvaliga asoslanib hisoblaymiz: Jarayon A B C G(a, b, c) Qiymat 10001001100101110101001001111110 11101111110011011010101110001001 11101111110011011010101110001001 10001001100001010000001000001000 Ushbu (2**) formula bo‘yicha hisoblashni jadval orqali amalga oshiramiz va qavsdan boshlaymiz: Jarayon Qiymat D 00010000001100100101010001110110 G(a, b, c) 10001001100001010000001000001000 X[6] 00000000000000000000000000000000 T[18] 00010011001110011010101110000110 d +G(a, b, c)+X[6]+T[18] 10001010100011101111110111111000 (d+G(a, b, c)+X[6]+T[18]) <<< 9 11111100010001010100011101111110 A 10001001100101110101001001111110 a+((d+G(a,b,c)+X[6]+T[18])<<<9) 01110101110100100001010100000000 Izoh. 1) T[18]= 3225465664 soni ikkilik sanoq tizimiga o‘tkazilgan. 2) Qo‘shish amali Xor orqali amalga oshiriladi. Demak, D = 01110101110100100001010100000000 ga teng bo‘ladi. Keyingi 3-raundda o‘tamiz va unda keltirilgan hisoblashlarni bajaramiz. Bunda faqatgina birinchi qatorga to‘xtalamiz. Yuqorida e’tirof etilganidek, [abcd k s i] yozuvi quyidagini anglatadi: a = b + ((a + H(b, c, d) + X[k] + T[i]) <<< s) (3*) Algoritmda mavjud 16 ta operatsiyadan faqatgina bittasini bajaramiz, ya’ni [CDAB 11 16 35]. Yuqoridagi (3*) formula bo‘yicha [CDAB 11 16 35] yozuvi quyidagi ko‘rinishga ega bo‘ladi: c = d + ((c + H(d, a, b) + X[11] + T[35]) <<< 16) (3**) Bu yerdagi H(d, a, b) funksiya qiymatini F, G, H, I funksiyalari uchun haqiqiylik jadvaliga asoslanib hisoblaymiz: Jarayon D A B H(d, a, b) Qiymat 01110101110100100001010100000000 10001001100101110101001001111110 11101111110011011010101110001001 00010011101010001110110011110111 Ushbu (3**) formula bo‘yicha hisoblashni jadval orqali amalga oshiramiz va qavsdan boshlaymiz: Jarayon Qiymat C 11101111110011011010101110001001 H(d, a, b) 00010011101010001110110011110111 X[11] 00000000000000000000000000000000 T[35] 01101101100111010110000100100010 c + H(d, a, b) + X[11] + T[35] 10010001111111000010011001011100 (c+H(d,a,b)+X[11]+T[35])<<<16 00100110010111001001000111111100 D 01110101110100100001010100000000 d+((c+H(d,a,b)+X[11]+T[35])<<<16) 01010011100011101000010011111100 Izoh. 1) T[35]= 1839030562 soni ikkilik sanoq tizimiga o‘tkazilgan. 2) Qo‘shish amali Xor orqali amalga oshiriladi. Demak, C = 01010011100011101000010011111100 ga teng bo‘ladi. Endi 4-raundda keltirilgan hisoblashlarni bajaramiz va faqatgina birinchi qatoriga to‘xtalamiz. Yuqorida e’tirof etilganidek, [abcd k s i] yozuvi quyidagini anglatadi: a = b + ((a + I(b, c, d) + X[k] + T[i]) <<< s) (4*) Algoritmda mavjud 16 ta operatsiyadan faqatgina bittasini bajaramiz, ya’ni [BCDA 5 21 52]. Yuqoridagi (4*) formula bo‘yicha [BCDA 5 21 52] yozuvi quyidagi ko‘rinishga ega bo‘ladi: b = c + ((b + I(c, d, a) + X[5] + T[52]) <<< 21) (4**) Bu yerdagi I(c, d, a) funksiya qiymatini F, G, H, I funksiyalari uchun haqiqiylik jadvaliga asoslanib hisoblaymiz: Jarayon C D A I(c, d, a) Qiymat 01010011100011101000010011111100 01110101110100100001010100000000 10001001100101110101001001111110 00000010001111001011100011111101 Ushbu (4**) formula bo‘yicha hisoblashni jadval orqali amalga oshiramiz va qavsdan boshlaymiz: Jarayon B I(c, d, a) X[5] T[52] b + I(c, d, a) + X[5] + T[52] (b + I(c, d, a)+X[5]+ T[52])<<<21 C c+((b+I(c,d,a)+X[5]+T[52])<<<21) Qiymat 11101111110011011010101110001001 00000010001111001011100011111101 00000000000000000000000000000000 11111100100100111010000000111001 00010001011000101011001101001101 00010101100110100110100010001011 01010011100011101000010011111100 01000110000101001110110001110111 Izoh. 1) T[52]= 4237533241 soni ikkilik sanoq tizimiga o‘tkazilgan. 2) Qo‘shish amali Xor orqali amalga oshiriladi. Demak, B = 01000110000101001110110001110111 ga teng bo‘ladi. Shunday qilib, quyidagilarni hisoblash qoldi: A = AA + A B = BB + B C = CC + C D = DD + D Jarayonni jadval shaklida bajaramiz: Jarayon Qiymat AA A A=AA+A BB B B=BB+B CC C C = CC + C DD D D = DD + D 01100111010001010010001100000001 10001001100101110101001001111110 11101110110100100111000101111111 11101111110011011010101110001001 01000110000101001110110001110111 10101001110110010100011111111110 10011000101110101101110011111110 01010011100011101000010011111100 11001011001101000101100000000010 00010000001100100101010001110110 01110101110100100001010100000000 01100101111000000100000101111110 a,b,c,d 16 lik tizimda EED2717F A9D947FE CB345802 65E0417E Ushbu natijaviy ABCD qiymatlarini teskari chiqarish orqali xesh-kod aniqlanadi: md5hash = DCBA = 65E0417ECB345802A9D947FEEED2717F. E’tibor bering, hisoblashlarda hattoki bitta bitda adashish barcha natijalarini chalkashtirib yuboradi. 4. SHA xeshlash algoritmi SHA algoritmi (Secure Hash Algorithm – xavfsiz xesh algoritmi) AQSh davlatining milliy standartlar va texnologiyalar instituti (NIST) tomonidan ishlab chiqilgan va 1993-yilda e’lon qilingan. SHA-1 algoritmining asosini MD4 tashkil qiladi. Algoritm SHA-1 natijasi 160 bitli xesh-kod bo‘lib, 512 bitli bloklarni qayta ishlashga asoslangan. SHA-1 algoritmi MD5 algoritmiga nisbatan 32 bitga uzunroq xesh-kod yaratadi. SHA-1 algoritmi kriptomustahkam hisoblanadi. 2001-yilda AQSh davlatida 3 ta standart qabul qilindi. Bular SHA-2 yoki SHA256, SHA-384 va SHA-512 (bu yerdagi sonlar xesh-kod uzunligini bildiradi). Ushbu algoritmlar bloklar uzunligi bilan ham farq qiladi. SHA algoritmda kirnvchi ma’lumotning uzunligi 2 64 bitdan kichik bo‘lib, xesh qiymat uzunligi 160 bit bo‘ladi. Kiritilayotgan ma’lumot 512 bitlik bloklarga ajratilib qayta ishlanadi. Xesh qiymatni hisoblash jarayoni quyidagi bosqichlardan iborat: 1-bosqich. To‘ldiruvchi bitlarini qo‘shish. Berilgan ma’lumot uzunligi 512 modul bo‘yicha 448 bilan taqqoslanadigan (ma’lumot uzunligi 448 mod 512) qilib to‘ldiriladi. To‘ldirish hamma vaqt, hattoki ma’lumot uzunligi 512 modul bo‘yicha 448 bilan taqqoslanadigan bo‘lsa ham bajariladi. To‘ldirish quyidagi tartibda amalga oshiriladi: ma’lumotga 1 ga teng bo‘lgan bitta bit qo‘shiladi, qolgan bitlar esa 0 lar bilan to‘ldiriladi. Shuning uchun qo‘shilgan bitlar soni 1 dan 512 tagacha bo‘ladi. 2-bosqich. Ma ’lumotning uzunligini qo ‘shish. 1-bosqichning natijasiga berilgan ma’lumot uzunligining 64 bitlik qiymati qo‘shiladi. 3-bosqich. Xesh qiymat uchun bufer initsializatsiya qilish. Xesh funksiyaning oraliq va oxirgi natijalarini saqlash uchun 160 bitlik buferdan foydalaniladi. Bu buferni beshta 32 bitlik A, B, C, D, E registrlar ko‘rinishida tasvirlash mumkin. Bu registrlarga 16 lik sanoq sistemasida quyidagi boshlang‘ich qiymatlar beriladi: A=0x67452301, B=0xEFCDAB89, C=0x98BADCFE, D=0x10325476, E=0xC3D2E1F0. Keyinchalik bu o‘zgaruvchilar mos ravishda yangi a, b, c, d va e o‘zgaruvchilarga yozib olinadi. 4-bosqich. Ma’lumotni 512 bitlik bloklarga ajratib qayta ishlash. Bu xesh funksiyaning asosiy sikli quyidagicha bo‘ladi: for (t = 0; t < 80; t++) { temp = (a <<< 5) + ft(b, c, d) + e + Wt + Kt ; e = d; d = c; c = b <<< 30; b = a; a = temp; } Bu yerda <<< belgisi chapga siklik surish amali. Kt lar 16 lik sanoq sistemasida yozilgan quyidagi sonlardan iborat: 5A827999, agar t=0,…,19 6ED9EBA1, agar t=20,…,39 Kt = 8F1BBCDC, agar t=40,…,59 CA62C1D6, agar t=60,…,79 ft(x, y, z) funksiyalar esa quyidagi ifodalar bilan aniqlanadi: (x ˄ y) ˅ (¬x ˄ z), agar t=0,…,19 ft(x, y, z) = x ⊕ y ⊕ z, agar t=20,…,39, 60,…,79 (x ˄ y) ˅ (x ˄ z) ˅ (y ˄ z) , agar t=40,…,59 Wt lar kengaytirilgan ma’lumotning 512 bitlik blokining 32 bitlik qism bloklaridan quyidagi qoida bo‘yicha hosil qilinadi: Wt = Mt, agar t=0,…,15, (Wt-3 ⊕ Wt-8 ⊕ Wt-14 ⊕ Wt-16) <<< 1, agar t=16,…,79. Asosiy sikl tugagandan keyin a, b, c, d va e laming qiymatlari mos ravishda A, B, C, D va E registrlardagi qiymatlarga qo‘shiladi hamda shu registrlarga yozib qo‘yiladi va kengaytirilgan ma’lumotning keyingi 512 bitlik blokini qayta ishlashga o‘tiladi. 5-bosqich. Natija. Ma’lumotning xesh qiymati A, B, C, D va E registrlardagi qiymatlarni birlashtirish natijasida hosil qilinadi. Amaliy mashg‘ulot Mavzu: OpenSSL kutubxonasidan foydalangan holda ma’lumotlarni xesh qiymatini hisoblash. Ishdan maqsad: Xesh-funksiyalarni o‘rganish orqali har xil shakldagi xeshkodlarni tashkil qilish jarayonlarini o‘rganish: 1) MD5 algoritmini o‘rganish va bloklarda qo‘llaaniladigan funksiyalarni tushunib olish; 2) Qisqartirilgan MD5 algoritmi bo‘yicha hisob ishlarini bajarishni o‘rganish; 3) SHA algoritmini tushunib olish; 4)Bajarilgan ishlar asosida hisobotni shakllantirishni o‘rganish. 5) OpenSSL kutubxonasidan foydalangan holda MD5 algoritmini qo‘llash buyruqlarini o‘rganish. Amaliy qism OpenSSL buyruqlaridan foydalanish uchun OpenSSL kutubxonasini cmd buyruqlar satriga bog‘lash zarur bo‘ladi. Birinchi OpenSLL kutubxonasi fayllari jamlanmasini ko‘chirib olamiz va “Поиск в Windows” da “Переменные среды” ko‘rinishida izlaymiz va “Переменные среды” oynasiga o‘tamiz. U oynada “Изменитъ” buyrug‘i orqali OpenSSL kutubxonasi fayllari jamlanmasi yo‘li ko‘rsatiladi. 1-rasm. OpenSSL kutubxonasini cmd buyrug‘i bilan bog‘lash OpenSSL kutubxonasidan foydalanish uchun cmd buyrug‘idan foydalaniladi (Windows va R birgalikda bosiladi): 2-rasm. Cmd buyrug’ini ishga tushirish Cmd buyruqlar satriga OpenSSL buyrug‘i kiritiladi. Bunda OpenSSL buyruqlar satriga o‘tiladi. “OpenSSL version” buyrug‘ini kiritish orqali OpenSSL versiyasini bilish mumkin. OpenSSL buyruqlarini ko‘rish uchun esa “help” buyrug‘ini kiritish mumkin. 3-rasm. OpenSSL buyrug‘ini ishga tushirish Cmd buyruqlar satri rangini ham o‘zgartirish mumkin. Cmd buyruqlar satri “Свойтсва” siga kirilib “Цвета” bo‘limidan o‘zgartiriladi: 4-rasm. Cmd buyruqlar satri rangini o‘zgartirish Shundan sung cmd oynasidagi joriy yorlig‘i(papkasi)dan chiqish uchun cd.. buyrug‘idan foydalaniladi: 5-rasm. cd.. buyrug‘idan foydalanish OpenSSL kutubxonasi uchun foydalananiladigan openssl_shifrlash papkasida quyidagi buyruq orqali ochiq ma’lumotni hosil qilib olamiz: 6-rasm. Ochiq ma’lumotni yaratish Openssl_shifrlash papkasida hosil bo‘lgan shifr.txt fayli: 7-rasm. Ochiq ma’lumot OpenSSL kutubxonasini aktiv holatga o‘tkazishimiz uchun quydagi buyruqdan foydalanamiz: 8-rasm. OpenSSLni aktiv holati Help buyrug‘i orqali kerakli bo‘lgan shifrlash algoritmlarini va ulardan foydalanish tartibini ko‘rish mumkin bo‘ladi: 9-rasm. OpenSSLda help buyrug‘i Ochiq ma’lumotni shifrlash uchun AES shifrlash algoritmidan foydalanish aes-256-cbc -e -in shifr.txt -out shifrlangan.txt.enc buyrug‘i orqali amalga oshiriladi. Bu yerda –e = encryption(shifrlash), -in = faylni nomi va formati, -out = shifr fayl. Shiflash davomida parol qo‘yish talab etiladi va ko‘rinmagan holda kiritamiz: 10-rasm. OpenSSLda ma’lumotni shifrlash Shifrlangan ma’lumotni ko‘rish quydagicha: 11-rasm. AES-256 algoritmida shifrlash Shifr ma’lumotni deshifrlash uchun aes-256-cbc -d -in shifrlangan.txt.enc -out shifr.txt.dec buyrug‘i orqali amalga oshiriladi. Bu yerda -d = decryption (deshifrlash), -in = faylni nomi va formati, -out = ochiq matn fayl. Deshiflash davomida parolga biz tanlagan parolni kiritamiz: 12-rasm. AES-256 algoritmida deshifrlash Amaliy mashg‘ulot ishini bajarish tartibi 1. Nazariy ma’lumotlar bilan tarnishing. 2. Kompyuterni ishga tushiring. 3. Topshiriqlar ro‘yxatidan variantni tanlang. 4. Eng oddiy xesh-funksiya bilan ishlash. 5. MD5 algoritmi bilan tanishing. 6. Qisqartirilgan MD5 algoritmi asosida hisoblarni amalga ohsiring. 7. Internetga kiring. 8. MD5 kalkulyatorlari bilan tarnishing. 9. SHA kalkulyatorlari bilan tarnishing. 10.Xesh-funksiyalarni amaliy dasturlarini tuzing. 11.Asosiy matn shifrlash usullaridan birida shifrlansin va qadamma – qadam izohlansin. Shuningdek OpenSSL kutibxonasidan foydalangan holda shifrlash va deshifrlash amalga oshirilsin. 12.Bajarilgan ishlar bo‘yicha hisobotlarni tayyorlang. 13.Hisobotni himoyaga tayyorlang. 14.Ishni tugating. Hisobotni rasmiylashtirish tartibi 1. Akademik jurnal bo‘yicha variant tanlansin. 2. Hisobotning matn qismi standart o‘lchamdagi varaqlarga (A4 hajmida 210-297 mm) 1,5 intervalda Times New Roman 14 shriftida yozilishi lozim. Fayl formati MS Office 2003 bo‘lsin. 3. Hisobotdagi jadvallar va rasmlar tartib bilan raqamlashtirilsin va nomlansin. 4. Matnda rasm va jadvalga izoh berilishi kerak. 5. Matn rasm va jadval bilan boshlanmasin. 6. Matn qismi titul varaqasi bilan boshlanadi va betlar ketma-ket sonlar bilan raqamlashtiriladi. 7. Hisobot o‘qituvchining elekton manziliga «Kriptografiya I –№-AX 1-lab» mavzusi bilan jo‘natilsin. 8. Hisobot yakuniy nazoratdan 5 kun oldin jo‘natilishi kerak. 9. O‘z vaqtida taqdim etilmagan hisobot baholanmaydi. Amaliy mashg‘ulotlari uchun variantlar 1-topshiriq Eng oddiy xesh-funksiya orqali, ASCII jadvalidan foydalanib, berilgan belgilar qatorining 8 bitli xesh-kodini aniqlang. Variantlar № 1 2 3 4 5 6 7 8 9 10 № DASTUR 11 SINF 12 QORA 13 VOSITA 14 TAQINCHOQ 15 INSTITUT 16 UNIVER 17 JAMLANMA 18 AXBOROT 19 BUTUN 20 Qator Qator XONA TEST SAHIFA TARMOQ SAHIFA ASKAR RAQAM TIZIM STEGO BETLAR № 21 22 23 24 25 26 27 28 29 30 № BILIMLAR 31 DIREKTOR 32 TIZIMLAR 33 QIZIQCHI 34 RAQAMLAR 35 SHAFTOLI 36 APPARAT 37 AYIRMA 38 MATN 39 QATOR 40 Qator Qator AYIRMASI BOSHQAR MUHARRIR TESTLASH TARMOQLI SAHIFASI ASKARLAR BILIM KODLAR KRIPTO 2-topshiriq Oldingi 1-topshiriqda bajarilgan algoritm asosida eng oddiy xesh-funksiya dasturini tuzing va olingan natijalarni taqqoslang. 3-topshiriq Qisqartirilgan MD5 algoritmidan foydalanib xesh-funksiya qiymatini aniqlang. Belgilarni kodlashda ASCII jadvalini qo‘llang. Variantlar № 1 2 3 4 5 6 7 8 9 10 Qator Kompyuter Maxfiy Shifrlash Sinfdosh Axborotnoma Virus Antivirus Windows Photoshop Microsoft № 11 12 13 14 15 16 17 18 19 20 Qator Adobe Opera Internet Monitor Printer Skaner Tarmoq Auditoriya Sinfxona Daftar № 21 22 23 24 25 26 27 28 29 30 Qator Kitob Jadval Vektor Matritsa Muammo Fizika Matematika Biologiya Adabiyot Nashriyot № 31 32 33 34 35 36 37 38 39 40 Qator Dasturlash Python Kitobxon Pascal Samarqand Toshkent Baxmal Buxoro Guliston Andijon 4-topshiriq Oldingi 3-topshiriqda bajarilgan algoritm asosida qisqartirilgan MD5 algoritmi asosida dastur tuzing va natijalarni taqqoslan. Foydalanilgan adabiyotlar 1. O‘z DSt 1106:2009. Ўзбекистон Давлат стандарти. Ахборот технологияси. Ахборот криптографик муҳофазаси. Хэшлаш функцияси. Тошкент. 2. O‘z DSt 1109:2013. Ўзбекистон Давлат стандарти. Ахборот технологияси. Ахборот криптографик муҳофазаси. Атамалар ва таърифлар. Тошкент. 3. Бабаш А.В., Шанкин Г.П. Криптография / Под ред. В.П. Шерстюка, Э.А. Применко. - М.: СОЛОН-3, 2002. - 512 с. 4. Иванов М.А. Криптографические методы защиты информации в компь- ютерных системах и сетях. - М.: КУДИЦ-ОБРАЗ, 2001. - 368 с. 5. Введение в криптографию / Под общ. ред. В.В. Ященко. 2-е изд., испр. - М.: МЦНМО «ЧеРо», 1999. 6. Menezes A.J., Van Oorschot P., Vanstone S. Handbook of Applied Cryptog- raphy. - N.Y.: CRC Press, 1996. - 780 p. 7. Саломатин С.Б. Защита информации: Метод, пособие к лаб. работе «Криптоанализ алгоритмов защиты информации». - Мн.: БГУИР, 2003. - 20 с. 8. О. Н. Жданов, И. А. Куденкова. Криптоанализ классических шифров. Метод, пособие. Красноярск 2008.-107 с. 9. Худойқулов З.Т. Криптография усуллари фанидан услубий кўрсатма. – Тошкент : ТАТУ. 2016. – 112 б. 1-ilova. ASCII jadvali 1-qismi 2-qismi 2-ilova.Sanoq tizimlari O‘nlik 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Sakkizlik 0 1 2 3 4 5 6 7 10 11 12 13 14 15 16 17 Ikkilik 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 O’n oltilik 0 1 2 3 4 5 6 7 8 9 A B C D E F 3-ilova. Mantiqiy amallarni yagona jadvali A B A OR B A AND B A XOR B NOT A 0 0 0 0 0 1 1 0 1 0 1 0 0 1 1 0 1 1 1 1 1 1 0 0