0Pricing
Cryptology Academy · درس

بنية HMAC وبرهان الأمان

تتبّع بنية ipad/opad وخصائصها الأمنية

بنية HMAC وبرهان الأمان درس مجاني في Cryptology Academy على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Cryptology Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Cryptology Academy 4 دروس في المجموع.

مرحبًا

‏HMAC هو البناء القياسي لـ MAC المعتمد على مفتاح. ويمنع تصميمه القائم على التجزئة المزدوجة هجمات تمديد الطول، كما يملك برهانًا أمنيًا رسميًا يختزل أمان HMAC في أمان دالة التجزئة الأساسية.

بناء HMAC

HMAC(K, M) = H((K' ⊕ opad) || H((K' ⊕ ipad) || M)) حيث: - K' = K مع حشوه بأصفار حتى حجم الكتلة B (أو H(K) إذا كان |K|>B) - ipad = 0x36 مكررًا B مرة - opad = 0x5C مكررًا B مرة

لماذا ipad وopad؟

‏ipad (0x36) وopad (0x5C) ثابتان مختلفان، ما يضمن أن K' ⊕ ipad ≠ K' ⊕ opad. وهما ينشئان فعليًا مفتاحين مختلفين شبه عشوائيين انطلاقًا من K، ويُستخدم أحدهما في التجزئة الداخلية والآخر في التجزئة الخارجية.

HMAC خطوة بخطوة

بالنسبة إلى K=secret وM=message وH=SHA256: 1. K' = K بعد حشوه حتى 64 بايتًا 2. inner_key = K' XOR ipad 3. inner_hash = SHA256(inner_key || M) 4. outer_key = K' XOR opad 5. result = SHA256(outer_key || inner_hash)

HMAC في Python

import hmac, hashlib key = b'my_secret_key' message = b'Hello, World!' mac = hmac.new(key, message, hashlib.sha256) print(mac.hexdigest()) # 64-char hex string (256 bits)

لماذا يفشل تمديد الطول مع HMAC؟

بافتراض HMAC(K,M) = SHA256(outer_key || SHA256(inner_key || M)) يعرف المهاجم أن SHA256(inner_key || M) = inner_hash. لكنه لا يستطيع تمديدها؛ إذ تأخذ التجزئة الخارجية (outer_key || inner_hash) كمدخل، وليس inner_hash وحدها. وهو لا يعرف outer_key.

البرهان الأمني لـ HMAC (Bellare)

أثبت Bellare عام 1996 أنه إذا كانت دالة التجزئة H دالة شبه عشوائية (PRF)، فإن HMAC يكون أيضًا دالة شبه عشوائية. وعمليًا، فإن HMAC-SHA256 آمن بقدر SHA-256 فيما يتعلق بخصائص الأمان المقصودة.

طول مفتاح HMAC

يجب أن يكون مفتاح HMAC: - بطول لا يقل عن L بايتًا (طول ناتج التجزئة) - الموصى به: أن يتكون تمامًا من L بايتات من البيانات العشوائية - إذا تجاوز المفتاح block_size، فتُجرى تجزئته مسبقًا حتى block_size - استخدموا os.urandom(32) لمفاتيح HMAC-SHA256

اقتطاع HMAC

يمكن اقتطاع ناتج HMAC إلى نصف طول الناتج من دون خسارة أمنية كبيرة. ويقتطع TOTP/HOTP الناتج إلى 4 بايتات، كما تقتطع TLS MACs نواتجها. لا تقتطعوا الناتج أبدًا إلى أقل من 80 بتًا (10 بايتات).

HMAC في سياقات مختلفة

تُستخدم HMAC-SHA256 في: - TOTP: رموز المصادقة (تُقتطع إلى 6 أرقام) - TLS 1.2: رموز MAC للجلسات (ليست مطلوبة في TLS 1.3 مع AEAD) - JWTs: توقيع HS256 (متماثل) - توقيع طلبات API: خطافات GitHub على الويب وAWS SigV4

HKDF: اشتقاق المفاتيح المعتمد على HMAC

يستخدم HKDF(IKM, salt, info, L) دالة HMAC مرتين: 1. الاستخراج: PRK = HMAC-SHA256(salt, IKM) 2. التوسيع: OKM = HMAC-SHA256(PRK, info || counter) ويُستخدم في جدول اشتقاق المفاتيح في TLS 1.3، وفي Signal وWireGuard لاشتقاق المفاتيح.

تحقق سريع

ما الغرض من opad (المكرر 0x5C) في HMAC؟

مراجعة

لقد فهمتم بناء HMAC وبرهانه. سنطبّق HMAC بعد ذلك على توقيع طلبات API، ونرى كيفية منع هجمات إعادة الإرسال.

الأسئلة الشائعة

هل درس «بنية HMAC وبرهان الأمان» مجاني؟

نعم — نص درس «بنية HMAC وبرهان الأمان» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Cryptology Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Cryptology Academy 4 دروس في المجموع.

ماذا ستتعلم في «بنية HMAC وبرهان الأمان»؟

تتبّع بنية ipad/opad وخصائصها الأمنية تتمرن على Cryptology Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Cryptology Academy؟

لا تُشترط خبرة سابقة. Cryptology Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.

كم من الوقت يستغرق درس «بنية HMAC وبرهان الأمان»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Cryptology Academy هذا؟

نعم. كل درس في Cryptology Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. مفاهيم MAC وهجمات تمديد الطول
  2. بنية HMAC وبرهان الأمان
  3. HMAC في واجهات API: توقيع الطلبات
  4. CMAC وPoly1305: رموز MAC المعتمدة على تشفير الكتل
← العودة إلى Cryptology Academy