Sobes.tech
Middle

HMAC nima va qanday ishlatiladi?

sobes.tech AI

AIdan javob

HMAC (Hash asosida xabarni autentifikatsiya kodi) — bu maxfiy kalit va kriptografik hash funktsiyasidan foydalanib, xabarning yaxlitligi va autentifikatsiyasini tekshirish uchun mexanizm.

Ishlash algoritmi:

  1. Maxfiy kalit va konstantalardan (ipad, opad) ichki va tashqi kalitlar shakllantiriladi.
  2. Ichki hash hisoblanadi: hash(maxfiy kalit XOR ipad + xabar).
  3. Tashqi hash hisoblanadi: hash(maxfiy kalit XOR opad + ichki hash). Bu HMAC.

Qo‘llanilishi:

  • API so‘rovlarini autentifikatsiya qilish: Server va mijoz umumiy maxfiy kalitga ega. Mijoz so‘rov ma’lumotlari uchun HMAC hisoblaydi va uni sarlavhada yuboradi. Server shuningdek, ayni ma’lumotlar va kalit bilan HMAC hisoblaydi va yuborilgan qiymat bilan solishtiradi. Agar mos kelsa, so‘rov autentifikatsiya qilingan hisoblanadi.
  • Ma’lumotlarning yaxlitligini tekshirish: Agar xabar HMAC-isi qayta hisoblangan HMAC bilan mos kelsa, ma’lumotlar uzatish davomida o‘zgarmaganiga ishonch hosil qilish mumkin.
  • JSON Web Tokens (JWT) da foydalanish: HMAC ko‘pincha raqamli imzo algoritmi sifatida (HS256, HS384, HS512) ishlatiladi, token ma’lumotlarining yaxlitligini ta’minlash uchun.

Misol uchun (psevdokod):

function hmacSHA256(key, message) {
    // Padding konstantalari
    const blockSize = 64; // SHA-256 uchun
    const ipad = 0x36;
    const opad = 0x5c;

    // Kalitni tayyorlash
    let paddedKey = key;
    if (key.length > blockSize) {
        paddedKey = sha256(key);
    }
    while (paddedKey.length < blockSize) {
        paddedKey += 0x00;
    }

    // Ichki hash
    const innerPaddedKey = xor(paddedKey, ipad);
    const innerHash = sha256(innerPaddedKey + message);

    // Tashqi hash (HMAC)
    const outerPaddedKey = xor(paddedKey, opad);
    const hmac = sha256(outerPaddedKey + innerHash);

    return hmac;
}

// Haqiqiy kutubxonalar ichida, amalga oshirish optimallashtirilgan va farq qiladi

Asosiy farq oddiy kalit bilan hash (hash(kalit + xabar) yoki hash(xabar + kalit)) bilan taqqoslaganda, HMAC xabarlarni uzaytirish hujumlariga qarshi chidamli, chunki u ikki fazali hash va turli padding konstantalarini ishlatadi.