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).
Do'stlaringiz bilan baham: |