71
ajratiladi. Odatda aksariyat xesh funksiyalar uchun (masalan, MD5,
SHA1, Tiger) blok uzunligi 64 baytga yoki 512 bitga teng.
HMAC tizimida kalit ma’lumotga quyidagicha biriktiriladi. Dastlab
xesh funksiyadagi blokning uzunligi baytlarda aniqlanadi. Masalan.
MD5 xesh fuknsiyasida blok
uzunligi
𝐵 = 64 baytga teng bo‘lsin.
Olingan kalit (
𝐾) uzunligi ham blok uzunligiga keltiriladi. Bunda 3 ta
holat bo‘lishi mumkin: (1) agar kalitning uzunligi 64 baytga teng bo‘lsa,
hech qanday o‘zgarish amalga
oshirilmaydi, (2) agar kalitning uzunligi
64 dan kichik bo‘lsa, u holda yetmagan baytlar o‘rni nollar bilan
to‘ldiriladi, (3) agar kalit uzunligi blok uzunligidan katta bo‘lsa, kalit
dastlab xeshlanadi va hosil bo‘lgan xesh qiymatning o‘ng tomoni blok
uzunligiga yetguncha nollar bilan to‘ldiriladi. Shu tariqa, kalit uzunligi
blok uzunligiga moslashtiriladi.
Shunday qilib, ma’lumot va moslashtirilgan kalit asosida HMAC
qiymati quyidagicha hisoblanadi:
𝐻𝑀𝐴𝐶(𝑀, 𝐾) = 𝐻�𝐾 ⊕ 𝑜𝑝𝑎𝑑, 𝐻(𝐾⨁𝑖𝑝𝑎𝑑, 𝑀)�.
Bu yerda,
𝑖𝑝𝑎𝑑 va 𝑜𝑝𝑎𝑑 o‘zgaruvchilar quyidagicha hosil qilinadi:
𝑖𝑝𝑎𝑑 = 0𝑥36 𝑛𝑖 𝐵 𝑚𝑎𝑟𝑡𝑎 𝑡𝑎𝑘𝑟𝑜𝑟𝑙𝑎𝑠ℎ 𝑛𝑎𝑡𝑖𝑗𝑎𝑠𝑖𝑑𝑎
𝑜𝑝𝑎𝑑 = 0𝑥5𝑐 𝑛𝑖 𝐵 𝑚𝑎𝑟𝑡𝑎 𝑡𝑎𝑘𝑟𝑜𝑟𝑙𝑎𝑠ℎ 𝑛𝑎𝑡𝑖𝑗𝑎𝑠𝑖𝑑𝑎
Tenglikdan ko‘rinib turibdiki, HMAC da ikki marta xeshlash
amalga oshirilmoqda. Kalit
𝐾 faqat ikki tomonga (jo‘natuvchi va qabul
qiluvchiga) ma’lum bo‘lgani uchun, hujumchi mos xesh qiymatni qayta
hisoblay olmaydi. A tomondan
yuborilgan
(𝑀, 𝐻𝑀𝐴𝐶(𝑀, 𝐾)) ma’lumot
juftlaridan hujumchi faqat ma’lumotni o‘zgartirishi mumkin bo‘ladi va
bu holat qabul qiluvchi tomonidan osonlik bilan aniqlanadi.