الخلاصة

  • أحاط RFC 2104 دالة تجزئة قائمة بجولتين مفتاحيتين وحشوتين ثابتتين مختلفتين، من دون تعديل شفرة دالة الضغط الأصلية.
  • أتاح التصميم استبدال التجزئة واقتطاع الناتج؛ لذلك تدخل الخوارزمية والمفتاح والتمثيل الدقيق للرسالة وطول الوسم في سياق التحقق.
  • لا يثبت تطابق HMAC وحده مرسلاً فريداً أو تفويضاً أو حداثة أو توحيداً للتمثيل أو سرية أو تسليماً أو صحة التنفيذ.

لم تكن الإضافة الأهم في HMAC اختراع دالة تجزئة جديدة. ففي 1997 كانت تطبيقات MD5 وSHA-1 السريعة متاحة على نطاق واسع. كانت الحاجة إلى طريقة مدروسة لإدخال مفتاح سري، بدلاً من أن يخترع كل بروتوكول أسلوباً بسيطاً وغير مضمون لضم السر إلى الرسالة.

صاغ RFC 2104 آلية مشتركة صغيرة. وقد نجحت لأنها شددت ما يجب أن يكون موحداً، وتركت معنى الرسالة وقرار استخدامها للطبقات المحيطة.

دالة واحدة في مجالين منفصلين

يسمي RFC 2104 دالة التجزئة H، وطول كتلتها B، وطول خرجها L. إذا كان المفتاح أطول من B، يمر أولاً عبر H؛ وإذا كان أقصر، يستكمل بأصفار. ثم تفصل سلسلتان ثابتتان الدورين: ipad تكرار للبايت 0x36، وopad تكرار للبايت 0x5c.

الصيغة هي H((K xor opad) || H((K xor ipad) || text)). تجمع الجولة الداخلية اشتقاقاً من المفتاح مع الرسالة. ثم تجمع الجولة الخارجية اشتقاقاً مختلفاً مع ملخص الجولة الأولى. ولا يلزم تغيير تنفيذ H نفسه.

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

الحالة المحسوبة مسبقاً تظل سراً

أجازت الوثيقة حفظ حالتي التجزئة بعد معالجة كتلتي المفتاح الداخلية والخارجية. وفي الرسائل القصيرة يوفر ذلك عمليتي ضغط في كل مرة، من دون أثر في قابلية التشغيل البيني.

لكن RFC 2104 يشدد على حماية هاتين الحالتين كما تُحمى المفاتيح. فالقيمة المشتقة القابلة لإعادة الاستخدام قد تحتفظ بقدرة السر الأصلي حتى لو اختلف شكلها عنه. حماية ملف K مع كشف الحالة الوسيطة تحمي الاسم لا السلطة الفعلية.

كذلك لا تولّد الصيغة عشوائية المفتاح أو تبادله الآمن أو حفظه أو تدويره. عدّت الوثيقة هذه العناصر، إلى جانب صحة التنفيذ، شروطاً أساسية. وحّد HMAC الحساب، لا إدارة المفاتيح.

الوسم يصادق بايتات لا نوايا

يمكن للتطبيق إرسال أول t بت من الخرج فقط. ويغيّر هذا الاقتطاع تكلفة تخمين وسم صحيح، ولذلك يجب أن يكون الطول جزءاً صريحاً من البروتوكول. عبارة «HMAC صالح» ناقصة بلا اسم الخوارزمية ومعرّف المفتاح وحقبته والبايتات المصادق عليها وطول المقارنة.

لا يعرف HMAC أن تمثيلين لـJSON أو سلسلتين Unicode يحملان المعنى نفسه. يغيّر ترتيب الحقول أو الترميز أو المسافات أو التطبيع الوسم. وقد يتفق الطرفان أيضاً على مصادقة الحقول الخاطئة فتنجح المقارنة ويبقى الخطأ الدلالي. توحيد التمثيل قاعدة تسبق MAC، وليس نتيجة يمنحها.

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

جعلت متجهات الاختبار القاعدة قابلة للتنفيذ

نشر RFC 2202 في العام نفسه مفاتيح ورسائل ونتائج معروفة لـHMAC-MD5 وHMAC-SHA-1. أصبح في وسع التطبيقات المستقلة مقارنة سلوكها عند حدود البايتات، فتحولت الصيغة إلى نقطة التقاء عملية.

لكن اجتياز هذه الحالات يثبت المسارات المعروفة فقط. لا يغطي كل الأطوال والأخطاء والتزامن والمقارنة ذات الزمن الثابت واختيار مفتاح الإنتاج وحالة منع الإعادة. توافق الحساب الأساسي إيصال مهم، لا شهادة للنظام كله.

قابلية الاستبدال لم تكن هجرة تلقائية

ورد MD5 وSHA-1 كمثالين من زمن الوثيقة، بينما بقي H عاماً. عرّف RFC 4868 لاحقاً HMAC-SHA-256 وHMAC-SHA-384 وHMAC-SHA-512 في IPsec. وحدّث RFC 6151 تقييم MD5، واستبعد HMAC-MD5 من تصاميم البروتوكولات الجديدة.

عاش التركيب أطول من بعض أمثلته الأولى. ومع ذلك احتاج الانتقال إلى معرّفات وتفاوض وشفرة وسياسات واختبارات وتدوير مفاتيح. تقلل الواجهة الجيدة الترابط التقني، لكنها لا تلغي كلفة القرار التنظيمي أو حوافز إبقاء الأنظمة القديمة.

يوضح اعتماد NIST اللاحق في FIPS 198-1 اتساع HMAC مؤسسياً. دوام التركيب لا يمنح كل خوارزمية مبكرة صلاحية دائمة.

يبدأ قرار الثقة بعد نجاح المقارنة

يمكن لرسالة قديمة مع وسمها القديم أن تنجح مرة أخرى. تحتاج الحداثة إلى nonce أو عداد أو نافذة زمنية أو حالة أخرى. ويحتاج التفويض إلى قاعدة تربط السياق المصادق عليه بالفعل المسموح. وتحتاج السرية إلى تشفير، بينما يحتاج التسليم والأثر المثبت إلى إيصالات لاحقة. وتتطلب صحة التنفيذ أكثر من قيم اختبار معروفة.

منح RFC 2104 الإنترنت مكوّناً مشتركاً صارماً ورقيقاً. جعلت جولتان MAC قابلاً لإعادة الاستخدام، وبقيت الثقة بناءً يحيط به.

المصادر