Xesh funktsiyasi nima? Kriptografik xesh funktsiyalari
Download 172.55 Kb.
|
Xesh funktsiyasi nima. Kriptografik xesh funktsiyalari
Shakl 14.4. Ikki n dan kam tub sonlarning jadvali, stolning o'lchami bosh bo'lishi uchun zarur bo'lganda, hash stolni dinamik ravishda tarqatish uchun ishlatilishi mumkin. Berilgan diapazondagi har qanday ijobiy qiymat uchun ushbu jadvaldan undan 2 martaga kam farq qiluvchi ko'payishni aniqlash uchun foydalanish mumkin. Butun sonli tugmachalarni qayta ishlashning yana bir varianti multiplikativ va modulli usullarni birlashtirishdir: siz kalitni 0 va 1 oralig'idagi doimiyga ko'paytirishingiz kerak, keyin M. bo'linish modulini bajaring. Boshqacha aytganda, siz funktsiyadan foydalanishingiz kerak. Nazariy jihatdan g'ayritabiiy xatti-harakatlarga olib kelishi mumkin bo'lgan qadriyatlar, M va kalitlarni raqamlash tizimining samarali bazasi o'rtasida bog'liqlik mavjud, ammo agar siz a-ning ixtiyoriy qiymatidan foydalansangiz, haqiqiy dasturda har qanday muammo bo'lmaydi. Ko'pincha f \u003d 0.618033 ... (oltin nisbat) ning qiymati a sifatida tanlanadi. Ushbu mavzudagi boshqa ko'plab o'zgarishlar o'rganildi, xususan, siljitish va niqobni tanlash kabi samarali mashina ko'rsatmalaridan foydalanib bajarilishi mumkin bo'lgan hash funktsiyalari (bog'lanishlar bo'limiga qarang). Belgilar jadvalidan foydalanadigan ko'plab dasturlarda kalitlar raqam emas va ular qisqa bo'lishi shart emas; tez-tez bu juda uzun bo'lishi mumkin bo'lgan alfanumerik raqamlardir. Averylongkey kabi so'z uchun hash funktsiyasini qanday hisoblash mumkin? 7 bitli ASCII kodida bu so'z 84 bitli raqamga to'g'ri keladi \\ boshlash (tekislang *) 97 \\ cdot 128 ^ (11) va + 118 \\ cdot 128 ^ (10) + 101 \\ cdot 128 ^ (9) + 114 \\ ^ (3) \\\\ & + 107 \\ cdot 128 ^ (2) + 101 \\ cdot 128 ^ (1) + 121 \\ cdot 128 ^ (0), \\ end (tekislang *), ko'pgina kompyuterlar bilan odatiy arifmetik funktsiyalarni bajarish uchun juda katta. Va ko'pincha siz uzoqroq tugmachalarni qayta ishlashingiz kerak. Uzoq tugmachalar uchun modulli hash funktsiyasini hisoblash uchun ular qismlarga bo'laklarga aylantiriladi. Modul funktsiyasining arifmetik xususiyatlaridan foydalanishingiz va Horner algoritmidan foydalanishingiz mumkin (4.9 "Mavhum ma'lumot turlari" bo'limiga qarang). Ushbu usul tugmachalarga mos keladigan raqamlarni yozishning boshqa usuliga asoslangan. Ko'rib chiqilayotgan misol uchun biz quyidagi ifodani yozamiz: \\ boshlamoq (tekislang *) (((((((((((((((97) cdot 128 ^ (11)) 128) (+) 118) \\ cdot 128 ^ (10) + 101)) 9) + 114) \\ cdot 128 ^ (8) + 121) \\ cdot 128 ^ (7) \\\\ & + 108) \\ cdot 128 ^ (6) + 111) \\ cdot 128 ^ (5) + 110) \\ cdot 128 ^ (4) + 103) \\ cdot 128 ^ (3) \\\\ & + 107) \\ cdot 128 ^ (2) + 101) \\ cdot 128 ^ (1) + 121. \\ end (tekislang *) Ya'ni, satrni belgilar kodlashiga mos keladigan o'nlik raqamni chapdan o'ngga qarab ko'rib chiqishda, to'plangan qiymatni 128 ga ko'paytirganda va keyingi belgining kod qiymatini qo'shganda hisoblash mumkin. Uzun simli holatda bu hisoblash usuli oxir-oqibat umuman kompyuterda namoyish etilishi mumkin bo'lganidan kattaroq songa olib keladi. Ammo bu raqam kerak emas, chunki uning M.ga bo'linishidan faqat kichik (kichik) qismi talab qilinadi.Natijani katta to'plangan qiymatni saqlamasdan olish mumkin, chunki hisoblash paytida istalgan vaqtda, siz M ga ko'paygan sonni tashlab yuborishingiz mumkin - har safar ko'paytirsangiz va qo'shsangiz, siz M. bo'linish modulining faqat qolgan qismini saqlashingiz kerak bo'ladi, natijada biz uzoq raqamni hisoblash va keyin bo'linishni amalga oshirish imkoniga ega bo'lgandek bo'lamiz (qarang). mashq 14.10). Ushbu kuzatish uzun simlar uchun modulli xesh funktsiyalarini hisoblash uchun to'g'ridan-to'g'ri arifmetik usulga olib keladi - 14.1 dasturiga qarang. Ushbu dasturda yana bitta, oxirgi hiyla qo'llaniladi: baza 128 o'rniga, u 127 raqamini ishlatadi. Ushbu o'zgarish sababi keyingi paragrafda muhokama qilinadi. Horner (Horner) usuli yordamida modulli xeshlash bilan bir xil narxda xesh funktsiyalarini hisoblashning ko'p usullari mavjud (har bir belgi uchun bitta yoki ikkita arifmetik amallar). Tasodifiy kalitlar uchun ushbu usullar deyarli bir-biridan farq qilmaydi, ammo haqiqiy kalitlar kamdan-kam hollarda tasodifiydir. Kichkina narxga haqiqiy kalitlarni tasodifiy ko'rish qobiliyati tasodifiy xeshlash algoritmlarini ko'rib chiqishga olib keladi, chunki biz kalitlarning taqsimlanishidan qat'i nazar, tasodifiy jadval indekslarini yaratadigan hash funktsiyalariga muhtojmiz. Tasodifiylashtirishni tashkil qilish qiyin emas, chunki modulli hashing ta'rifiga so'zma-so'z rioya qilish shart emas - faqat M dan kichik bo'lmagan butun sonni hisoblashda kalitning barcha raqamlari ishlatilishi kerak. M \u003d 96 va a \u003d 128 (yuqorida), M \u003d 97 va a \u003d 128 (markazda) va M \u003d 96 va a \u003d 127 (pastki) Birinchi holda notekis taqsimlash bu harflarning notekis ishlatilishi va jadvalning kattaligi ham, omil ham 32 ga ko'payganligi sababli notekislikni saqlashning natijasidir. Boshqa ikkita misol tasodifiy ko'rinadi, chunki stol kattaligi va omil - bu nusxa raqamlari. 14.1-dastur buni amalga oshirishning bitta usulini ko'rsatadi: 2-quvvat o'rniga oddiy bazadan va ASCII-ning mag'lubiyatiga mos keladigan butun sondan foydalanish. Shaklda 14.5 rasm. 14.5-rasmda ushbu o'zgarish odatiy simli tugmalar uchun taqsimlashni qanday yaxshilaganligi ko'rsatilgan. Nazariy jihatdan, 14.1 dasturi tomonidan yaratilgan xash qiymatlari jadval jadvallari uchun 127 ga teng bo'lgan yomon natijalar berishi mumkin (garchi amalda bu deyarli ko'rinmas bo'lishi mumkin); Tasodifiy algoritmni yaratish uchun multiplikatorning qiymatini tasodifiy tanlash mumkin. Keyinchalik samaraliroq usul - bu hisoblashda koeffitsientlarning tasodifiy qiymatlari va kalitning har bir raqami uchun turli xil tasodifiy qiymatlardan foydalanish. Ushbu yondashuv universal hashing deb nomlangan tasodifiy algoritmni taqdim etadi. Nazariy jihatdan ideal universal hash funktsiyasi - bu M o'lchamidagi jadvalda ikkita turli xil kalitlarning to'qnashuvi ehtimoli to'liq 1 / M bo'lgan funktsiya. 14.1 dasturida a koeffitsienti sifatida foydalanish qat'iy belgilangan qiymat emas, balki tasodifiy turli xil qiymatlar ketma-ketligi modulli xeshni universal xesh funktsiyasiga o'zgartirishi isbotlanishi mumkin. Biroq, kalitdagi har bir belgi uchun yangi tasodifiy raqamni yaratish qiymati odatda qabul qilinishi mumkin emas. Amalda, 14.1 dasturida ko'rsatilgan murosaga har bir kalit belgisi uchun turli xil tasodifiy raqamlar qatorini saqlash bilan emas, balki oddiy soxta tasodifiy tartib yaratish orqali koeffitsientlarni o'zgartirish orqali erishish mumkin. Xulosa qilish uchun: mavhum belgilar jadvalini amalga oshirish uchun xeshdan foydalanish uchun avval siz M-jadval jadvalidan kichikroq manfiy bo'lmagan butun sonlarga kalitlarni joylashtiradigan xesh-operatsiyani kiritish uchun mavhum tipli interfeysni kengaytirish kerak. Ushbu maqolaning bir qismi sifatida sizga aytaman xesh nimanima uchun kerak, qaerda va qanday ishlatilganligi, shuningdek, eng mashhur misollar. Axborot texnologiyalari sohasidagi ko'plab vazifalar ma'lumotlar hajmi uchun juda muhimdir. Masalan, agar siz har biringiz uchun 1 KB hajmdagi ikkita faylni va bir-biringizdan 10 GB hajmdagi ikkita faylni taqqoslashingiz kerak bo'lsa, unda bu mutlaqo boshqa vaqt. Shu sababli, qisqa va sig'imli qiymatlar bilan ishlashga imkon beradigan algoritmlar juda mashhur deb hisoblanadi. Ushbu texnologiyalardan biri ko'p muammolarni hal qilishda o'zining amaliy dasturini topgan Hashing. Ammo, menimcha, oddiy foydalanuvchi sifatida u qanday hayvon ekanligi va u nimaga tegishli ekanligi hali ham aniq emas. Shuning uchun, bundan keyin hammasini sodda so'zlar bilan tushuntirishga harakat qilaman.
Xesh yoki xesh nima? Shartlardan boshlayman.
Ko'rib turganingizdek, atamalar biroz majoziy tavsifga ega, ulardan bularning barchasi nima uchun zarurligini tushunish qiyin. Shuning uchun men darhol kichik bir misol keltiraman (biroz keyinroq boshqa dasturlar haqida gaplashaman). Aytaylik, sizda 10 Gb hajmdagi 2 ta fayl mavjud. Qaysi biri to'g'ri ekanligini tezda qanday aniqlashim mumkin? Siz fayl nomidan foydalanishingiz mumkin, ammo uning nomini o'zgartirish juda oson. Siz sanalarni ko'rishingiz mumkin, lekin fayllarni nusxalashgandan so'ng, sanalar bir xil yoki boshqa ketma-ketlikda bo'lishi mumkin. O'zingiz bilganingizdek, o'lcham ozgina yordam berishi mumkin (ayniqsa, o'lchamlar mos bo'lsa yoki baytlarning aniq qiymatlariga qaramagan bo'lsangiz). Bu Hash kerak bo'lgan joy, bu faylning boshlang'ich matnidan hosil bo'lgan qisqa blok. Ushbu ikkita 10GB fayllar ikki xil, ammo qisqa Hash kodlariga ega ("ACCAC43535" va "BBB3232A42" kabi). Ulardan foydalanib, nomlarni nusxalash va o'zgartirishdan keyin ham kerakli faylni tezda topishingiz mumkin.
Hash funktsiyasining xususiyatlari Endi men Hash funktsiyalarining xususiyatlari haqida gaplashaman, shunda u qayerda ishlatilishini va Hashing nima uchun ekanligini tushunishingiz osonroq bo'ladi. Ammo birinchi navbatda, boshqa ta'rif.
Va endi Hash funktsiyalarining xususiyatlariga: 1. Har qanday o'lchamdagi matnni kirishga boqish mumkin va chiqishda ma'lum bir uzunlikdagi ma'lumotlar bloki olinadi. Bu ta'rifdan kelib chiqadi. 2. Xuddi shu matnlarning hash summasi bir xil bo'lishi kerak. Aks holda, bunday funktsiyalar shunchaki foydasiz - bu tasodifiy raqamga o'xshash. 3. Yaxshi yig'ish funktsiyasi yaxshi taqsimotga ega bo'lishi kerak. Agar chiqadigan Hash hajmi, masalan, 16 bayt bo'lsa, agar funktsiya har qanday matnlar uchun atigi 3 xil qiymatni qaytarsa, unda bunday funktsiyaning ma'nosi yo'q va bu 16 bayt (16 bayt 2 ^ 128 parametr bo'lib, bu taxminan 3 ga teng). 4 * 10 ^ 38 daraja). 4. Funksiya dastlabki matndagi ozgina o'zgarishlarga qanchalik yaxshi javob beradi. Oddiy misol. 10 GB hajmdagi faylda 1 harfni o'zgartirdik, funktsiyaning qiymati boshqacha bo'lishi kerak. Agar bunday bo'lmasa, unda bunday funktsiyani qo'llash juda muammoli. 5. To'qnashuv ehtimoli. Muayyan sharoitlarda hisoblangan juda murakkab parametr. Ammo, uning mohiyati shundan iboratki, agar hosil bo'lgan Hash miqdori ko'pincha mos kelsa, Hash funktsiyasining ma'nosi nima. 6. Hashni hisoblash tezligi. Agar hisoblash uchun ko'p vaqt kerak bo'lsa, yig'ilish funktsiyasidan foydalanish nima? Yo'q, chunki fayl ma'lumotlarini taqqoslash yoki boshqa yondashuvdan foydalanish osonroq bo'ladi. 7. Hash qiymatidan dastlabki ma'lumotlarni tiklash qiyinligi. Ushbu belgi umumiyga qaraganda o'ziga xosdir, chunki bu har doim ham talab qilinmaydi. Biroq, eng taniqli algoritmlar uchun bu xususiyat baholanadi. Masalan, dastlabki faylni bu funktsiyadan zo'rg'a olasiz. Ammo, agar to'qnashuv muammosi bo'lsa (masalan, siz bunday Hashga mos keladigan har qanday matnni topishingiz kerak), unda bu belgi muhim bo'lishi mumkin. Masalan, parollar, lekin ular haqida biroz keyinroq. 8. Bunday funktsiyaning dastlabki kodi ochiq yoki yopiq. Agar kod ochiq bo'lmasa, ma'lumotlarni qayta tiklashning murakkabligi, xususan kriptografik quvvat savol tug'iladi. Qisman, bu shifrlash bilan bog'liq muammo. Endi biz "bularning barchasi nima uchun?" Degan savolga o'tamiz. Nega sizga xesh kerak? Hash funktsiyalarining asosiy maqsadlari faqat uchta (yoki aniq maqsadlari). 1. Ma'lumotlar yaxlitligini tekshirish. Bunday holda, hamma narsa oddiy, bunday funktsiya tezda hisoblanishi kerak va tezkor ravishda tekshirishga imkon berishi kerak, masalan, uzatish paytida Internetdan yuklab olingan fayl zarar ko'rmagan. 2. Ma'lumotlarni qidirish tezligining oshishi. Ruxsat etilgan blok hajmi qidiruv muammolarini hal qilishda ko'plab afzalliklarga ega bo'lishga imkon beradi. Bu holda biz sof texnik jihatdan Hash funktsiyalaridan foydalanish ishlashga ijobiy ta'sir ko'rsatishi mumkinligi haqida gapiramiz. Bunday funktsiyalar uchun to'qnashuv ehtimoli va yaxshi taqsimlanish juda muhimdir. 3. Kriptografik ehtiyojlar uchun. Yig'ish funktsiyalarining ushbu turi xavfsizlik sohalarida, agar natijalarni almashtirish juda muhim bo'lsa yoki Hash-dan foydali ma'lumotlarni olish vazifasini murakkablashtirish zarur bo'lganda qo'llaniladi. Xesh qaerda va qanday qo'llaniladi? Siz allaqachon taxmin qilganingizdek, Hash juda ko'p muammolarni hal qilish uchun ishlatiladi. Mana, ulardan bir nechtasi: 1. Parollar odatda aniq matnda saqlanmaydi, lekin yuqori darajadagi xavfsizlikni ta'minlaydigan Hash miqdori ko'rinishida saqlanadi. Darhaqiqat, tajovuzkor bunday ma'lumotlar bazasiga kirish imkoniyatiga ega bo'lsa ham, u Hash kodlari uchun mos matnlarni tanlash uchun ko'p vaqt sarflashi kerak bo'ladi. Bu erda xarakterli "Hash qiymatlaridan dastlabki ma'lumotlarni tiklashning murakkabligi" muhim ahamiyatga ega.
2. Dasturlashda, shu jumladan ma'lumotlar bazalarida. Albatta, tez-tez biz tezkor qidirishga imkon beradigan ma'lumotlar tuzilmalari haqida gapiramiz. Sof texnik jihat. 3. Ma'lumotlarni tarmoq orqali uzatish paytida (shu jumladan Internet). TCP / IP kabi ko'plab protokollar asl xabarning xeshini o'z ichiga olgan maxsus tekshirish maydonlarini o'z ichiga oladi, shunda biron bir joyda biron bir nosozlik yuz bersa, bu ma'lumot uzatishga ta'sir qilmaydi. 4. Xavfsizlik bilan bog'liq turli xil algoritmlar uchun. Masalan, Hash elektron raqamli imzolarda ishlatiladi. 5. Faylning yaxlitligini tekshirish. Agar e'tibor bergan bo'lsangiz, Internetda ko'pincha fayllarda (masalan, arxivlar) Hash kodi bilan qo'shimcha tavsiflarni topishingiz mumkin. Ushbu chora nafaqat Internetdan yuklab olish paytida buzilgan faylni tasodifan ishga tushirishni oldini olish uchun ishlatiladi, ammo hostingda shunchaki muvaffaqiyatsizliklar mavjud. Bunday holatlarda siz Hash-ni tezda tekshirishingiz mumkin va agar kerak bo'lsa, faylni qayta yuklashingiz mumkin. 6. Ba'zida hash funktsiyalari noyob identifikatorlarni yaratish uchun ishlatiladi (ularning bir qismi sifatida). Masalan, rasmlarni yoki oddiy fayllarni saqlashda ular odatda sana va vaqt bilan birga nomlarda Hash-dan foydalanadilar. Bu sizga bir xil nomdagi fayllarni qayta yozmaslik imkonini beradi. Darhaqiqat, axborot texnologiyalarida hash funktsiyalari qanchalik uzoq bo'lsa, shunchalik ko'p ishlatiladi. Asosan, eng oddiy kompyuterlarning ma'lumotlari va kuchi sezilarli darajada oshganligi sababli. Birinchi holda, bu ko'proq qidirish haqida, ikkinchisida esa xavfsizlik masalalari haqida ko'proq. Ma'lum xash funktsiyalari Quyidagi uchta hash funktsiyalari eng taniqli deb hisoblanadi. Izoh: Ushbu ma'ruzada xesh funktsiyasi tushunchasi, shuningdek xesh funktsiyalarini yaratish algoritmlari haqida qisqacha ma'lumot berilgan. Bundan tashqari, xesh funktsiyasini yaratish uchun blokli shifrlash algoritmlaridan foydalanish imkoniyati ko'rib chiqildi. Ma'ruzaning maqsadi: "hash funktsiyasi" tushunchasi, shuningdek, bunday funktsiyalarning ishlash printsiplari bilan tanishish. Xesh funktsiyasi haqida tushuncha Hash funktsiyasi O'zboshimchalik uzunligi qatori uchun ba'zi bir butun sonni yoki boshqa uzunlikdagi boshqa qatorni hisoblaydigan matematik yoki boshqa funktsiya deyiladi. Matematik jihatdan buni quyidagicha yozish mumkin: bu erda M asl xabar bo'lib, ba'zan chaqiriladi prototipi, va h - hash funktsiyasining qiymati deb nomlangan natija (va shuningdek.) hash kodi yoki postlarni hazm qilish (ingliz tilidan xabar hazm)). Hash funktsiyasining ma'nosi teskari rasmning xarakterli xususiyatini - hash funktsiyasining qiymatini aniqlashdir. Ushbu qiymat odatda ma'lum bir o'lchamga ega, masalan, 64 yoki 128 bit. Muammoni hal qilish uchun hash kodni yana tahlil qilish mumkin. Masalan, ma'lumotni taqqoslash uchun hashing usulidan foydalanish mumkin: agar ikkita ma'lumotlar qatorida hash kodlari turlicha bo'lsa, massivlar farqlanishi kafolatlanadi; agar ular bir xil bo'lsa, massivlar, ehtimol, bir xil. Umumiy holda, manba ma'lumotlari va xesh kodlari o'rtasida bir xil aniq yozishmalar mavjud emas, chunki hash funktsiyalari soni har doim ham kirish ma'lumotlari parametrlaridan kamroq bo'ladi. Shunday qilib, bir xil hash kodlarni beradigan ko'plab kirish xabarlari mavjud (bunday holatlar chaqiriladi) to'qnashuvlar) To'qnashuvlar ehtimoli xesh funktsiyalarini baholashda muhim rol o'ynaydi. Hash funktsiyalari zamonaviy kriptografiyada keng qo'llaniladi. Eng oddiy xesh funktsiyani "sum modulo 2" operatsiyasi yordamida quyidagicha tuzish mumkin: biz kirish satrini olamiz, modulo 2 baytini qo'shamiz va xesh funktsiyasining qiymati sifatida bayt natijani qaytaramiz. Hash funktsiyasi qiymatining uzunligi, kirish xabarining hajmidan qat'iy nazar, 8 bitni tashkil qiladi. Masalan, raqamli holatga keltirilgan asl xabar quyidagicha edi (olti qirrali formatda): Biz xabarni ikkilik shaklda tarjima qilamiz, baytlarni bir-birining ostiga yozamiz va 2-modulning har bir ustuniga bit qo'shamiz: 0011 1110 0101 0100 1010 0000 0001 1111 1101 0100 ---------- 0110 0101 Natijada (0110 0101 (2) yoki 65 (16)) hash funktsiyasining qiymati bo'ladi. Biroq, bunday xash funktsiyasidan kriptografik maqsadlarda, masalan, elektron imzoni yaratish uchun foydalanib bo'lmaydi, chunki imzolangan xabar tarkibini chex summasining qiymatini o'zgartirmasdan o'zgartirish juda oson. Shuning uchun ko'rib chiqilayotgan hash funktsiyasi kriptografik dasturlar uchun mos emas. Kriptografiyada, hash funktsiyasi bir xil qiymatga ega ikkita teskari tasvirni yaratish qiyin bo'lsa, shuningdek, agar funktsiyaning chiqishi kirishga aniq bog'liq bo'lmasa, xesh funktsiyasi yaxshi deb hisoblanadi. Kriptografik xesh funktsiyalari uchun asosiy talablarni aniqlaymiz: hash funktsiyasi har qanday hajmdagi xabarga tegishli bo'lishi kerak; funktsiya qiymatini hisoblash etarlicha tez bo'lishi kerak; xesh funktsiyasining ma'lum bir qiymati bilan, mos keladigan M o'lchamini topish qiyin (deyarli imkonsiz) bo'lishi kerak; ma'lum bo'lgan M xabari bilan, asl xabar bilan bir xil hash qiymatga ega boshqa M 'xabarni topish qiyin bo'lishi kerak; xuddi shu hash qiymatiga ega bo'lgan tasodifiy turli xil xabarlarning har qanday juftligini topish qiyin bo'lishi kerak. Yuqoridagi barcha talablarga javob beradigan hash funktsiyasini yaratish oson ish emas. Shuni ham yodda tutish kerakki, funktsiyaning kiritilishi o'zboshimchalik bilan olingan ma'lumotlarni oladi va xesh natijasi turli o'lchamdagi ma'lumotlar uchun bir xil bo'lmasligi kerak. Hozirgi vaqtda amalda, hash funktsiyalari bu blokirovka bo'yicha kirish xabarlari blokini qayta ishlaydigan va kiruvchi xabarning har bir M i bloki uchun h hesh qiymatini shaklning bog'liqligiga qarab hisoblab chiqadigan funktsiyalardir. h i \u003d H (M i, h i-1), bu erda h i-1 - oldingi kirish ma'lumotlari bloki uchun hesh funktsiyasini hisoblashda olingan natija. Natijada h n hash funktsiyasining chiqishi kirish xabarining barcha n bloklari funktsiyasidir. Hash funktsiyasini yaratish uchun blokli shifr algoritmlaridan foydalanish Siz hash funktsiyasi sifatida blokdan foydalanishingiz mumkin. Agar ishlatilgan blok algoritmi kriptografik jihatdan bardoshli bo'lsa, unda hash funktsiyasi ishonchli bo'ladi. Hash kodni olish uchun blok algoritmidan foydalanishning eng oddiy usuli - xabarni CBC rejimida shifrlash. Bunday holda, xabar uzunligi shifrlash algoritmi blokining uzunligiga teng bo'lgan bloklar ketma-ketligi sifatida taqdim etiladi. Agar kerak bo'lsa, kerakli uzunlikdagi blokni olish uchun oxirgi blok o'ngdagi nol bilan to'ldirilgan. Hash qiymati so'nggi shifrlangan matn bloki bo'ladi. Agar ishonchli blokli shifr algoritmi ishlatilgan bo'lsa, hosil qilingan hash qiymati quyidagi xususiyatlarga ega bo'ladi: ma'lum bir ochiq qator uchun hesh qiymatini hisoblash uchun shifrlash kalitini bilmasdan amalda imkonsizdir; hesh funktsiyasining berilgan qiymati uchun ochiq ma'lumotlarni tanlash uchun shifrlash kalitini bilmasdan amalda imkonsizdir. Shu tarzda hosil qilingan hash qiymati odatda deyiladi taqlid yoki autentifikator va xabarlarning yaxlitligini tekshirish uchun foydalaniladi. Shunday qilib, taqlid qo'shilishi ochiq ma'lumotlar va maxfiy kalit ma'lumotlariga bog'liq bo'lgan boshqaruv birikmasi. Qo'shimchadan foydalanishning maqsadi - ma'lumotlar qatoridagi barcha tasodifiy yoki qasddan o'zgarishlarni aniqlash. Kirish xabarini qayta ishlashda hash funktsiyasi tomonidan qabul qilingan qiymat xabarning to'g'ri ekanligi ma'lum bo'lgan paytda xabarga biriktiriladi. Qabul qiluvchi olingan xabarning taqlidini hisoblash va uni xavfsiz tarzda uzatilishi kerak bo'lgan qabul qilingan xesh-kod bilan taqqoslash orqali xabarning yaxlitligini tekshiradi. Bunday xavfsiz usullardan biri bu qo'shimchani jo'natuvchining shaxsiy kaliti bilan shifrlash bo'lishi mumkin, ya'ni. imzo yaratish. Olingan hash kodini simmetrik shifrlash algoritmi bilan shifrlash ham mumkin, agar yuboruvchi va qabul qiluvchida simmetrik shifrlash kaliti bo'lsa. Imitatsiya qo'shimchalarini olish va ulardan foydalanish bo'yicha GOST 28147-89 milliy standartida tasvirlangan. Standart uzatilayotgan xabarning yaxlitligini boshqarish uchun shifrni blokirovka qilish rejimida butun xabarni shifrlash paytida olingan blokning pastki 32 bitidan foydalanishni taklif qiladi. Xuddi shu tarzda, siz har qanday blokdan foydalanishingiz mumkin nosimmetrik shifrlash algoritmi. Hash kodni yaratish uchun blok shifridan foydalanishning yana bir usuli quyidagicha. Dastlabki xabar ketma-ketlikda bloklarda qayta ishlanadi. Oxirgi blok, agar kerak bo'lsa, nol bilan to'ldiriladi, ba'zida ikkilik raqam ko'rinishidagi xabarning uzunligi oxirgi blokga tegishli bo'ladi. Har bir bosqichda biz hozirgi xabar blokini kalit sifatida olib, oldingi bosqichda olingan hash qiymatini shifrlaymiz. So'nggi shifrlangan qiymat hashning yakuniy natijasi bo'ladi. Aslida, hash funktsiyasini yaratish uchun blok shifridan foydalanish uchun yana bir nechta sxemalar mavjud. M i boshlang'ich xabarning bloki bo'lsin, hi i-chi bosqichda hash funktsiyasining qiymati, f - oddiy almashtirish rejimida ishlatiladigan blokli shifrlash algoritmi, 2-modulli qo'shimcha operatsiya. Keyin, masalan, hash funktsiyasini yaratish uchun quyidagi sxemalar mumkin. : Ushbu barcha sxemalarda hosil bo'lgan hash qiymatining uzunligi shifrlash paytida blokning uzunligiga teng. Bularning barchasi, shuningdek, xesh qiymatlarini hisoblash uchun blokli shifrlash algoritmidan foydalanishning boshqa sxemalari amalda qo'llanilishi mumkin. Blok algoritmlari asosida ishlab chiqilgan hash funktsiyalarining asosiy kamchiliklari nisbatan past tezlikdir. Kirish ma'lumotlaridagi kamroq operatsiyalar uchun zarur kriptografik quvvat ta'minlanishi mumkin. Kriptografik quvvat talablaridan kelib chiqqan holda noldan mustaqil ravishda tezroq ishlab chiqilgan hash algoritmlari mavjud (ularning eng keng tarqalgani MD5, SHA-1, SHA-2 va GOST R 34.11-94). Xesh nima?Xesh funktsiyasi - bu ma'lumotni qisqa, belgilangan satr uzunligiga matematik ravishda o'zgartirish. Nima uchun bu kerak?Xesh funktsiyalari yordamida tahlil qilish ko'pincha operatsion tizimning muhim fayllari, muhim dasturlar va muhim ma'lumotlarning yaxlitligini boshqarish uchun ishlatiladi. Nazorat zaruratga qarab va muntazam ravishda amalga oshirilishi mumkin. Bu qanday amalga oshiriladi?Birinchidan, qaysi fayllarni boshqarish kerakligini aniqlang. Har bir fayl uchun uning hash qiymati natijani saqlash bilan maxsus algoritm yordamida hisoblanadi. Kerakli vaqtdan so'ng shunga o'xshash hisoblash amalga oshiriladi va natijalar taqqoslanadi. Agar qiymatlar boshqacha bo'lsa, unda fayldagi ma'lumotlar o'zgartirildi. Xesh funktsiyasi qanday xususiyatlarga ega bo'lishi kerak? ixtiyoriy uzunlikdagi ma'lumotlarni sobitga o'zgartirishni amalga oshirishi kerak; ochiq algoritmga ega bo'lishi kerak, shunda uning kriptografik quvvatini o'rganish mumkin; u bir tomonlama bo'lishi kerak, ya'ni natija bo'yicha manbalarni aniqlash uchun matematik imkoniyat bo'lmasligi kerak; u to'qnashuvlarga "qarshilik ko'rsatishi" kerak, ya'ni turli xil ma'lumotlar uchun bir xil qiymatlarni yaratmasligi kerak; katta hisoblash resurslarini talab qilmasligi kerak; kirish ma'lumotlari biroz o'zgarganda, natija sezilarli darajada o'zgarishi kerak. Mashhur hashing algoritmlari qanday?Hozirda quyidagi hash funktsiyalari qo'llaniladi: CRC - tsiklni qisqartirish kodi yoki chexum summasi. Algoritm juda sodda, talab qilinadigan chiqish uzunligiga qarab juda ko'p o'zgarishga ega. Kriptografik emas! MD 5 juda mashhur algoritm. Oldingi versiyasi singari, MD 4 ham kriptografik vazifadir. Xesh hajmi 128 bit. SHA -1, shuningdek, juda mashhur kriptografik funktsiya. Xesh hajmi 160 bit. GOST R 34.11-94 - xesh funktsiyasini hisoblash uchun rus kriptografik standarti. Xesh hajmi 256 bit. Tizim ma'muri ushbu algoritmlarni qachon ishlatishi mumkin?Ko'pincha biron bir tarkibni, masalan, ishlab chiqaruvchining veb-saytidagi dasturlarni, musiqalarni, filmlarni yoki boshqa ma'lumotlarni yuklab olayotganda, ma'lum bir algoritm asosida hisoblangan chegirmalar qiymati mavjud. Xavfsizlik nuqtai nazaridan, yuklab olingandan so'ng, hash funktsiyasini mustaqil ravishda hisoblash va qiymatni saytda yoki fayl qo'shimchasida ko'rsatilgan narsalar bilan solishtirish kerak. Siz buni hech qachon qilganmisiz? Xeshni hisoblash uchun nima qulayroq?Endi bunday kommunal vositalarning ko'pligi mavjud, ular pulli va foydalanish uchun bepul. Menga shaxsan HashTab yoqdi. Birinchidan, o'rnatish paytida yordamchi dastur fayl xususiyatlariga yorliq sifatida kiritilgan, ikkinchidan, bu sizga ko'p sonli hashing algoritmlarini tanlash imkonini beradi va uchinchidan, xususiy notijorat foydalanish uchun bepul. Ruscha nima?Yuqorida ta'kidlab o'tilganidek, Rossiyada ko'pgina axborot xavfsizligi vositalari ishlab chiqaruvchilari tomonidan keng qo'llaniladigan GOST R 34.11-94 hash standarti mavjud. Bunday vositalardan biri FIX dasturiy kompleksining dastlabki holatini aniqlash va boshqarish dasturi. Ushbu dastur SPIdan foydalanish samaradorligini monitoring qilish vositasidir. Windows 9x / NT / 2000 / XP uchun FIX (2.0.1 versiyasi) Amalga oshirilgan 5 algoritmdan bittasini ishlatib, berilgan fayllarni tekshirish miqdorini hisoblash. Dasturiy ta'minot to'plamining dastlabki holatini fiksatsiya qilish va keyinchalik boshqarish. Dastur versiyalarini taqqoslash. Kataloglarni tuzatish va boshqarish. Belgilangan fayllardagi (kataloglarda) o'zgarishlarni boshqarish. TXT, HTML, SV formatlarida hisobot berish. 2013 yil 1 iyungacha mahsulot FSTEC tomonidan NDV 3 № 913 bo'yicha sertifikatlangan. ERI haqida nima deyish mumkin?Hash funktsiyasini hisoblash natijasi foydalanuvchining maxfiy kaliti bilan birgalikda raqamli imzo hisoblanadigan kriptografik algoritmning kirishiga to'g'ri keladi. Qat'iy aytganda, hash funktsiyasi ERI algoritmining bir qismi emas, lekin ko'pincha bu ochiq kalitdan foydalangan holda hujumni istisno qilish uchun amalga oshiriladi. Hozirgi vaqtda ko'plab elektron tijorat dasturlari foydalanuvchining maxfiy kalitini tokenning shaxsiy qismida (ruToken, eToken) uni o'sha erdan olishning texnik imkoniyatisiz saqlashga imkon beradi. Tokenning o'zi juda cheklangan xotira maydoniga ega, kilobaytlarda o'lchanadi. Hujjatni imzolash uchun hujjatni tokenning o'ziga o'tkazishning hech qanday usuli yo'q, lekin hujjatning xeshini tokenga o'tkazish va elektron raqamli imzoni olish chiqish paytida juda oddiy. Savollar: 1. Xesh funktsiyasi haqida tushuncha. 2. Hash funktsiyasini shakllantirish uchun blokli shifrlash algoritmlaridan foydalanish. 3. Hash funktsiyasini yaratish algoritmlariga umumiy nuqtai. 1. Xesh funktsiyasi haqida tushuncha Hash funktsiyasi(hash funktsiyasi) - bu ixtiyoriy uzunlikdagi satr uchun ba'zi bir butun qiymatni yoki boshqa uzunlikni boshqa qatorini hisoblaydigan matematik yoki boshqa funktsiya. Matematik jihatdan buni quyidagicha yozish mumkin: h \u003d H (M) , qayerda M - ba'zida chaqiriladigan asl xabar prototipi , va h Natija hash funktsiyasining qiymati deb nomlanadi (va shuningdek.) hash kodi yoki postlarni hazm qilish (ingliz tilidan xabar hazm)). Hash funktsiyasining ma'nosi teskari rasmning xarakterli xususiyatini - hash funktsiyasining qiymatini aniqlashdir. Ushbu qiymat odatda ma'lum bir o'lchamga ega, masalan, 64 yoki 128 bit. Muammoni hal qilish uchun hash kodni yana tahlil qilish mumkin. Masalan, ma'lumotni taqqoslash uchun hashing usulidan foydalanish mumkin: agar ikkita ma'lumotlar qatorida hash kodlari turlicha bo'lsa, massivlar farqlanishi kafolatlanadi; agar ular bir xil bo'lsa, massivlar, ehtimol, bir xil. Umumiy holda, manba ma'lumotlari va xesh kodlari o'rtasida bir xil aniq yozishmalar mavjud emas, chunki hash funktsiyalari soni har doim ham kirish ma'lumotlari parametrlaridan kamroq bo'ladi. Shunday qilib, bir xil hash kodlarni beradigan ko'plab kirish xabarlari mavjud (bunday holatlar chaqiriladi) to'qnashuvlar ) To'qnashuvlar ehtimoli xesh funktsiyalarini baholashda muhim rol o'ynaydi. Hash funktsiyalari zamonaviy kriptografiyada keng qo'llaniladi. Eng oddiy xesh funktsiyani "sum modulo 2" operatsiyasi yordamida quyidagicha tuzish mumkin: biz kirish satrini olamiz, modulo 2 baytini qo'shamiz va xesh funktsiyasining qiymati sifatida bayt natijani qaytaramiz. Hash funktsiyasi qiymatining uzunligi, kirish xabarining hajmidan qat'iy nazar, 8 bitni tashkil qiladi. Masalan, raqamli holatga keltirilgan asl xabar quyidagicha edi (olti qirrali formatda): 2 B1 4 A9 5 FE4 Biz xabarni ikkilik shaklda tarjima qilamiz, baytlarni bir-birining ostiga yozamiz va 2-modulning har bir ustuniga bit qo'shamiz: 0010 1011 0001 0100 1010 1001 0101 1111 1110 0100 ——————- 0010 1101 Natija: 0010 1101 yoki 2 D va hash funktsiyasining qiymati bo'ladi. Biroq, bunday xash funktsiyasidan kriptografik maqsadlarda, masalan, elektron imzoni yaratish uchun foydalanib bo'lmaydi, chunki imzolangan xabar tarkibini chex summasining qiymatini o'zgartirmasdan o'zgartirish juda oson. Shuning uchun ko'rib chiqilayotgan hash funktsiyasi kriptografik dasturlar uchun mos emas. Kriptografiyada, hash funktsiyasining qiymati bir xil bo'lgan ikkita teskari tasvirni yaratish qiyin bo'lsa, shuningdek, agar funktsiyaning chiqishi kirishga aniq bog'liq bo'lmasa, xesh funktsiyasi yaxshi deb hisoblanadi. Kriptografik xesh funktsiyalari uchun asosiy talablarni aniqlaymiz: · Hash funktsiyasi har qanday hajmdagi xabarlarga tegishli bo'lishi kerak; Funktsiya qiymatini hisoblash tezda bajarilishi kerak; · Hash funktsiyasining ma'lum qiymati bilan, mos keladigan prototipni topish qiyin (deyarli imkonsiz) bo'lishi kerak M ; · Ma'lum xabar bilan M boshqa xabarni topish qiyin bo'lishi kerak M ' asl xabar bilan bir xil hash qiymati bilan; · Bir xil hash qiymatiga ega har qanday tasodifiy turli xil xabarlarning juftligini topish qiyin bo'lishi kerak. Yuqoridagi barcha talablarga javob beradigan hash funktsiyasini yaratish oson ish emas. Shuni ham yodda tutish kerakki, funktsiyaning kiritilishi o'zboshimchalik bilan olingan ma'lumotlarni oladi va xesh natijasi turli o'lchamdagi ma'lumotlar uchun bir xil bo'lmasligi kerak. Hozirgi vaqtda, amalda, hash funktsiyalari kirish xabarlari blokini blok orqali qayta ishlaydigan va hash qiymatini hisoblaydigan funktsiyalardan foydalanadi h i har bir blok uchun M i qaramlik kiritish xabari h i \u003d H (M i, h i-1), qayerda h i-1 - oldingi kirish ma'lumotlari bloki uchun xesh funktsiyasini hisoblashda olingan natija. Natijada, hash funktsiyasining chiqishi h n barchaning vazifasidir n kirish xabarining bloklari.
Xesh funktsiyasi sifatida siz blok simmetrik shifrlash algoritmidan foydalanishingiz mumkin. Agar ishlatilgan blok algoritmi kriptografik jihatdan bardoshli bo'lsa, unda hash funktsiyasi ishonchli bo'ladi. Hash kodni olish uchun blok algoritmidan foydalanishning eng oddiy usuli - xabarni CBC rejimida shifrlash ( Shifrni blokirovkalash - shifr matnini blokirovkalash rejimi) Bunday holda, xabar uzunligi shifrlash algoritmi blokining uzunligiga teng bo'lgan bloklar ketma-ketligi sifatida taqdim etiladi. Agar kerak bo'lsa, kerakli uzunlikdagi blokni olish uchun oxirgi blok o'ngdagi nol bilan to'ldirilgan. Hash qiymati so'nggi shifrlangan matn bloki bo'ladi. Agar ishonchli blokli shifr algoritmi ishlatilgan bo'lsa, hosil qilingan hash qiymati quyidagi xususiyatlarga ega bo'ladi: Ma'lum bir ochiq qator uchun hesh qiymatini hisoblash uchun shifrlash kalitini bilmasdan amalda imkonsizdir; · Shoshish funktsiyasining berilgan qiymati uchun ochiq ma'lumotlarni tanlashni shifrlash kalitini bilmasdan deyarli imkonsiz. Shu tarzda hosil qilingan hash qiymati odatda deyiladi taqlid yoki autentifikator va xabarlarning yaxlitligini tekshirish uchun foydalaniladi. Shunday qilib, taqlid qo'shilishi ochiq ma'lumotlar va maxfiy kalit ma'lumotlariga bog'liq bo'lgan boshqaruv birikmasi. Qo'shimchadan foydalanishning maqsadi - ma'lumotlar qatoridagi barcha tasodifiy yoki qasddan o'zgarishlarni aniqlash. Kirish xabarini qayta ishlashda hash funktsiyasi tomonidan qabul qilingan qiymat xabarning to'g'ri ekanligi ma'lum bo'lgan paytda xabarga biriktiriladi. Qabul qiluvchilar olingan xabarning taqlidini hisoblash va uni xavfsiz tarzda uzatilishi kerak bo'lgan qabul qilingan xesh-kod bilan taqqoslash orqali xabarning yaxlitligini tekshiradi. Bunday xavfsiz usullardan biri bu qo'shimchani jo'natuvchining shaxsiy kaliti bilan shifrlash bo'lishi mumkin, ya'ni. imzo yaratish. Agar yuboruvchi va qabul qiluvchida umumiy nosimmetrik shifrlash kaliti bo'lsa, hosil bo'lgan hash kodini nosimmetrik shifrlash algoritmi bilan shifrlash ham mumkin. Imitatsiya qo'shimchalarini olish va ulardan foydalanish bo'yicha GOST 28147-89 milliy standartida tasvirlangan. Standart uzatilayotgan xabarning yaxlitligini boshqarish uchun shifrni blokirovka qilish rejimida butun xabarni shifrlash paytida olingan blokning pastki 32 bitidan foydalanishni taklif qiladi. Xuddi shu tarzda, qo'shimchani shakllantirish uchun har qanday blok nosimmetrik shifrlash algoritmi ishlatilishi mumkin. Hash kodni yaratish uchun blok shifridan foydalanishning yana bir usuli quyidagicha. Dastlabki xabar ketma-ketlikda bloklarda qayta ishlanadi. Oxirgi blok, agar kerak bo'lsa, nol bilan to'ldiriladi, ba'zida ikkilik raqam ko'rinishidagi xabarning uzunligi oxirgi blokga tegishli bo'ladi. Har bir bosqichda biz hozirgi xabar blokini kalit sifatida olib, oldingi bosqichda olingan hash qiymatini shifrlaymiz. So'nggi shifrlangan qiymat hashning yakuniy natijasi bo'ladi. Shunday qilib, agar odatdagi xabarlarni shifrlash sxemasi bo'lsa M blok shifr yordamida f tugmachasida Kimga sifatida qayd qildik E \u003d f (M, K) , keyin hash kodni olish sxemasi h yuqorida tavsiflangan algoritmga ko'ra quyidagicha ifodalanishi mumkin
Dastlabki xesh kod sifatida h 0 doimiy ravishda oling. Shifrlash oddiy almashtirish rejimida amalga oshiriladi. Ushbu usuldan foydalanganda blok o'lchami kalit uzunligiga mos keladi va hash qiymati blok uzunligiga teng bo'ladi. Oddiy almashtirish rejimida blok shifridan foydalanishning yana bir usuli bor: xabar elementlari oldingi bosqichda olingan hash qiymatlari bilan shifrlangan:
Aslida, hash funktsiyasini yaratish uchun blok shifridan foydalanish uchun yana bir nechta sxemalar mavjud. Ruxsat bering M i - asl xabar bloki, h i Bu hash funktsiyasining qiymati i bosqichi f - oddiy almashtirish rejimida ishlatiladigan blokli shifrlash algoritmi, - qo'shimcha ishlash moduli 2. Keyin, masalan, xesh funktsiyasini yaratish uchun quyidagi sxemalar mumkin: Ushbu barcha sxemalarda hosil bo'lgan hash qiymatining uzunligi shifrlash paytida blokning uzunligiga teng. Bularning barchasi, shuningdek, xesh qiymatlarini hisoblash uchun blokli shifrlash algoritmidan foydalanishning boshqa sxemalari amalda qo'llanilishi mumkin. Blok algoritmlari asosida ishlab chiqilgan hash funktsiyalarining asosiy kamchiliklari nisbatan past tezlikdir. Kirish ma'lumotlaridagi kamroq operatsiyalar uchun zarur kriptografik quvvat ta'minlanishi mumkin. Tezroq hashing algoritmlari mavjud (ularning eng keng tarqalgani MD5, SHA-1, SHA-2 va GOST R 34.11-94). 3. Hash funktsiyasini yaratish algoritmlarini ko'rib chiqish. Hozirgi vaqtda turli xil algoritmlar taklif qilingan va amalda hash funktsiyasini hisoblash uchun foydalaniladi. Eng mashhur algoritmlar MD5, SHA-1, SHA-2 va boshqa SHA versiyalari, shuningdek GOST R 34.11-94da tavsiflangan ichki algoritm. Algoritm MD5 Yigirmanchi asrning 90-yillari boshlarida MD4 xesh funktsiyasini yaratish algoritmini takomillashtirish natijasida paydo bo'ldi. "MD" nomidagi belgilar Message Digest - xabarning xulosasini anglatadi. MD4 va MD5 algoritmlarining muallifi R. Rivestdir. Tasodifiy xabar uchun MD5-dan foydalanish 128 bitli xesh qiymatini keltirib chiqaradi. Kirish ma'lumotlari 512 bitli bloklarda qayta ishlanadi. Algoritmda oddiy arifmetik qo'shimchalar bilan bir qatorda oddiy mantiqiy operatsiyalar (inversiya, ulanish, modulo 2, siklik siljishlar va boshqalar) qo'llaniladi. Algoritmning ushbu elementar funktsiyalarini kompleks takrorlash ishlov berishdan keyin olingan natijaning yaxshilab aralashtirilishini ta'minlaydi. Shuning uchun, ikkita tasodifiy tanlangan xabarlar bir xil hash kodiga ega bo'lishi dargumon. MD5 algoritmi quyidagi xususiyatga ega: olingan hash qiymatining har bir biti har bir kirish bitining funktsiyasi. Bu MD5 128 bitli hash qiymati uchun eng kuchli hash funktsiyasi deb ishoniladi. Algoritm SHA (Secure Hash algoritmi) AQSh milliy standartlar va texnologiyalar instituti (NIST) tomonidan ishlab chiqilgan va 1993 yilda Amerika Federal ma'lumot standarti sifatida nashr etilgan. SHA-1, MD5 kabi, MD4 algoritmiga asoslangan. SHA-1 512 bitli bloklarda boshlang'ich xabarni qayta ishlash asosida 160 bitli xesh qiymatini yaratadi. SHA-1 algoritmida oddiy mantiqiy va arifmetik amallar ham qo'llaniladi. SHA-1 va MD5 o'rtasidagi eng muhim farq shundaki, SHA-1 hash kodi MD5 xash kodidan 32 bit uzunroq. Agar ikkala algoritm ham kriptovalyutani murakkabligi bo'yicha bir xil deb faraz qilsak, SHA-1 yanada ishonchli algoritm bo'ladi. Shafqatsiz hujum (frontal hujum) dan foydalanib, berilgan hash kodiga ega bo'lgan o'zboshimchalik bilan xabarni yaratish yanada qiyinroq va hash kodi bir xil bo'lgan ikkita xabarni yaratish yanada qiyinroq. 2001 yilda AQSh milliy standartlar va texnologiyalar instituti standart sifatida SHA-1 dan uzunroq hash kodli uchta hash funktsiyasini qabul qildi. Ko'pincha bunday xesh funktsiyalari SHA-2 yoki SHA-256, SHA-384 va SHA-512 deb nomlanadi (nom algoritmlar tomonidan hosil qilingan hash kodning uzunligini ko'rsatadi). Ushbu algoritmlar nafaqat hosil qilingan hash kodning uzunligi, balki ichki funktsiyalar va qayta ishlangan blokning uzunligi bilan ham farqlanadi (SHA-256 uchun blok uzunligi 512, SHA-384 va SHA-512 uchun blokning uzunligi 1024 bit). SHA algoritmini bosqichma-bosqich takomillashtirish uning kriptografik kuchini oshirishga olib keladi. Ko'rib chiqilgan algoritmlar bir-biridan farqli bo'lishiga qaramay, ularning barchasi SHA-1 va MD4-ning keyingi rivojlanishi bo'lib, ular o'xshash tuzilishga ega. Rossiyada hash funktsiyalari uchun mahalliy standart bo'lgan GOST R34.11-94 qabul qilindi. Uning tuzilishi MD4 algoritmiga asoslangan SHA-1,2 yoki MD5 algoritmlarining tuzilishidan tubdan farq qiladi. GOST R 34.11-94 algoritmi tomonidan yaratilgan hash kodning uzunligi 256 bit. Algoritm dastlabki xabarni ketma-ket 256 bitli blokdan o'ngdan chapga qayta ishlaydi. Algoritmning parametri boshlang'ich hash vektoridir - ixtiyoriy sobit qiymat, shuningdek 256 bit uzunlikda. GOST R 34.11-94 algoritmida permutatsiya, siljish, arifmetik qo'shimchalar, modul 2 operatsiyalari qo'llaniladi. GOST 34.11-94 da yordamchi vazifa sifatida GOST 28147-89 ga muvofiq algoritm oddiy almashtirish rejimida qo'llaniladi. 4. Hash funktsiyasi talablari Xesh funktsiyasi - bu fayl, xabar yoki ba'zi ma'lumot bloklarini hazm qilish yoki "barmoq izlari" ni olish uchun mo'ljallangan bir tomonlama funktsiya. Hash kodi funksiya tomonidan yaratilgan N :
Qayerda M ixtiyoriy uzunlikdagi xabar h belgilangan uzunlikdagi hash kod. Xabarlarni autentifikator sifatida ishlatish uchun xesh funktsiyasi qanaqa bo'lishi kerakligini ko'rib chiqing. Juda oddiy hash funktsiyasi misolini ko'rib chiqing. Keyin, biz xesh funktsiyasini yaratishda bir nechta yondashuvlarni tahlil qilamiz. Hash funktsiyasi N , xabarni tasdiqlash uchun foydalaniladigan quyidagi xususiyatlarga ega bo'lishi kerak: 1. Hash funktsiyasi N har qanday uzunlikdagi ma'lumotlar blokiga qo'llanilishi kerak. 2. Hash funktsiyasi N sobit uzunlikdagi chiqish hosil qiladi. 3. N (M) Nisbatan osonlik bilan (polinomik davrda) har qanday qiymat uchun hisoblanadi M . 4. Har qanday berilgan hash kod qiymati uchun h hisoblash uchun topish mumkin emas M shunday H (M) \u003d h . 5. Har qanday berilgan uchun x hisoblash uchun buni topib bo'lmaydi
6. O'zboshimchalik juftligini topish (hisoblash) mumkin emas ( x , y ) shunday H (y) \u003d H (x) . Birinchi uchta xususiyat har qanday xabar uchun hash kodni yaratishda hash funktsiyasini talab qiladi. To'rtinchi xususiyat bir tomonlama hash funktsiyasining talabini belgilaydi: berilgan xabar uchun hash-kodni yaratish oson, ammo berilgan hash-kod uchun xabarni tiklash mumkin emas. Agar xesh-autentifikatsiya maxfiy qiymatni o'z ichiga olsa, bu xususiyat muhimdir. Yashirin qiymatning o'zi yuborilishi mumkin emas, ammo agar hash funktsiyasi bir tomonlama bo'lmasa, dushman maxfiy qiymatni quyidagicha osongina ochishi mumkin. Etkazib berish to'xtatilganda, tajovuzkor xabar oladi M va hash kodi C \u003d H (SAB || M) . Agar tajovuzkor hash funktsiyasini o'zgartira olsa, demak, u qo'lga kiritishi mumkin SAB || M \u003d H-1 (C) . Hujumchi endi biladi va M va SAB || M olish SAB juda oddiy. Beshinchi xususiyat, hash funktsiyasi qiymati ushbu hash funktsiyasining qiymatiga mos keladigan boshqa xabarni topishning iloji yo'qligini ta'minlaydi. Bu shifrlangan hash kodini ishlatishda autentifikatorni qalbakilashtirishni oldini oladi. Bunday holda, dushman xabarni o'qishi mumkin va shuning uchun uning hash kodini yaratishi mumkin. Ammo dushman maxfiy kalitga ega emasligi sababli, uni oluvchi uni sezmasligi uchun xabarni o'zgartira olmaydi. Agar ushbu xususiyat bajarilmasa, tajovuzkor quyidagi harakatlar ketma-ketligini amalga oshirishi mumkin: xabarni va uning shifrlangan hash kodini ushlab qolish, xabarning xesh kodini hisoblash, xuddi shu hash kodi bilan muqobil xabar yaratish, asl xabarni soxta bilan almashtirish. Ushbu xabarlarning xesh kodlari bir-biriga mos kelganligi sababli, qabul qiluvchi buzg'unchilikni aniqlamaydi. Birinchi besh xususiyatni qondiradigan hash funktsiyasi oddiy yoki zaif hash funktsiyasi deyiladi. Agar qo'shimcha ravishda oltinchi xususiyat qoniqsa, unda bunday funktsiya kuchli hash funktsiyasi deb ataladi. Oltinchi mulk tug'ilgan kunga qilingan hujum deb nomlanadigan hujumlardan himoya qiladi. 5. Oddiy xesh funktsiyalari Barcha hash funktsiyalari quyidagicha bajariladi. Kirish qiymati (xabar, fayl va boshqalar) ketma-ketlik sifatida qabul qilinadi n -bit bloklari. Kirish qiymati ketma-ket blok bilan ishlov beriladi va yaratiladi m bit kodining bit qiymati. Hash funktsiyasining eng oddiy misollaridan biri har bir blokning ozgina XOR:
Algoritmning to'rtta tsiklining har birida to'rtta elementar mantiqiy funktsiyalardan biri ishlatiladi. Har bir elementar funktsiya kirishda uchta 32 bitli so'zlarni oladi va natijada bitta 32 bitli so'zlarni yaratadi. Har bir funktsiya bitrin mantiqiy operatsiyalar to'plamidir, ya'ni. Chiqishning nth biti uchta kirishning nth bit funktsiyasidir. Elementar funktsiyalar quyidagilar: 32 bitli so'zlar qatori hozirgi vaqtda qayta ishlanayotgan 512 bitli kirish blokining qiymatini o'z ichiga oladi. Har bir tsikl 16 marotaba bajariladi va kirish xabarining har bir bloki to'rt tsiklda ishlov berilganligi sababli, kirish xabarining har bir bloki sekundda ko'rsatilgan sxema bo'yicha ishlov beriladi. 4, 64 marta. Agar biz 512 bitli blokni o'n oltita 32 bitli so'zlar shaklida ifodalasak, 32 bitli har bir kirish to'rt marta, har tsiklda bir marta va 64 32 bitli so'zlardan iborat T jadvalining har bir elementidan faqat bittadan foydalanadi. marta. Tsiklning har bir bosqichidan keyin to'rtta A, B, C va D so'zlari chap tomonga siljiydi va har bir qadamda ABCD buferining faqat to'rtta so'zidan bittasi o'zgaradi. Shuning uchun, buferning har bir so'zi 16 marta o'zgartiriladi, so'ngra bu blokning yakuniy natijasini olish uchun 17-marta. hazm qilmoq 2. Tezlik: algoritmni dasturiy ta'minot etarli darajada tez bajarilishi kerak. Xususan, 32-bitli arxitekturada algoritm etarlicha tez bajarilishi kerak. Shuning uchun algoritm 32 bitli so'zlar bo'yicha oddiy elementar operatsiyalar to'plamiga asoslanadi. 3. Oddiylik va ixchamlik: algoritm sodda va sodda va dastursiz, katta dasturlarsiz yoki jadvallarsiz ko'rinishi kerak. Ushbu xususiyatlar nafaqat aniq dasturiy afzalliklarga ega, balki xavfsizlik nuqtai nazaridan ham talab etiladi, chunki mumkin bo'lgan zaif tomonlarini tahlil qilish uchun oddiy algoritmga ega bo'lish yaxshiroqdir. 4. Bir oz endian arxitekturasi maqsadga muvofiqdir: ba'zi protsessor arxitekturalari (masalan, Intel 80xxx liniyasi) so'zning chap baytini pastki bayt manzillari holatida saqlaydi (kichik endian). Boshqalar (masalan, SUN Sparcstation) so'zlarning baytlarini pastki bayt manzillari holatida saqlaydi (katta MD4 birinchi tsiklda qo'shimcha sobitni qo'llamaydi. Ikkinchi tsikldagi har bir qadam uchun shunga o'xshash qo'shimcha doimiy ishlatiladi. Uchinchi tsikldagi har bir qadam uchun yana bir qo'shimcha doimiy ishlatiladi. Xesh kod har bir kirish bitining funktsiyasidir Elementar funktsiyalarni kompleks takrorlash f, f G, f H va f I natijaning yaxshi aralashganligini ta'minlaydi, ya'ni ikkita xabar tasodifiy tanlangan bo'lishi dargumon. e, agar ular aniq o'xshash naqshlarga ega bo'lsa, ular bir xil chiqish qiymatini beradigan bir xil hazmga ega, ya'ni 512 bitli bitta blokda MD5 ni bajarish ABCD buferidagi ikkita turli xil kirish qiymatlari uchun bir xil natijaga olib keladi. MD5-ga muvaffaqiyatli hujum qilish uchun hech qanday yondashuv mavjud emas. Download 172.55 Kb. Do'stlaringiz bilan baham: |
ma'muriyatiga murojaat qiling