MD5، SHA-256، SHA-3 أي خوارزمية تشفير تُستخدم حقًا؟
مقارنة مباشرة بين MD5 و SHA-1 و SHA-256 و SHA-3 و BLAKE3 — متى يُستخدم كل خوارزمية، أين تفشل، وما هو الأفضل للاستخدام الافتراضي.
إذا كنت ما زلت تستخدم MD5 بشكل افتراضي، فأنت في مصاف الآخرين — وربما تُتخذ قرارًا خاطئًا. تُنتج جميع دوال التشفير بصمة ثابتة من بياناتك، لكنها ليست قابلة للتعويض. اختيار الخوارزمية الخاطئة يُعدّ إما تجاوزًا مفرطًا أو فشلًا أمنيًا حقيقًا، حسب الاتجاه الذي تُفترض فيه الخطأ.
إليك ما تفعله كل خوارزمية، وأين تفشل، وما الذي ينبغي أن تلجأ إليه بدلًا من ذلك.
ما يفعله دالة التشفير
تُأخذ دالة التشفير مدخلات من أي حجم وتُنتج مخرجات من حجم ثابت — مُحددة، مُوجهة، و(بشكل مثالي) مقاومة للانسجام. يُنتج نفس المدخل نفس التشفير. لا يمكن عكسها. وعند تغيير أي بيت في المدخل، يُغير التخرج تمامًا.
تُعد هذه الخصائص الثلاثة مفيدة لتأكيد سلامة البيانات، وتوقيع المستندات، وبناء مجموعات التحقق. جميع الخوارزميات التالية تفعل ذلك. ما يُميزها هو مدى قوتها في مواجهة الهجمات، وسرعة تشغيلها.
MD5: توقف عن استخدامه في مجال الأمان
تُنتج MD5 بصمة بحجم 128 بت وتُنفذ بسرعة — وهذا هو المشكلة. تم تصميمها في عام 1991، وتم إثبات هجمات الانسجام عليها في عام 2004. اليوم، إنتاج ملفين مختلفين يُنتجان نفس بصمة MD5 هو أمر ممكن بسهولة حسابية.
أين تفشل: أي سياق أمني — التحقق من سلامة الملفات عبر قنوات غير موثوقة، التوقيعات الرقمية، شهادات TLS.
أين تُستخدم بشكل جيد: مراجعات غير متعلقة بالأمن. تقليل تكرار الملفات، إنشاء مفاتيح التخزين، تحليل محتوى داخل نظام تتحكم فيه — MD5 سريعة وكافية. تُصبح التصادمات مهتمة فقط إذا كان المهاجم يمكنه استغلالها.
هل تحتاج إلى إنشاء بصمة MD5 بسرعة؟ استخدم مولد MD5.
SHA-1: مُنهي، لكنه ما زال موجود
تُنتج SHA-1 مخرجات بحجم 160 بت وتُواجه نفس المشكلة الأساسية: هجمات الانسجام مُثبتة. هجوم "SHAttered" من جوجل في عام 2017 أنتج ملفين PDF مختلفين ببصمة SHA-1 متطابقة، بتكاليف تُعتبر الآن ممكنة للهجمات المُتحمسة.
تم توقف استخدامها رسمياً في التوقيعات الرقمية وشهادات TLS. ستجد أنها ما زالت موجودة في Git، حيث تُستخدم كمُعرف محتوى — نموذج التهديد هناك مختلف، ويعمل Git على الانتقال إلى SHA-256 بالفعل.
القاعدة: لا تستخدم SHA-1 في الأعمال الجديدة ذات الصلة بالأمن. اجعلها مُعلنة للانتقال في الأنظمة القديمة.
SHA-256 وSHA-512: المعيار الحالي
يُعد SHA-256 (جزء من عائلة SHA-2) هو الخيار الافتراضي لمعظم التطبيقات التشفيرية. مخرجات بحجم 256 بت، لا توجد هجمات عملية معروفة، مدعومة في كل لغة ونظام تشغيل من المرجح أن تستخدمه.
يستخدم SHA-512 حالة داخليّة بحجم 512 بت ويُنتج مخرجات بحجم 512 بت. على معالجات 64 بت، يكون أسرع من SHA-256 عند معالجة مدخلات كبيرة بسبب طريقة معالجته للحزم. في معظم الأعمال على مستوى التطبيق، يكفي استخدام SHA-256. إذا كنت تُعالج بيانات بكميات كبيرة أو تحتاج إلى مساحة إضافية في توليد المفاتيح، فقم بإجراء اختبار على SHA-512.
أين يجب استخدامه: التحقق من سلامة الملفات، التوقيعات المُتعددة (HMAC)، التوقيعات على الشهادات (باستخدام RSA/ECDSA)، توقيعات طلبات API، توقيعات JWT.
SHA-3: بنية مختلفة، استخدام محدود
تم اختيار SHA-3 (Keccak) من قبل NIST في عام 2015 كخيار بنائي بديل لـ SHA-2. بينما تستخدم SHA-2 بنية Merkle-Damgård، تستخدم SHA-3 بنية "البندول". إذا تم اكتشاف عيب جوهري في بنية SHA-2، فإن SHA-3 لن يتأثر.
تُنتج نفس أحجام المخرجات (SHA3-256، SHA3-512، إلخ) وتُحقق جميع التحليلات الحالية للسلامة، لكنها عادةً أبطأ من SHA-256 في البرمجيات.
أين يجب استخدامه: في الأنظمة المُستمرّة التي تُحتاج فيها استقلالية بنية عن SHA-2 — مثل وحدات الأمان المادية، السياقات الحكومية أو المطابقة، أو أي مكان تُحاول منع ضعف SHA-2 في المستقبل. في معظم التطبيقات الويب، هذا يُعدّ تجاوزًا نظريًا.
BLAKE3: الخيار الحديث للسرعة
لا يُعدّ BLAKE3 معيارًا من NIST بعد (إلا أنّه يُستخدم بشكل واسع): Rust's cargo، صيغة BLAKE3 للتدفق، وقائمة متزايدة من الأدوات الأمنية والتخزين تستخدمه. تم تصميمه للعمل على التوازي، ويُنفذ بسرعة أكبر من SHA-256 في البرمجيات، مع الحفاظ على تحليلات الأمان الحالية.
أين يجب استخدامه: مراجعات عالية الأداء، التعرف على المحتوى، أي مكان تتحكم فيه كلا الطرفين وتحتاج إلى السرعة دون تنازل عن الأمان. تجنب استخدامه في الأماكن التي يُطلب فيها استخدام SHA-2 وفقًا للوائح — مثل شهادات X.509، توقيعات JWT، والسياقات المُحددة.
مُقارنة خوارزميات التشفير
| الخوارزمية | الحالة الأمنية | حجم المخرجات | السرعة (في البرمجيات) | الاستخدام |
|---|---|---|---|---|
| MD5 | مُكسورة (انسجام) | 128 بت | مُستخدمة بسرعة كبيرة | مراجعات غير متعلقة بالأمن، تقليل التكرار |
| شا-1 | مُكسورة (انسجام) | 160 بت | سريع | مُستخدمة فقط في الأنظمة القديمة؛ كمُعرف محتوى في Git |
| شا-256 | يؤمن | 256 بت | سريع | مُستخدمة بشكل عام — الخيار الافتراضي |
| شا-512 | يؤمن | 512 بت | أسرع على 64 بت عند معالجة بيانات كبيرة | في التطبيقات ذات القدرة العالية أو عند الحاجة إلى مساحة إضافية |
| شا-3 | يؤمن | 224–512 بت | أبطأ في البرمجيات | في الأنظمة المُستمرّة التي تُحتاج فيها استقلالية عن SHA-2 |
| BLAKE3 | يؤمن | 256 بت | مُستخدمة بسرعة كبيرة (مُوازية) | مراجعات عالية الأداء للمحتوى |
حساب SHA-256
ثلاث طرق سريعة لحساب بصمة SHA-256:
بايثون:
import hashlib
data = b"hello world"
digest = hashlib.sha256(data).hexdigest()
print(digest)
# Output: b94d27b9934d3e08a52e52d7da7dabfac484efe04294e576fba1d63e8d4d0b4b
نودي جي:
const { createHash } = require('crypto');
const digest = createHash('sha256')
.update('hello world')
.digest('hex');
console.log(digest);
باش:
echo -n "hello world" | sha256sum
هل تحتاج إلى تشفير شيء ما بسرعة دون كتابة كود؟ فإن مولد التشفير يدعم MD5، SHA-1، SHA-256، SHA-512، وغيرها — مباشرة من متصفحك.
مُرشد القرار
| الاستخدام | ما يجب استخدامه |
|---|---|
| تقليل التكرار / مفاتيح التخزين | MD5 أو SHA-256 |
| التحقق من سلامة الملف (قناة موثوقة) | MD5 كافي |
| التحقق من سلامة الملف (تنزيلات، غير موثوقة) | شا-256 |
| التوقيعات الرقمية | SHA-256 أو SHA-512 |
| التوقيعات المُتعددة (HMAC) والتحقق من طلبات API | شا-256 |
| شهادات TLS | شا-256 |
| تخزين كلمات المرور | bcrypt، Argon2، أو scrypt — ليس أي من الأعلى |
| مراجعات عالية الأداء للمحتوى | BLAKE3 |
| الامتثال للوائح | SHA-256 (تحقق من المتطلبات في المواصفة) |
نقطة واحدة يجب توضيحها: لا ينبغي استخدام أي من هذه الخوارزميات مباشرة لتمثيل كلمات المرور. فهي جميعًا سريعة في التصميم، مما يجعلها مفيدة للهجمات المُباشرة. استخدم بحورت، Argon2id، أو scrypt — خوارزميات مصممة لتكون بطيئة ومتطلبة للذاكرة، بالضبط لأن التسريب هو لعبة مُضادة.
الإجابة المختصرة
لأعمال جديدة: استخدم SHA-256 بشكل افتراضي. استخدم SHA-512 إذا كنت بحاجة إلى حجم مخرجات أكبر أو تُعالج مسارات كبيرة على معالجات 64 بت. استخدم BLAKE3 في الحالات التي تحتاج إلى سرعة عالية وتحكم في كلا الطرفين. استخدم SHA-3 فقط إذا كان لديك سبب بنائي للاستقلالية عن SHA-2.
MD5 كافٍ للاستخدام الداخلي في التعرف على الملفات وخفض التكرار حيث لا تكون التصادمات مسألة أمنية. لكنها ليست كافية في أي حالة تُمكن فيها المهاجم من تزييف مطابقة.
عند الشك، استخدم SHA-256. لقد كانت الإجابة الصحيحة منذ عشر سنوات، وستبقى كذلك في المستقبل القريب.
تثبيت ملحقاتنا
أضف أدوات IO إلى متصفحك المفضل للوصول الفوري والبحث بشكل أسرع
恵 وصلت لوحة النتائج!
لوحة النتائج هي طريقة ممتعة لتتبع ألعابك، يتم تخزين جميع البيانات في متصفحك. المزيد من الميزات قريبا!
