مقارنة بين MD5 و SHA-1 و SHA-2: أيها الأكثر أمانًا وكيفية التحقق منها؟

دقائق القراءة: 5

مقدمة إلى دوال التجزئة (Hash Functions)

دالة التجزئة هي خوارزمية رياضية تأخذ مدخلًا (مثل سلسلة نصية أو ملف) وتُنتج قيمة ذات طول ثابت، تُعرف باسم “قيمة التجزئة” أو “البصمة الرقمية”. تُستخدم هذه الدوال في مجموعة واسعة من التطبيقات، بدءًا من التحقق من سلامة البيانات وصولاً إلى أمان التشفير.

الخصائص المثالية لدالة التجزئة

على الرغم من عدم وجود دالة تجزئة مثالية تمامًا، إلا أن الدوال الجيدة تسعى جاهدة لتحقيق الخصائص التالية:

  • السرعة الفائقة: يجب أن تكون قادرة على معالجة المدخلات بسرعة لإنتاج قيمة التجزئة.
  • نطاق واسع للقيم: يجب أن تُنتج مجموعة هائلة من قيم التجزئة المحتملة.
  • التفرد (No Collisions): من الناحية المثالية، يجب أن تُنتج كل مدخلة فريدة قيمة تجزئة فريدة (تجنب التصادمات). هذا أمر حيوي بشكل خاص لدوال التجزئة التشفيرية، حيث تُعتبر التصادمات نقطة ضعف أمنية.
  • عدم التشابه للمدخلات المتشابهة: يجب أن تُنتج قيم تجزئة مختلفة تمامًا حتى للمدخلات المتشابهة جدًا.
  • التوزيع العشوائي: يجب أن تكون قيم التجزئة المُولّدة موزعة بشكل عشوائي وغير متوقع عبر النطاق الكامل للقيم الممكنة.

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

مثال على تأثير تغيير طفيف في المدخلات

لفهم مدى حساسية دوال التجزئة، لنأخذ الجملتين المتشابهتين جدًا التاليتين:

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

عند حساب قيمة التجزئة باستخدام خوارزمية MD5 لكل جملة، نلاحظ اختلافًا جذريًا في النتائج:

1. 2e87284d245c2aae1c74fa4c50a74c77
2. c17b6e9b160cda0cf583e89ec7b7fc22

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

دوال التجزئة الشائعة: نظرة مقارنة

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

MD5 (Message-Digest Algorithm 5)

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

SHA-1 (Secure Hash Algorithm 1)

SHA هو اختصار لـ Secure Hash Algorithm (خوارزمية التجزئة الآمنة). كانت النسخة الأولى من هذه الخوارزمية هي SHA-1، وتلتها لاحقًا SHA-2 (كما سنرى أدناه). بينما تُنتج MD5 تجزئة بطول 128 بت، تُنتج SHA-1 تجزئة بطول 160 بت (20 بايت). في التنسيق السداسي عشري، تكون عبارة عن عدد مكون من 40 رقمًا. مثل MD5، صُممت لتطبيقات التشفير، ولكن سرعان ما وُجدت بها نقاط ضعف أيضًا. اعتبارًا من اليوم، لم تعد تُعتبر أكثر مقاومة للهجوم من MD5.

SHA-2 (Secure Hash Algorithm 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. عند توفر ملف أرشيف وقيمة التجزئة المتوقعة له (التي يُشار إليها عادةً باسم checksum)، يمكنك إجراء حساب التجزئة الخاص بك للتحقق من أن الأرشيف الذي تلقيته كامل وغير تالف.

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

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

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

Get-FileHash tarfile.tar -Algorithm MD5

يمكن نشر قيمة checksum المُولّدة على موقع التنزيل، بجانب رابط تنزيل الأرشيف. يمكن للمستقبل، بمجرد تنزيل الأرشيف، التحقق من وصوله بشكل صحيح عن طريق تشغيل الأمر التالي:

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

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

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

الخلاصة التقنية

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

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *