MD5 مقابل SHA-1 مقابل SHA-2 - ما هو تجزئة التشفير الأكثر أمانًا وكيفية التحقق منها

ما هي وظيفة التجزئة؟

تأخذ دالة التجزئة قيمة إدخال (على سبيل المثال ، سلسلة) وتعيد قيمة ذات طول ثابت. و المثل الأعلى وظيفة تجزئة لديه الخصائص التالية:

  • سريع جدا
  • يمكنه إرجاع نطاق هائل من قيم التجزئة
  • يولد تجزئة فريدة لكل إدخال فريد (بدون تصادمات)
  • يقوم بإنشاء قيم تجزئة غير متشابهة لقيم إدخال مماثلة
  • لا تحتوي قيم التجزئة التي تم إنشاؤها على نمط يمكن تمييزه في توزيعها

لا توجد وظيفة تجزئة مثالية ، بالطبع ، ولكن كل منها يهدف إلى العمل بالقرب من المثالية قدر الإمكان. بالنظر إلى أن (معظم) وظائف التجزئة ترجع قيمًا ثابتة الطول وبالتالي يكون نطاق القيم مقيدًا ، يمكن تجاهل هذا القيد عمليًا. عدد القيم الممكنة التي يمكن إرجاعها بواسطة دالة تجزئة 256 بت ، على سبيل المثال ، هو تقريبًا نفس عدد الذرات في الكون.

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

أخيرًا ، يجب أن تولد دالة التجزئة قيم تجزئة مختلفة بشكل غير متوقع لأي قيمة إدخال. على سبيل المثال ، خذ الجملتين التاليتين المتشابهتين جدًا:

1. "The quick brown fox." 2. "The quick brown fax." 

يمكننا مقارنة قيم تجزئة MD5 الناتجة من كل جملة من الجملتين:

1. 2e87284d245c2aae1c74fa4c50a74c77 2. c17b6e9b160cda0cf583e89ec7b7fc22 

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

وظائف التجزئة المشتركة

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

MD5

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

SHA-1

SHA تعني خوارزمية التجزئة الآمنة. كان الإصدار الأول من الخوارزمية هو SHA-1 ، وتبعه لاحقًا SHA-2 (انظر أدناه).

بينما ينتج MD5 تجزئة 128 بت ، ينشئ SHA1 تجزئة 160 بت (20 بايت). في شكل سداسي عشري ، يكون عددًا صحيحًا يتكون من 40 رقمًا. مثل MD5 ، تم تصميمه لتطبيقات التشفير ، ولكن سرعان ما وجد أنه يحتوي على نقاط ضعف أيضًا اعتبارًا من اليوم ، لم يعد يعتبر أقل مقاومة للهجوم من MD5.

SHA-2

يحتوي الإصدار الثاني من SHA ، المسمى SHA-2 ، على العديد من المتغيرات. من المحتمل أن يكون SHA-256 هو الأكثر استخدامًا ، والذي يوصي المعهد الوطني للمعايير والتكنولوجيا (NIST) باستخدامه بدلاً من MD5 أو SHA-1.

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

من ناحية الأداء ، تكون تجزئة SHA-256 أبطأ بحوالي 20-30٪ في الحساب من تجزئات MD5 أو SHA-1.

SHA-3

تم تطوير طريقة التجزئة هذه في أواخر عام 2015 ، ولم يتم استخدامها على نطاق واسع حتى الآن. الخوارزمية الخاصة به لا علاقة لها بالخوارزمية التي استخدمها سابقتها SHA-2.

تعد خوارزمية SHA3-256 متغيرًا مع إمكانية تطبيق مكافئة لتلك الخاصة بـ SHA-256 السابقة ، حيث يستغرق حساب الأول وقتًا أطول قليلاً من الأحدث.

استخدام قيم التجزئة للتحقق من الصحة

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

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

على سبيل المثال ، يمكنني إنشاء مجموع اختباري MD5 لملف tar في Unix باستخدام أوامر الأنابيب التالية:

tar cf - files | tee tarfile.tar | md5sum - 

للحصول على تجزئة MD5 لملف في Windows ، استخدم الأمر Get-FileHash PowerShell:

Get-FileHash tarfile.tar -Algorithm MD5 

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

echo '2e87284d245c2aae1c74fa4c50a74c77 tarfile.tar' | md5sum -c 

حيث 2e87284d245c2aae1c74fa4c50a74c77 هو المجموع الاختباري المُنشأ الذي تم ترحيله . سيؤدي التنفيذ الناجح للأمر أعلاه إلى إنشاء حالة موافق مثل هذا:

echo '2e87284d245c2aae1c74fa4c50a74c77 tarfile.tar' | md5sum -ctarfile.tar: OK