مولّد HMAC
توليد HMAC
ولّد وتحقق من توقيعات HMAC بثماني خوارزميات، وخيارات ترميز للمفتاح والرسالة، ودعم للملفات. معالجة 100% من جانب العميل.
ما هو مولّد HMAC؟
يحسب مولّد HMAC رمز مصادقة الرسالة القائم على التجزئة (HMAC) عن طريق دمج رسالة مع مفتاح سري باستخدام دالة تجزئة تشفيرية. وعلى عكس التجزئة البسيطة، يتغير الناتج تمامًا إذا تغيّرت الرسالة أو المفتاح، مما يثبت أن البيانات سليمة وأنها صادرة عن جهة تملك المفتاح. تُنفَّذ عملية حساب HMAC بالكامل داخل متصفحك، بحيث يمكنك توليد التوقيعات والتحقق منها لواجهات API والويب هوك والرموز المميزة دون إرسال سرّك إلى أي مكان.
كيفية استخدام مولّد HMAC هذا
توليد توقيع HMAC يستغرق ثوانٍ معدودة:
كيف تُحسب توقيعات HMAC
يقوم HMAC بحشو المفتاح السري ليطابق حجم كتلة دالة التجزئة، ثم يجمعه مع الرسالة عبر مرحلتين من دالة التجزئة الأساسية. تطبّق المرحلة الداخلية عملية XOR على المفتاح مع قيمة حشو داخلية ثابتة وتجزئه مع الرسالة؛ وتطبّق المرحلة الخارجية عملية XOR على المفتاح مع قيمة حشو مختلفة وتجزئه مع نتيجة المرحلة الداخلية.
هذا البناء المتداخل هو ما يحمي HMAC من هجمات امتداد الطول التي تؤثر على تجزئات بسيطة مثل SHA-256 عند استخدامها بمفردها. وهو معرّف رسميًا في RFC 2104 ويُستخدم في كل مكان، من مصافحات TLS إلى طلبات API الموقّعة.
HMAC مقابل التجزئة البسيطة
تحوّل دالة تجزئة بسيطة مثل MD5 أو SHA-256 أي مُدخَل إلى بصمة ذات حجم ثابت، لكن يمكن لأي شخص إعادة حساب تلك البصمة، لذا فهي تثبت فقط أن البيانات لم تتلف. يضيف HMAC مفتاحًا سريًا إلى الحساب، بحيث لا يستطيع إنتاج قيمة مطابقة أو التحقق منها إلا من يعرف المفتاح.
هذه الخطوة الإضافية تحوّل التجزئة إلى رمز مصادقة رسالة: إثبات للسلامة وإثبات أن الموقّع يملك السر المشترك. إذا كنت تحتاج فقط إلى اكتشاف الملفات التالفة، فاستخدم مولّد التجزئة؛ أما إذا كنت تحتاج إلى مصادقة رسالة بين طرفين، فإن HMAC هو الأداة المناسبة.
جميع خوارزميات HMAC التي يدعمها هذا المولّد
يحسب هذا المولّد HMAC باستخدام ثماني دوال تجزئة مختلفة، بما يوازي أو يتفوق على ما تقدمه معظم أدوات HMAC المنافسة:
كقاعدة عامة، استخدم HMAC-SHA256 ما لم يتطلب بروتوكول معين أو نظام قديم خوارزمية أخرى.
الخوارزمية | طول الناتج | حالة الأمان | الأنسب لـ |
|---|---|---|---|
| MD5 | 128 بت | قديمة | التوافق مع الأنظمة القديمة فقط |
| SHA-1 | 160 بت | قديمة | بروتوكولات مهجورة |
| SHA-224 | 224 بت | آمنة | توقيعات SHA-2 مضغوطة |
| SHA-256 | 256 بت | موصى بها | واجهات API، الويب هوك، JWT (HS256) |
| SHA-384 | 384 بت | آمنة | توقيعات SHA-2 عالية الأمان |
| SHA-512 | 512 بت | آمنة | أنظمة 64 بت عالية الأداء |
| SHA3-512 | 512 بت | آمنة | التوقيع الحديث القائم على Keccak |
| RIPEMD-160 | 160 بت | قديمة | أنظمة مصرفية / PGP قديمة |
HMAC-SHA256: المعيار الحديث
يُعد HMAC-SHA256 الخيار الافتراضي لتوقيع الويب هوك وطلبات API لدى شركات مثل Stripe وGitHub وShopify، وهو أيضًا الخوارزمية وراء توقيع HS256 المستخدم في معظم رموز JSON Web Tokens.
يوفّر هامش أمان قويًا، ودعمًا واسعًا من المكتبات، وناتجًا سداسي عشريًا من 64 حرفًا قصيرًا بما يكفي ليتناسب مع رؤوس HTTP بسهولة.
SHA3-512: البديل القائم على Keccak
يستخدم SHA-3 تصميمًا داخليًا مختلفًا تمامًا (Keccak) عن عائلة SHA-2، لذا فإن توقيع HMAC-SHA3 لا يشارك أي نقاط ضعف بنيوية قد تُكتشف يومًا ما في SHA-256 أو SHA-512.
اختره عندما يتطلب بروتوكول ما عائلة SHA-3 تحديدًا، أو عندما ترغب في تنويع الخوارزميات جنبًا إلى جنب مع توقيع SHA-2 موجود.
MD5 وSHA-1 وRIPEMD-160: خوارزميات قديمة
لا يزال HMAC-MD5 وHMAC-SHA1 يُعتبران آمنين تشفيريًا كرموز لمصادقة الرسائل، على عكس MD5 أو SHA-1 المجرّدَين، لأن المفتاح السري يخفف من هجمات التصادم المعروفة على دالة التجزئة الأساسية.
ومع ذلك، توصي معظم الإرشادات الحالية بالانتقال إلى SHA-256 أو أقوى في الأنظمة الجديدة، وقد أُدرجت هذه الصيغ هنا أساسًا للتحقق أو للتوافق مع واجهات برمجة تطبيقات أقدم.
احسب كل الخوارزميات دفعة واحدة
بدّل وضع النتيجة إلى "كل الخوارزميات" لتوليد جميع صيغ HMAC الثمانية لنفس الرسالة والمفتاح بنقرة واحدة، وهو مفيد عند اختبار الخوارزمية التي تتوقعها واجهة برمجة تطبيقات قديمة.
يمكن نسخ كل نتيجة على حدة، أو استخدم "نسخ الكل" للحصول على جميع التوقيعات دفعة واحدة.
ترميز المفتاح والرسالة: UTF-8 وHex وBase64
تتعامل معظم واجهات API مع المفتاح السري كنص UTF-8 عادي، لكن بعضها يصدر المفاتيح كسلاسل سداسية عشرية أو Base64، والتوقيع بترميز خاطئ هو السبب الأكثر شيوعًا لعدم تطابق HMAC المحسوب مع ما يتوقعه الخادم. يتيح لك هذا المولّد تحديد كيفية تفسير كل من المفتاح والرسالة بدقة قبل التجزئة.
إذا ذكرت وثائق مزوّد الخدمة أن المفتاح "مُرمَّز بصيغة base64"، فاختر Base64 لترميز المفتاح بدلاً من تجزئة سلسلة Base64 الحرفية كنص UTF-8؛ فكلاهما ينتج توقيعين مختلفين تمامًا.
اختيار صيغة الناتج: Hex مقابل Base64
الناتج السداسي العشري أطول لكنه سهل القراءة والمقارنة بالعين، وهو الصيغة التي تستخدمها معظم أدوات التصحيح وأمثلة التوثيق. أما ناتج Base64 فهو أقصر بنسبة 25% تقريبًا، وهو أمر مهم عندما يجب أن يتناسب التوقيع مع رأس HTTP مثل Authorization أو X-Signature.
استخدم الصيغة التي يتوقعها النظام المستقبِل؛ يمكن لهذا المولّد إنتاج hex بأحرف صغيرة أو كبيرة أو Base64 دون إعادة أي حساب.
أنشئ HMAC لملف
بدّل إلى تبويب الملف لحساب HMAC على البايتات الخام لملف بدلاً من نص مكتوب، وهذا مفيد لتوقيع التنزيلات، أو التحقق من حزم البرامج، أو مصادقة الملفات المرفوعة قبل وصولها إلى الخادم.
لا يغادر الملف جهازك أبدًا: تتم قراءته وتجزئته محليًا في متصفحك ثم يُتجاهل.
تحقق من توقيع HMAC وقارنه
الصق قيمة HMAC التي تلقيتها في حقل المقارنة، وستتحقق منها هذه الأداة مقابل التوقيع الذي حسبته للتو، حتى تتمكن من تأكيد أن حمولة الويب هوك أو استجابة API أصلية دون كتابة أي كود.
في وضع "كل الخوارزميات"، تتحقق المقارنة من جميع الصيغ دفعة واحدة، وهو أمر مفيد عندما لا تكون متأكدًا من دالة التجزئة التي استخدمها المرسل.
حالات استخدام شائعة لـ HMAC
يظهر HMAC في أي مكان يحتاج فيه طرفان إلى الوثوق برسالة دون كشف السر الذي يحميها:
توقيع طلبات API
تقوم خدمات مثل AWS وStripe والعديد من واجهات REST API بتوقيع كل طلب باستخدام HMAC حتى يتمكن الخادم من التأكد من أنه لم يُعدَّل أو يُزوَّر أثناء النقل.
التحقق من الويب هوك
تُرفق معالجات الدفع ومنصات SaaS رأس توقيع HMAC بحمولات الويب هوك، مما يسمح لنقطة النهاية لديك برفض أي شيء لم يصدر عن الخدمة الحقيقية.
رموز JSON Web Tokens (HS256)
خوارزمية HS256 المستخدمة في العديد من رموز JWT هي في الواقع HMAC-SHA256، وتوقّع رأس الرمز وحمولته باستخدام سر على جانب الخادم.
نقل آمن للملفات والبيانات
غالبًا ما تُرفق الأنظمة التي تتبادل الملفات أو النسخ الاحتياطية توقيع HMAC حتى يتمكن المستلم من اكتشاف أي تلاعب أو تلف قبل الوثوق بالمحتوى.
أفضل ممارسات أمان HMAC
بعض العادات تحافظ على موثوقية توقيعات HMAC:
استخدم مفتاحًا سريًا طويلاً وعشوائيًا
المفتاح القصير أو المتوقع يقوّض أمان HMAC بغض النظر عن الخوارزمية؛ ولّد المفاتيح من مصدر عشوائي آمن تشفيريًا، ويُفضّل أن يكون طوله مساويًا لطول ناتج دالة التجزئة على الأقل.
فضّل SHA-256 أو أقوى
اقصر استخدام MD5 وSHA-1 وRIPEMD-160 على التوافق مع الأنظمة القائمة، واجعل HMAC-SHA256 أو HMAC-SHA512 الخيار الافتراضي في عمليات الدمج الجديدة.
بدّل المفاتيح دوريًا
عامل أسرار HMAC معاملة كلمات المرور: بدّلها بشكل دوري، وفورًا إذا كان من المحتمل أن يكون أحد المفاتيح قد تعرّض للكشف.
قارن التوقيعات بزمن ثابت
عند التحقق من قيم HMAC على الخادم، استخدم دالة مقارنة بزمن ثابت لتجنب تسريب معلومات التوقيت التي قد تساعد مهاجمًا على تخمين التوقيع الصحيح.
الأمان من جانب العميل والأدوات ذات الصلة
جميع العمليات الحسابية في هذه الصفحة، بما في ذلك توليد HMAC وتحليل المفاتيح وتجزئة الملفات، تُنفَّذ محليًا داخل متصفحك باستخدام JavaScript. رسالتك ومفتاحك السري وأي ملف تقوم برفعه لا تُرسل أبدًا إلى خوادمنا أو إلى أي طرف ثالث.
الأسئلة الشائعة (FAQ)
أسئلة مكررة