RevealTheme logo

مولّد التجزئة (MD5 / SHA)

أنشئ تجزئات تشفيرية: MD5 وSHA-1 وSHA-256 وSHA-384 وSHA-512. يعمل في متصفحك عبر Web Crypto API.

ما هي التجزئات التشفيرية ومتى تحتاج إليها؟

دالة التجزئة التشفيرية خوارزمية حتمية تحوّل أي مُدخَل (بضعة بايتات، أو ملف بحجم عدة غيغابايتات، أو ويكيبيديا الإنجليزية بأكملها) إلى مُخرَج ثابت الحجم يُسمى 'الملخّص' (digest) أو 'التجزئة' (hash). يُنتج SHA-256 ‏256 بت (64 حرفًا ست عشريًا)؛ ويُنتج SHA-512 ‏512 بت؛ ويُنتج MD5 ‏128 بت. أربع خصائص تُعرّف التجزئة 'التشفيرية' مقابل غير التشفيرية (مثل CRC32): الحتمية (المُدخَل نفسه ← التجزئة نفسها، دائمًا)، وتأثير الانهيار الجليدي (تغيير بت واحد يغيّر نحو نصف بتّات المُخرَج)، ومقاومة الصورة الأصلية (لا يمكنك عكس التجزئة لاستعادة المُدخَل)، ومقاومة التصادم (لا يمكنك إيجاد مُدخَلين يُنتجان التجزئة نفسها). عندما تنكسر دالة تجزئة، تنهار عادةً هاتان الخاصيتان الأخيرتان: جعلت هجمات التصادم على MD5 (عام 2004) وSHA-1 (عام 2017) كلًّا منهما غير مناسب للأغراض الأمنية، رغم أنهما لا يزالان يصلحان لفحوصات السلامة غير العدائية، مثل المجاميع الاختبارية للملفات. استخدم SHA-256 أو SHA-512 لأي عمل أمني جديد. تستخدم هذه الأداة Web Crypto API الخاصة بالمتصفح (crypto.subtle.digest)، المُسرَّعة عتاديًا على الأجهزة الحديثة، وتُنتج مُخرَجًا مطابقًا بايتًا ببايت لمُخرَج OpenSSL ووحدة hashlib في Python ووحدة crypto في Node.

حالات الاستخدام الشائعة

  • تأكّد من تطابق ملف نزّلته مع قيمة SHA-256 المنشورة من قِبل الناشر (نسخ Linux ISO، وإصدارات أدوات الأمان).

  • ولّد معرّفًا مُعنونًا بالمحتوى لمفاتيح التخزين المؤقت (هاش المحتوى ← عنوان URL ثابت).

  • أنشئ مفتاح إزالة تكرار لتخزين الملفات (تطابق الهاش = ملف مطابق).

  • ابنِ تحقّقًا من توقيع الـ webhook عبر HMAC-SHA256 للحمولة بمفتاح سرّي مشترك.

  • ولّد هاشات محتوى بأسلوب Git (SHA-1 لمعرّفات الشجرة/الكائن).

  • تحقّق من سلامة صفّ في قاعدة البيانات بحساب هاش الأعمدة الأساسية وتخزينه.

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

لماذا أصبح MD5 مهملًا للأغراض الأمنية؟
وجد خبراء التشفير طرقًا لبناء مُدخَلين مختلفين يُنتجان قيمة MD5 نفسها. وبمجرد أن تصبح التصادمات قابلة للإيجاد، يتوقف MD5 عن كونه إشارة سلامة موثوقة في السيناريوهات العدائية (إذ يمكن لأحدهم استبدال ملف وإنشاء آخر بالتجزئة نفسها). أما للمجاميع الاختبارية غير العدائية (هل نُزّل الملف بشكل صحيح؟)، فلا يزال MD5 يؤدي عمله جيدًا؛ وهو غير آمن فقط للتوقيعات الرقمية أو أي شيء يتأثر بمهاجم.
هل يمكن عكس التجزئات؟
ليس مباشرةً: التجزئات التشفيرية دوال أحادية الاتجاه. لكن: (1) للمُدخَلات القصيرة أو منخفضة العشوائية (كلمات المرور، العبارات الشائعة)، يمكن لمهاجم حساب تجزئات كل مُدخَل محتمل مسبقًا (جداول قوس قزح) والبحث عن تجزئتك. لذلك يستخدم تجزئة كلمات المرور أملاحًا (salts) عشوائية فريدة. (2) أما للمُدخَلات ذات الطول العشوائي والعشوائية العالية (المفاتيح العشوائية، محتوى الملفات)، فالعكس غير مجدٍ حسابيًا.
ما الفرق بين SHA-256 و HMAC-SHA256؟
SHA-256 تجزئة بسيطة: يمكن لأي شخص لديه المُدخَل حساب التجزئة نفسها. أما HMAC-SHA256 فتجزئة مفتاحية: تحتاج إلى سر مشترك لحسابها. تستخدم خطافات الويب (webhooks) ‏HMAC لأن المتحقّق يريد معرفة 'هل أنشأ هذا شخص يعرف السر؟'، لا مجرد 'هل تطابق الحمولة قيمة معروفة؟'. استخدم مولّد HMAC لدينا للصيغة المفتاحية.
متى ينبغي أن أستخدم SHA-512 بدلًا من SHA-256؟
لدى SHA-512 بتّات مُخرَج أكثر (512 مقابل 256)، ما يجعل هجمات التصادم أصعب نظريًا. لكن SHA-256 آمن بالفعل بما يتجاوز أي إطار زمني معقول (قوة فعلية ضد التصادمات تبلغ 2^128). وأحيانًا يكون SHA-512 أسرع على عتاد 64 بت بسبب عملياته الداخلية الأوسع. استخدم SHA-256 افتراضيًا؛ واستخدم SHA-512 إذا كان لديك سبب محدد.
لماذا تختلف تجزئة SHA لديّ عن تجزئة أداة أخرى؟
ثلاثة أسباب محتملة: (1) ترميز مُدخَل مختلف: يجب أن تتطابق البايتات التي تُطبَّق عليها التجزئة. UTF-8 أو UTF-16 أو Latin-1 تُنتج تجزئات مختلفة للنص المرئي نفسه. تُرمّز هذه الأداة المُدخَل بصيغة UTF-8. (2) سطر جديد في النهاية: بعض الأدوات تضيف سطرًا جديدًا وأخرى لا تفعل. (3) علامة ترتيب البايتات (BOM): بادئة مخفية من ثلاثة بايتات تضيفها بعض المحرّرات إلى ملفات UTF-8.
هل من الآمن استخدامها مع بيانات حساسة؟
نعم: يجري حساب التجزئة محليًا في متصفحك عبر Web Crypto. لا يغادر المُدخَل جهازك أبدًا. والتجزئات نفسها ليست 'حساسة' بمعنى أنها لا تكشف المُدخَل (بافتراض عشوائية كافية)، لكن إذا حسبت تجزئة بيانات منخفضة العشوائية (مثل كلمات المرور بلا ملح)، فضع في حسبانك أن أي شخص يرى التجزئة قد يتمكن من عكسها عبر جداول قوس قزح.

أدوات ذات صلة