Middle
HMAC nədir və necə istifadə olunur?
sobes.tech Süni İntellekt
AI-dan cavab
HMAC (Hash əsaslı Mesaj Təsdiqləmə Kodu) gizli açar və kriptografik hash funksiyasından istifadə edərək mesajın bütövlüyünü və autentikliyini yoxlama mexanizmidir.
İş prinsipi:
- Gizli açardan daxili və xarici açarların yaradılması (
ipad,opad). - Daxili hash-in hesablanması:
hash(gizli açar XOR ipad + mesaj). - Xarici hash-in hesablanması:
hash(gizli açar XOR opad + daxili hash). Bu HMAC-dir.
İstifadə sahələri:
- API sorğularının autentifikasiyası: Server və müştəri ümumi gizli açar paylaşır. Müştəri sorğu məlumatları üçün HMAC hesablayır və başlıqda göndərir. Server eyni məlumatlar və açar ilə HMAC hesablayır və göndərilən dəyərlə müqayisə edir. Əgər uyğun gəlirsə, sorğu autentik sayılır.
- Məlumatların bütövlüyünün yoxlanması: Əgər mesajın HMAC-ı yenidən hesablanmış HMAC ilə uyğun gəlirsə, məlumatların ötürülmə zamanı dəyişmədiyindən əmin olmaq olar.
- JSON Web Tokens (JWT) istifadə: HMAC tez-tez rəqəmsal imza algoritmi kimi (HS256, HS384, HS512) istifadə olunur, token məlumatlarının bütövlüyünü təmin etmək üçün.
İcra nümunəsi (psevdokod):
function hmacSHA256(key, message) {
// Padding sabitləri
const blockSize = 64; // SHA-256 üçün
const ipad = 0x36;
const opad = 0x5c;
// Açarın hazırlanması
let paddedKey = key;
if (key.length > blockSize) {
paddedKey = sha256(key);
}
while (paddedKey.length < blockSize) {
paddedKey += 0x00;
}
// Daxili hash
const innerPaddedKey = xor(paddedKey, ipad);
const innerHash = sha256(innerPaddedKey + message);
// Xarici hash (HMAC)
const outerPaddedKey = xor(paddedKey, opad);
const hmac = sha256(outerPaddedKey + innerHash);
return hmac;
}
// Reallarda kitabxanalarda, tətbiq optimallaşdırılıb və fərqlidir
Əsas fərq sadə hash ilə (hash(açar + mesaj) və ya hash(mesaj + açar)) müqayisədə, HMAC mesajların uzadılmasına qarşı davamlıdır, çünki iki fərqli padding konstantası ilə iki mərhələli hash istifadə edir.