إم دي5
خوارزمية أم دي 5 أو خوارزمية هضم الرسالة الخامسة هي دالة الاختزال المسمّاة دالة هاش تشفيرية (Message Digest) والتي تُعتبر من أكثر دوال الاختزال انتشارًا في علم التشفير وأمن المعلومات نظرًا لسهولة تنفيذها وصعوبة اختراقها. يشمل ذلك نظرة سريعة على أهميّتها، طريقة تطويرها من النظريّة التي تتّبعها ومُخرجاتها، والنسخ السابقة لها إم دي2, إم دي4 المطوّرة في مختبرات إم آي تي MIT عن طريق الدكتور رونالد ريفست.
يُفرّق أيضًا بين MD5 وبقيّة دوال الاختزال عن طريق أبرز خصائصها التقنيّة ومميّزاتها، ثُم يوضّح بشيءٍ من التفصيل خطوات تنفيذها بدءًا من طريقة الاختزال، مرورًا بالجولات الأربع انتهاءً باختزال الرسالة الأصليّة إلى شكلها النهائيّ.
وأخيرًا يُلقي هذا المقال نظرة سريعة على عيوب ونقاط ضعف هذه الدالّة نسبةً إلى ثباتها أمام محاولات الاختراق، وسلسلة محاولات الكسر الناجحة التي حصلت عليها مُنذ بداية تطويرها.
تُعد دالة هاش تشفيرية (Message Digest) من أكثر دوال الاختزال انتشارًا، وقد صُمّمت في نسختها الأوليّة (MD2) عام 1989م عن طريق الدكتور رونالد ريفست أستاذ الحاسب في معهد ماساتشوستس للتقنية (MIT)، وتم تطويرها إلى نسخة (MD5) عن طريق مطوّرها نفسه عام 1991م بعد أن تمّت دراسة خواصّ الأمن فيها وتغطية ثغرات سابقتها لفترة طويلة.
تستخدم MD5 دالّة ميركل ديمقارد (Merkle–Damgård construction)، وتقوم على اختزال رسالة ذات طول متغيّر إلى طول ثابت هو 128 بت بغضّ النظر عن طولها الأصليّ، حيث يتم تحويل الرسالة إلى حزم (blocks) طول كُلّ منها 512 بت بغرضِ اختزالها في خطواتٍ لاحقة. من الجدير بالذكر أنّ أي تغيير مهما كان حجمه في النصّ الأصليّ يُنتج قيمة اختزال مختلفة تمامًا عن القيمة السابقة، أو هو ما تحاول الدالّة تحقيقه خلاص
تتميّز MD5 عن غيرها من دوال الاختزال في عدّة نقاط:
1.سهلة التنفيذ وقليلة التكلفة.
2.تُوفّر مخرجًا مختلفًا لكلّ مدخل مهما صغر الفرق بينهم وهو ما يُسمّى بالبصمة (Fingerprint).
jkjhk
3.استحالة الرّجوع من قيمة الاختزال إلى الرسالة الأصليّة.
خطوات اختزال النصوص عن طريق MD5 هي:
1. إضافة الحشو (Padding): في هذه الخُطوة نقوم بإسناد أجزاء (bits) إضافيّة للنّص الأصليّ، ويتم ذلك في مرحلتين:
أ. نبدأ بإضافة 1 ثُم نملأ البقيّة بالأصفار حتّى يصبح طول الرسالة منسجمًا مع 448 % 512 (أي أننا نُضيف حتّى يُصبح الطّول أقل ب 64 بت من أن يقبل القسمة على 512).
ب. إضافة طول الرسالة: 64 بت تُضاف لنهاية الرسالة تُحدّد طولها الأصليّ بالبايات (Bytes) بعد تحويل الرقم إلى صيغته الثنائيّة (Binary).
في حال كانت الرسالة طويلة جدًا وكان التمثيل الثنائي لعددها أكثر من 64 بت، فإنّ الأجزاء ذات الترتيب المنخفض (low-order bits) هي التي تُستخدم فقط.
بعد هذه الخطوة يُصبح طول الرسال 512 س، حيث س هو أي عدد موجب.
2. التقسيم (Partition): يتم في هذه الخطوة تقسيم الرسالة إلى حزم طول كل حزمة منها 512 بت.
3. تعريف المساحة التخزينيّة (Initialize MD Buffer): يتم فيها تعريف مساحة بطول 4 كلمات (four-word buffer) طول كل واحدة منها 32 بت، تُعرّف مسبقًا بالقيم التالية:
A: 01 23 45 67
B: 89 ab cd ef
C: fe dc ba 98
D: 76 54 32 10
4. التنفيذ (Processing): ابتداءً نُعرّف 4 دوال مساعدة تأخذ كل منها مدخلاً مكوّنًا من 3 كلمات، كل كلمة عبارة عن 32 بت، وتُخرج كلمة واحدة مكوّنة من 32 بت أيضًا.
F(X,Y,Z) = XY v not(X) Z
G(X,Y,Z) = XZ v Y not(Z)
H(X,Y,Z) = X xor Y xor Z
I(X,Y,Z) = Y xor (X v not(Z))
تمرّ كل حزمة من البيانات بِأربع جولات (4 rounds) متتالية، تتكوّن كل جولة منها من 16 خطوة. نستخدم في كل خطوة جدولاً مُكوّنًا من 64 خانة T[1 ... 64] يتم حسابها عن طريق دالّة sine وتساوي T[i]= 4294967296 times aps(Sin(i)) حيث تحسب i بالراديان.
نقوم بتطبيق المعادلة التالية في كل خطوة:
a = b + ((a + g(b,c,d) + X[k] + T[i]) «علم التوقيع الرقمي (Digital Signature):
هي ملفّات تُرسل مع الرسائل المُشفّرة أو غير المشفّرة بغرض إثبات هويّة المُرسل، حيث تضمن لنا ألاّ يقوم الأشخاص غير المخوّلون بانتحال شخصيّة أخرى موثوقة.
ونظرًا لكون التواقيع الرقميّة تعتبر معرّفات لمستخدمها؛ فإنه ينبغي أن نضمن عدم وجود أكثر من توقيع يملك الرّقم ذاته، وهذه إحدى المشاكل التي تواجه علم الاختزال ويُطلق عليها مشكلة يوم الميلاد.
تضمن MD5 تفرّد قيمة الاختزال في مجال قدره 2^64 والذي عُدّ رقمًا مناسبًا لاستخدام التواقيع الرقمية حتّى تم اختراقها.
3. كلمة المرور (استيقان) (Password): (Authentication)
من أجل الحفاظ على خصوصيّة المستخدمين، سواءً في الشركات أو الأجهزة الشخصيّة، فإنّ كلمات المُرور تُخزّن مُختزلة في قاعدة البيانات للحدّ من استفادة الشخص المُخترق منها إن أمكنه الوصول إليها، وتُعتبر MD5 أكثر دوال الاختزال استخدامًا في مجال كلمة المرور وتعريف المستخدم في الوقت الحاليّ.
جرت الكثير من المحاولات لكسر هذه الخوارزمية عن طريق brute force attack على سبيل المثال، ولكن باء أكثرُها بالفشل بينما نجح البعض منها نجاحًا جُزئيًا حتى تم اختراقها وأُعلن أنّه يجب إيقاف استخدامها للملفّات المهمة والتواقيع الرقميّة في السنوات القريبة الماضية:
1. في عام 2004 استطاع العالمان Xiaoyun Wang و Hongbo Yu إيجاد تصادم في هذه الخوارزميّة، عن طريق إيجاد حزمتين مختلفتين تصلان لنفس قيمة الاختزال، وقد تم نشرها في ورقة بحث بعنوان: كيفيّة خرق MD5 ودوال الاختزال الأخرى
2. في عام 2007 طوّر مارك ستيفنز في رسالته الماجستير طريقة لاختراق MD5 عُرفت باسم: اصطدام البادئة المُختارة (chosen-prefix collisions)، تستغرق ما بين 15 إلى ساعة لتصنيع الاصطدام في أجهزة الكمبيوتر العاديّة.