إتش إم إيه سي

في علم التشفير ، يُعدّ رمز مصادقة الرسائل المشفر بالتجزئة (HMAC ) (ويُشار إليه أحيانًا برمز مصادقة الرسائل المشفر بالتجزئة أو رمز مصادقة الرسائل القائم على التجزئة ) نوعًا خاصًا من رموز مصادقة الرسائل (MAC) التي تتضمن دالة تجزئة تشفيرية ومفتاح تشفير سري. وكما هو الحال مع أي رمز مصادقة رسائل، يُمكن استخدامه للتحقق من سلامة البيانات ومصداقية الرسالة في آنٍ واحد. ويُعدّ HMAC نوعًا من دوال التجزئة المشفرة بالتجزئة التي يُمكن استخدامها أيضًا في مخطط اشتقاق المفاتيح أو مخطط تمديد المفاتيح.
يُمكن لبروتوكول HMAC توفير المصادقة باستخدام سر مشترك بدلاً من استخدام التوقيعات الرقمية مع التشفير غير المتماثل . فهو يُغني عن الحاجة إلى بنية تحتية معقدة للمفاتيح العامة من خلال تفويض عملية تبادل المفاتيح إلى الأطراف المتصلة، والذين يتحملون مسؤولية إنشاء واستخدام قناة موثوقة للاتفاق على المفتاح قبل بدء الاتصال.
تفاصيل
يمكن استخدام أي دالة تجزئة تشفيرية، مثل SHA-2 أو SHA-3 ، في حساب رمز مصادقة الرسائل (HMAC)؛ وتُسمى خوارزمية رمز مصادقة الرسائل الناتجة HMAC- x ، حيث x هي دالة التجزئة المستخدمة (مثل HMAC-SHA256 أو HMAC-SHA3-512). تعتمد قوة التشفير لرمز HMAC على قوة التشفير لدالة التجزئة الأساسية، وحجم ناتج التجزئة، وحجم المفتاح وجودته. [ 1 ]
تستخدم خوارزمية HMAC مرحلتين لحساب التجزئة. قبل كل مرحلة، يُستخدم المفتاح السري لاستخلاص مفتاحين: داخلي وخارجي. بعد ذلك، تُنتج المرحلة الأولى من خوارزمية التجزئة تجزئة داخلية مُشتقة من الرسالة والمفتاح الداخلي. أما المرحلة الثانية فتُنتج رمز HMAC النهائي المُشتق من نتيجة التجزئة الداخلية والمفتاح الخارجي. وبذلك، تُوفر الخوارزمية مناعة أفضل ضد هجمات تمديد الطول .
تقوم دالة التجزئة التكرارية (التي تستخدم بنية ميركل-دامغارد ) بتقسيم الرسالة إلى كتل ذات حجم ثابت، ثم تُجري عليها عملية ضغط بشكل متكرر. على سبيل المثال، تعمل خوارزمية SHA-256 على كتل بحجم 512 بت. حجم مُخرَج HMAC هو نفسه حجم دالة التجزئة الأساسية (مثلاً، 256 بت في حالة SHA-256 و512 بت في حالة SHA3-512)، مع إمكانية اقتطاعه إذا لزم الأمر.
لا يقوم بروتوكول HMAC بتشفير الرسالة. بدلاً من ذلك، يجب إرسال الرسالة (سواء كانت مشفرة أم لا) مع قيمة التجزئة الخاصة ببروتوكول HMAC. ستقوم الأطراف التي تمتلك المفتاح السري بإعادة حساب قيمة التجزئة للرسالة بنفسها، وإذا كانت الرسالة أصلية، فستتطابق قيم التجزئة المستلمة مع القيم المحسوبة.
نُشر تعريف وتحليل بنية HMAC لأول مرة عام 1996 في ورقة بحثية من تأليف ميهير بيلاري ، وران كانيتي ، وهوجو كراوتشيك ، [ 1 ] [ 2 ] كما كتبوا RFC 2104 عام 1997. [ 3 ] : §2 عرّفت ورقة 1996 أيضًا نوعًا متداخلًا يُسمى NMAC (رمز مصادقة الرسائل المتداخل). يعمم FIPS PUB 198 استخدام HMAC ويُوحّده. [ 4 ] يُستخدم HMAC ضمن بروتوكولات IPsec ، [ 2 ] و SSH و TLS ، ولرموز JSON Web Tokens .
تعريف
هذا التعريف مأخوذ من RFC 2104:
أين
- هي دالة تجزئة تشفيرية.
- هذه هي الرسالة المراد التحقق من صحتها.
- هو المفتاح السري.
- هو مفتاح بحجم كتلة مشتق من المفتاح السري، K ؛ إما عن طريق إضافة أصفار إلى اليمين حتى حجم الكتلة، أو عن طريق التجزئة إلى أقل من أو يساوي حجم الكتلة أولاً ثم إضافة أصفار إلى اليمين.
- يشير إلى عملية الربط .
- يشير إلى عملية أو الحصرية الثنائية (XOR).
- وهي الحشوة الخارجية بحجم الكتلة، وتتكون من بايتات متكررة قيمتها 0x5c.
- هي الحشوة الداخلية بحجم الكتلة، وتتكون من بايتات متكررة قيمتها 0x36. [ 3 ] : §2
دالة التجزئةH | bبايت | Lبايت |
|---|---|---|
| MD5 | 64 | 16 |
| SHA-1 | 64 | 20 |
| SHA-224 | 64 | 28 |
| SHA-256 | 64 | 32 |
| SHA-512/224 | 128 | 28 |
| SHA-512/256 | 128 | 32 |
| SHA-384 | 128 | 48 |
| SHA-512 | 128 | 64 [ 5 ] |
| SHA3-224 | 144 | 28 |
| SHA3-256 | 136 | 32 |
| SHA3-384 | 104 | 48 |
| SHA3-512 | 72 | 64 [ 6 ] |
out = H(in)L = length(out)b = H's internal block length[ 3 ] : §2 | ||
تطبيق
يوضح الكود الزائف التالي كيفية تنفيذ خوارزمية HMAC. يبلغ حجم الكتلة 512 بت (64 بايت) عند استخدام إحدى دوال التجزئة التالية: SHA-1، MD5، RIPEMD-128. [ 3 ] : §2
دالة hmac هي المدخلات التالية: المفتاح: بايتات // مصفوفة من البايتات ، الرسالة: بايتات // مصفوفة من البايتات المراد تجزئتها، التجزئة: دالة // دالة التجزئة المستخدمة (مثل SHA-1) ، حجم الكتلة: عدد صحيح // حجم كتلة دالة التجزئة (مثل 64 بايت لـ SHA-1).// حساب المفتاح بحجم الكتلة block_sized_key = computeBlockSizedKey(key, hash, blocksize) o_key_pad ← block_sized_key xor [0x5c blockSize] // مفتاح خارجي مبطن i_key_pad ← block_sized_key xor [0x36 blockSize] // مفتاح داخلي مبطنإرجاع دالة التجزئة (مفتاح_o ∥ مفتاح_i ∥ الرسالة))
دالة computeBlockSizedKey تأخذ المدخلات التالية: المفتاح: بايتات // مصفوفة من البايتات ، التجزئة: دالة // دالة التجزئة المستخدمة (مثل SHA-1) ، حجم الكتلة: عدد صحيح // حجم كتلة دالة التجزئة (مثل 64 بايت لـ SHA-1).// يتم تقصير المفاتيح التي يزيد طولها عن حجم الكتلة عن طريق تجزئتها إذا كان (طول (المفتاح) > حجم الكتلة) ثم المفتاح = دالة التجزئة(المفتاح) // يتم إضافة أصفار إلى يمين المفاتيح الأقصر من حجم الكتلة (blockSize) لتصبح بحجم الكتلة (blockSize ). إذا كان طول المفتاح (length(key)) أقل من حجم الكتلة (blockSize) ، فسيتم إرجاع الدالة Pad(key, blockSize) . // إضافة أصفار إلى المفتاح لجعله بطول حجم الكتلة (blockSize ) بايت.مفتاح الإرجاع
مبادئ التصميم
استُلهم تصميم مواصفات HMAC من وجود هجمات على آليات أبسط لدمج المفتاح مع دالة التجزئة. على سبيل المثال، قد يفترض المرء إمكانية تحقيق نفس مستوى الأمان الذي يوفره HMAC باستخدام MAC = H ( key ∥ message ). مع ذلك، تعاني هذه الطريقة من عيب خطير: فمع معظم دوال التجزئة، يسهل إضافة بيانات إلى الرسالة دون معرفة المفتاح والحصول على MAC صالح آخر (" هجوم تمديد الطول "). أما البديل، وهو إضافة المفتاح باستخدام MAC = H ( message ∥ key )، فيعاني من مشكلة تتمثل في أن المهاجم الذي يجد تصادمًا في دالة التجزئة (بدون مفتاح) سيجد تصادمًا في MAC (حيث أن رسالتين m1 و m2 تُنتجان نفس التجزئة ستوفران نفس شرط البداية لدالة التجزئة قبل تجزئة المفتاح المُضاف، وبالتالي ستكون التجزئة النهائية هي نفسها). يُعد استخدام MAC = H ( key ∥ message ∥ key ) أفضل، لكن العديد من الدراسات الأمنية أشارت إلى وجود ثغرات أمنية في هذا النهج، حتى عند استخدام مفتاحين مختلفين. [ 1 ] [ 7 ] [ 8 ]
لم تُكتشف أي هجمات توسيع معروفة ضد مواصفات HMAC الحالية، المُعرَّفة على أنها H ( key ∥ H ( key ∥ message ))، لأن تطبيق دالة التجزئة الخارجية يُخفي النتيجة الوسيطة للتجزئة الداخلية. لا تُعدّ قيم ipad و opad حاسمة لأمان الخوارزمية، ولكن تم تعريفها بطريقة تجعل مسافة هامينغ بينهما كبيرة، وبالتالي سيقل عدد البتات المشتركة بين المفتاحين الداخلي والخارجي. يتطلب تقليل مستوى أمان HMAC أن يختلفا في بت واحد على الأقل.
لا تحتاج دالة التجزئة Keccak ، التي اختارتها NIST كفائزة في مسابقة SHA-3 ، إلى هذا النهج المتداخل، ويمكن استخدامها لإنشاء رمز مصادقة الرسائل (MAC) ببساطة عن طريق إضافة المفتاح إلى بداية الرسالة، لأنها غير قابلة للتأثر بهجمات تمديد الطول. [ 9 ]
حماية
تعتمد قوة التشفير لـ HMAC على حجم المفتاح السري المستخدم وأمان دالة التجزئة الأساسية. وقد ثبت أن أمان بنية HMAC يرتبط ارتباطًا مباشرًا بخصائص أمان دالة التجزئة المستخدمة. يُعدّ الهجوم الأكثر شيوعًا ضد HMAC هو استخدام القوة الغاشمة لكشف المفتاح السري. تتأثر HMAC بالتصادمات بشكل أقل بكثير من خوارزميات التجزئة الأساسية وحدها. [ 2 ] [ 10 ] [ 11 ] على وجه الخصوص، أثبت ميهير بيلاري أن HMAC دالة شبه عشوائية (PRF) بافتراض أن دالة الضغط هي دالة شبه عشوائية. [ 12 ] لذلك، لا تعاني HMAC-MD5 من نقاط الضعف نفسها التي وُجدت في MD5. [ 13 ]
يشترط معيار RFC 2104 أن تُجزأ المفاتيح التي يزيد طولها عن B بايت باستخدام H أولاً ، مما يؤدي إلى "تصادم" غريب: إذا كان طول المفتاح أكبر من حجم كتلة التجزئة (مثل 64 بايت لـ SHA-1)، فسيتم HMAC(k, m)حسابه على النحو التالي HMAC(H(k), m). تُثار هذه الخاصية أحيانًا كنقطة ضعف محتملة لـ HMAC في سيناريوهات تجزئة كلمات المرور: فقد ثبت أنه من الممكن العثور على سلسلة ASCII طويلة وقيمة عشوائية تكون تجزئتها أيضًا سلسلة ASCII، وستُنتج كلتا القيمتين نفس مُخرجات HMAC. [ 14 ] [ 15 ] [ 16 ]
في عام ٢٠٠٦، أوضح كلٌ من جونغسونغ كيم ، وأليكس بيريوكوف ، وبارت برينيل ، وسيوكهي هونغ كيفية التمييز بين خوارزمية HMAC باستخدام نسخ مُصغّرة من MD5 وSHA-1 أو نسخ كاملة من HAVAL و MD4 و SHA-0، وبين دالة عشوائية أو خوارزمية HMAC باستخدام دالة عشوائية. تُمكّن المُميّزات التفاضلية المُهاجم من ابتكار هجوم تزوير على خوارزمية HMAC. علاوة على ذلك، يُمكن أن تُؤدي المُميّزات التفاضلية والمُميّزات المستطيلة إلى هجمات الصورة الثانية العكسية . يُمكن تزوير خوارزمية HMAC باستخدام النسخة الكاملة من MD4 بالاستفادة من هذه المعلومات. لا تُناقض هذه الهجمات برهان أمان خوارزمية HMAC، ولكنها تُقدّم رؤىً جديدة حولها استنادًا إلى دوال التجزئة التشفيرية الموجودة. [ ١٧ ]
في عام 2009، قدم شياويون وانغ وآخرون هجومًا تمييزيًا على خوارزمية HMAC-MD5 دون استخدام مفاتيح مرتبطة. ويمكن لهذا الهجوم التمييز بين تطبيق HMAC باستخدام MD5 وتطبيق آخر باستخدام دالة عشوائية مع 2^ 97 استعلامًا باحتمالية 0.87. [ 18 ]
في عام 2011، نُشرت وثيقة RFC 6151 إعلامية لتلخيص الاعتبارات الأمنية في خوارزميتي MD5 وHMAC-MD5. بالنسبة لـHMAC-MD5، تُشير الوثيقة إلى أنه على الرغم من أن أمان دالة التجزئة MD5 نفسها مُعرّض للخطر بشكل كبير، إلا أن الهجمات المعروفة حاليًا على HMAC-MD5 لا تُشير إلى وجود ثغرة أمنية عملية عند استخدامها كرمز مصادقة للرسائل. كما تُضيف أنه "في تصميم بروتوكول جديد، لا ينبغي تضمين مجموعة تشفير تتضمن HMAC-MD5" . [ 13 ]
في مايو 2011، تم نشر RFC 6234 الذي يشرح بالتفصيل النظرية المجردة وشفرة المصدر لـ HMACs القائمة على SHA. [ 19 ]
أمثلة
فيما يلي بعض قيم HMAC، بافتراض استخدام ترميز ASCII ذي 8 بت للإدخال وترميز سداسي عشري للإخراج:
HMAC_MD5("key", "The quick brown fox jumps over the lazy dog") = 80070713463e7749b90c2dc24911e275 HMAC_SHA1("key", "The quick brown fox jumps over the lazy dog") = de7c9b85b8b78aa6bc8a7a36f70a90701c9db4d9 HMAC_SHA256("key", "The quick brown fox jumps over the lazy dog") = f7bc83f430538424b13298e6aa6fb143ef4d59a14946175997479dbc2d1a3cd8 HMAC_SHA512("key", "The quick brown fox jumps over the lazy dog") = b42af09057bac1e2d41708e48a902e09b5ff7f12ab428a4fe86653c73dd248fb82f948a549f7b791a5b41915ee4d1ec3935357e4e2317250d0372afa2ebeeb3a انظر أيضاً
مراجع
- 1 2 3 بيلاري, مهير ; كانيتي، ران؛ كراوزيك ، هوغو (1996). "وظائف التجزئة المفتاحية لمصادقة الرسائل" (PDF) . ص 1 – 15. CiteSeerX 10.1.1.134.8430 .
- 1 2 3 بيلاري، ميهير؛ كانيتي، ران؛ كراوزيك ، هوغو (ربيع 1996). "مصادقة الرسائل باستخدام وظائف التجزئة - إنشاء HMAC" (PDF) . كريبتوبايتس . 2 (1).
- ١ ٢ ٣ ٤ هـ. كراوتشيك؛ م. بيلاري؛ ر. كانيتي (فبراير ١٩٩٧). HMAC: التجزئة المفتاحية لمصادقة الرسائل . مجموعة عمل شبكة IETF . doi : 10.17487/RFC2104 . RFC 2104 .معلوماتية. تم التحديث بواسطة RFC 6151 .
- ↑ "FIPS 198-1: رمز مصادقة الرسائل باستخدام التجزئة المفتاحية (HMAC)" . معايير معالجة المعلومات الفيدرالية . 16 يوليو 2008.
- ↑ "FIPS 180-2 مع إشعار التغيير 1" (PDF) . csrc.nist.gov .
- ↑ دوركين، موريس (4 أغسطس 2015). "معيار SHA-3: التجزئة القائمة على التبديل ووظائف الإخراج القابلة للتوسيع" . معايير معالجة المعلومات الفيدرالية - عبر منشورات المعهد الوطني للمعايير والتكنولوجيا.
- ↑ برينيل، بارت ؛ فان أورشوت، بول سي. (1995)، MDx-MAC وبناء رموز MAC سريعة من دوال التجزئة ، سلسلة محاضرات في علوم الحاسوب، المجلد 963، برلين-هايدلبرغ: سبرينغر فيرلاغ، CiteSeerX 10.1.1.34.3855
- ^ برينيل، بارت ؛ فان أورشوت، بول سي. (1995)، حول أمن خوارزميتين MAC ، CiteSeerX 10.1.1.42.8908
- ↑ فريق Keccak. "فريق Keccak - التصميم والأمان" . تم الاطلاع عليه بتاريخ 31 أكتوبر 2019.
على عكس SHA-1 وSHA-2، لا يعاني Keccak من ضعف تمديد الطول، وبالتالي لا يحتاج إلى بنية HMAC المتداخلة. بدلاً من ذلك، يمكن إجراء حساب MAC ببساطة عن طريق إضافة المفتاح في بداية الرسالة.
- ↑ شناير، بروس (أغسطس 2005). "SHA-1 معطل" . تم الاطلاع عليه في 9 يناير 2009.
على الرغم من أنه لا يؤثر على تطبيقات مثل HMAC حيث لا تكون التصادمات مهمة
. - ↑ هـ. كراوتشيك؛ م. بيلاري؛ ر. كانيتي (فبراير 1997). HMAC: التجزئة المفتاحية لمصادقة الرسائل . مجموعة عمل شبكة IETF . doi : 10.17487/RFC2104 . RFC 2104 .معلوماتي. القسم 6. تم التحديث بواسطة RFC 6151. يعتمد
أقوى هجوم معروف ضد HMAC على تردد التصادمات لدالة التجزئة H ("هجوم عيد الميلاد") [PV,BCK2]، وهو غير عملي تمامًا بالنسبة لدوال التجزئة المعقولة بشكل طفيف.
- ↑ بيلاري، ميهير. "براهين جديدة لـ NMAC وHMAC: أمان بدون مقاومة للتصادم" (ملف PDF) . مجلة علم التشفير . تاريخ الاطلاع: 15 ديسمبر 2021.
تُثبت هذه الورقة البحثية أن HMAC دالة
عشوائية زائفة (
PRF) بافتراض أن دالة الضغط هي دالة عشوائية زائفة. وهذا يُعيد ضمانًا قائمًا على البرهان، إذ لا توجد هجمات معروفة تُؤثر على عشوائية دالة الضغط الزائفة، كما يُساعد في تفسير مقاومة الهجوم التي أظهرها HMAC حتى عند تنفيذه باستخدام دوال تجزئة ذات مقاومة تصادم ضعيفة.
- 1 2 إس. تيرنر؛ إل. تشين (مارس 2011). اعتبارات أمنية مُحدَّثة لخوارزميتي MD5 Message-Digest وHMAC-MD5 . فريق عمل هندسة الإنترنت . doi : 10.17487/RFC6151 . RFC 6151 .معلوماتية. تحديثات RFC 2104 و 1321 .
- ↑ "شرح تصادمات التجزئة PBKDF2+HMAC · ماتياس بينينز" . mathiasbynens.be . تم الاطلاع عليه بتاريخ 7 أغسطس 2019 .
- ↑ "آرون توبونس : كسر حواجز HMAC" . مؤرشف من الأصل في 7 أغسطس 2019. تم الاطلاع عليه في 7 أغسطس 2019 .
- ↑ "تم الاحتفاظ بتصويبات RFC 2104 لتحديث الوثيقة · إردم ميميسيازيجي" . www.rfc-editor.org . تم الاطلاع عليه بتاريخ 23 سبتمبر 2016 .
- ↑ كيم، جونغسونغ؛ بيريوكوف، أليكس؛ برينيل، بارت؛ هونغ، سيوكهي (2006). "حول أمن HMAC وNMAC استنادًا إلى HAVAL وMD4 وMD5 وSHA-0 وSHA-1" (ملف PDF) . SCN 2006. سبرينغر-فيرلاغ.
- ↑ وانغ، شياويون؛ يو، هونغبو؛ وانغ، وي؛ تشانغ، هاينا؛ زان، تاو (2009)، تحليل التشفير على HMAC/NMAC-MD5 وMD5-MAC (ملف PDF) ، سلسلة محاضرات في علوم الحاسوب، المجلد 5479، برلين، هايدلبرغ: سبرينغر-فيرلاغ ، تاريخ الاسترجاع 15 يونيو 2015
- ↑ إيستليك، دونالد؛ هانسن، توني (مايو 2011). خوارزميات التجزئة الآمنة الأمريكية (SHA وHMAC وHKDF القائمة على SHA) . فريق عمل هندسة الإنترنت . doi : 10.17487/RFC6234 . ISSN 2070-1721 . RFC 6234 . للعلم فقط. يلغي RFC 4634. يُحدّث RFC 3174
روابط خارجية
- رموز مصادقة الرسائل
- التجزئة
