🍋
Menu
Security

HMAC

HMAC (رمز توثيق الرسالة القائم على التجزئة)

بنية محددة لإنشاء رمز توثيق رسالة باستخدام دالة تجزئة تشفيرية مع مفتاح سري، للتحقق من سلامة البيانات وأصالة الرسالة معاً.

التفاصيل التقنية

يحسب HMAC (RFC 2104): HMAC(K, m) = H((K' XOR opad) || H((K' XOR ipad) || m))، حيث H دالة تجزئة (SHA-256) وK' المفتاح المبطّن لحجم الكتلة وipad هو 0x36 مكرر وopad هو 0x5c مكرر. يمنع بناء التجزئة المزدوج هذا هجمات تمديد الطول التي تؤثر على hash(key || message) العادي. يُستخدم HMAC-SHA256 في توقيعات JWT وتوثيق API (AWS Signature V4) والتحقق من webhooks (Stripe، GitHub) واشتقاق المفاتيح (HKDF). تدعم Web Crypto API عبر HMAC عبر subtle.sign() وsubtle.verify(). المقارنة الآمنة زمنياً ضرورية عند التحقق من HMAC لمنع هجمات القناة الجانبية الزمنية.

مثال

```javascript
// HMAC — Web Crypto API example
const data = new TextEncoder().encode('sensitive data');
const hash = await crypto.subtle.digest('SHA-256', data);
const hex = Array.from(new Uint8Array(hash))
  .map(b => b.toString(16).padStart(2, '0')).join('');
```

أدوات ذات صلة

مصطلحات ذات صلة