# رمز مصادقة الرسالة القائم على التلبيد

رمز مصادقة الرسالة القائم على التلبيد (بالإنجليزية: Hash-based Message Authentication Code)‏ اختصارً HMAC هو نوع محدد من رموز مصادقة الرسالة (MAC) في علم التعمية، يتضمن HMAC استخدام دالة تلبيد تعموية، بالإضافة إلى مفتاح تعمية سري.

## الاستخدامات

يمكن استخدام رمز مصادقة الرسالة القائم على التلبيد( HMAC) للتحقق من سلامة البيانات وصحة الرسالة في الوقت ذاته، تمامًا كما هو الحال مع أي رمز مصادقة رسالة آخر. يمكن استخدام أي دالة تلبيد تعموية مثل SHA-256 أو SHA-3 في حساب HMAC (رمز مصادقة الرسالة استنادًا على التجزئة).

## الخوارزمية

يُرمز لخوارزمية رمز مصادقة الرسالة بالشكل HMAC-X، وفيه تُمثِّل X عن دالة التلبيد المستخدمة (مثلاً: HMAC-SHA256 أو HMAC-SHA3). تعتمد قوة التعمية على قوة دالة التلبيد التعموية المستخدمة، وعلى مقاس الخرج المُلبَّد وعلى مقاس المفتاح ونوعه.
يعتمد رمز المصادقة دورتين لحساب التلبيد: يستخدم المفتاح السري ليشتق منه مفتاحين – واحد داخلي والآخر خارجي. ينتج عن الدورة الأولى قيمة مُلبَّدة مشتقة من الرسالة ومن المفتاح الداخلي. وينتج من المرور الثاني رمز مصادقة الرسالة النهائي وهو مشتق من التلبيد الداخلي الناتج عن الدورة الأولى ومن المفتاح الخارجي. وهكذا توفر الخوارزمية حصانة أفضل ضد هجمات تمديد الطول.

## دالة التلبيد

تُجزِّء دالة التلبيد التكرارية الرسالة إلى عدة وحدات مُجمَّعة ذات حجم ثابت، وتتكرر عليها باستخدام دالة ضغط. على سبيل المثال: تعالج الدالة SHA-256 وحدات مُجمَّعة طولها 512 بتاً. حجم خرج رمز المصادقة يساوي حجم دالة التلبيد المستخدمة (مثل: 256 و1600 بتاً في حالة استخدام الدوال SHA-256 وSHA-3 على التوالي)، مع أن إمكانية اقتطاعه عند الحاجة.

## عدم التشفير

لا يُعمِّي رمز المصادقة الرسالة. بدلًا من ذلك، يجب إرسال الرسالة، سواء كانت معماة أم لا، إلى دالة تجزئة تعموية. يقوم الأطراف الذين يمتلكون المفتاح السري بتجزئة الرسالة مرة أخرى بأنفسهم، وإذا كانت الرسالة أصلية، فستتطابق التجزئتان المستلمة والمحسوبة.

## التاريخ

نُشر تعريف وتحليل بناء HMAC لأول مرة في عام 1996 في ورقة كتبها Mihir Bellare و Ran Canetti و Hugo Krawczyk ، وكتبوا أيضًا RFC 2104 في عام 1997. حددت ورقة عام 1996 أيضًا متغيرًا متداخلًا يُسمى NMAC. يقوم FIPS PUB 198 بتعميم وتوحيد استخدام HMACs.

## الاستخدامات في البروتوكولات

يستخدم رمز مصادقة الرسالة القائم على التلبيد في حزمة أمن بروتوكول الإنترنت وبروتوكول طبقة المقابس الآمنة.

## تعريف HMAS وصيغته

HMAC هو رمز مصادقة الرسالة القائم على التلبيد، وهذا التعريف مأخوذ من RFC 2104:
ويمكن تعريفه بالصورة التالية:
    ${\begin{aligned}\operatorname {HMAC} (K,m)&=\operatorname {H} {\Bigl{\biglK'\oplus opad{\bigr )}\parallel \operatorname {H} {\bigl\left(K'\oplus ipad\right)\parallel m{\bigr )}{\Bigr )}\\K'&={\begin{cases}\operatorname {H} \left(K\right)&K{\text{ is larger than block size}}\\K&{\text{otherwise}}\end{cases}}\end{aligned}}$
حيث:
    -H هي دالة تلبيد تعموية
    -M هي الرسالة المراد المصادقة عليها
    -K هو المفتاح السري
    -K ' هو مفتاح بحجم الوحدة المُجمَّعة مشتق من المفتاح السري K ؛ إما عن طريق الحشو إلى اليمين بصفر يصل إلى حجم الوحدة المُجمَّعة، أو بالتخفيض إلى أقل من حجم الوحدة المُجمَّعة أولًا ثم الحشو إلى اليمين باستخدام الأصفار
    || يدل على الضم
    ⊕ يدل على عملية الفصل المنطقي الحصري $^{[الإنجليزية]}$ (XOR).
    opad عبارة عن حشوة خارجية بحجم الوحدة المُجمَّعة، تتكون من وحدات بايت متكررة بقيمة 0x5c
    ipad هو حشوة داخلية بحجم الوحدة المُجمَّعة، تتكون من وحدات بايت متكررة بقيمة 0x36

## هوامش

* ↑ length extension attacks