إم دي5
خوارزمية أم دي 5 أو خوارزمية هضم الرسالة الخامسة (بالإنجليزية: Message Digest MD5 algorithm) هي دالة الاختزال المسمّاة دالة تلبيد معمى (Message Digest) والتي تُعتبر من أكثر دوال الاختزال انتشارًا في علم التعمية وأمن المعلومات نظرًا لسهولة تنفيذها وصعوبة اختراقها. يشمل ذلك نظرة سريعة على أهميّتها، طريقة تطويرها من النظريّة التي تتّبعها ومُخرجاتها، والنسخ السابقة لها إم دي2, إم دي4 المطوّرة في مختبرات إم آي تي MIT عن طريق الدكتور رونالد ريفست. يُفرّق أيضًا بين MD5 وبقيّة دوال الاختزال عن طريق أبرز خصائصها التقنيّة ومميّزاتها، ثُم يوضّح بشيءٍ من التفصيل خطوات تنفيذها بدءًا من طريقة الاختزال، مرورًا بالجولات الأربع انتهاءً باختزال الرسالة الأصليّة إلى شكلها النهائيّ. وأخيرًا يُلقي هذا المقال نظرة سريعة على عيوب ونقاط ضعف هذه الدالّة نسبةً إلى ثباتها أمام محاولات الاختراق، وسلسلة محاولات الكسر الناجحة التي حصلت عليها مُنذ بداية تطويرها.
MD5 أو خوارزمية خلاصة الرسالة 5 (Message-Digest 5)
[عدل]تُعد دالة هاش تشفيرية (Message Digest) من أكثر دوال الاختزال انتشارًا، وقد صُمّمت في نسختها الأوليّة (MD2) عام 1989م عن طريق الدكتور رونالد ريفست أستاذ الحاسب في معهد ماساتشوستس للتقنية (MIT)، وتم تطويرها إلى نسخة (MD5) عن طريق مطوّرها نفسه عام 1991م بعد أن تمّت دراسة خواصّ الأمن فيها وتغطية ثغرات سابقتها لفترة طويلة. تستخدم MD5 دالّة ميركل ديمقارد (Merkle–Damgård construction)، وتقوم على اختزال رسالة ذات طول متغيّر إلى طول ثابت هو 128 بت بغضّ النظر عن طولها الأصليّ، حيث يتم تحويل الرسالة إلى حزم (blocks) طول كُلّ منها 512 بت بغرضِ اختزالها في خطواتٍ لاحقة. من الجدير بالذكر أنّ أي تغيير مهما كان حجمه في النصّ الأصليّ يُنتج قيمة اختزال مختلفة تمامًا عن القيمة السابقة، أو هو ما تحاول الدالّة تحقيقه خلاص
خواص خوارزميّة التشفير MD5
[عدل]تتميّز MD5 عن غيرها من دوال الاختزال في عدّة نقاط:
1.سهلة التنفيذ وقليلة التكلفة.
2.تُوفّر مخرجًا مختلفًا لكلّ مدخل مهما صغر الفرق بينهم وهو ما يُسمّى بالبصمة (Fingerprint). jkjhk 3.استحالة الرّجوع من قيمة الاختزال إلى الرسالة الأصليّة.
خطوات عمل خوارزميّة التشفير MD5
[عدل]![](http://upload.wikimedia.org/wikipedia/commons/thumb/a/a5/MD5_algorithm.svg/220px-MD5_algorithm.svg.png)
![left shift](http://upload.wikimedia.org/wikipedia/commons/e/e1/Lll.png)
![الجمع](http://upload.wikimedia.org/wikipedia/commons/7/75/Boxplus.png)
![](http://upload.wikimedia.org/wikipedia/commons/thumb/3/38/Md5_generalview.png/220px-Md5_generalview.png)
خطوات اختزال النصوص عن طريق 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]) <<<s)
حيث أنّ:
g هي إحدى الدّوال المساعدة سابقة الذكر.
العمليّة + هي عمليّة الجمع % 2^32 (=% 4294967296)
a,b,c,d هي المساحات التخزينيّة المعرفة، وتُستخدم بترتيب محدّد في كل خطوة.
<<<s هي مقدار واتجاه الإزاحة (shifting)؛ إزاحة إلى اليسار بمقدار s.
X[k] = M[i*16+k] حيث k تتغيّر من 0 .. 15 في كل خطوة.
تُطبّق هذه المعادلة 16 مرّة في كل جولة، ثُم تكون مُدخلاً للجولة القادمة وهكذا.
5. المُخرجات (Output):
تُخرج هذه الدالّة المخرجات في A,B,C,D بالترتيب ابتداءً بالبت الأقل رتبة في A إلى الأعلى رتبة في D.
تطبيقات خوارزمية التشفير MD5
[عدل]1. التأكيد على صحّة الملفّات (Data Integrity):
أحد أبرز أهداف دوال الاختزال بشكل عام التأكد من صحّة الملفّات المستلمة عن طريق قنوات الإرسال غير الآمنة، تعمل دالّة MD5 مثل نظيراتها من دوال التشفير على اختزال كامل الرسالة إلى قيمة اختزال نهائيّة، ترسل مع الرسالة فتُمكّن المستقبل عند اختزاله الرسالة مُجدّدًا بعد استلامها من التأكّد من كونها لم تُعدّل أو تعطب في الطريق.
2. علم التوقيع الرقمي (Digital Signature):
هي ملفّات تُرسل مع الرسائل المُشفّرة أو غير المشفّرة بغرض إثبات هويّة المُرسل، حيث تضمن لنا ألاّ يقوم الأشخاص غير المخوّلون بانتحال شخصيّة أخرى موثوقة. ونظرًا لكون التواقيع الرقميّة تعتبر معرّفات لمستخدمها؛ فإنه ينبغي أن نضمن عدم وجود أكثر من توقيع يملك الرّقم ذاته، وهذه إحدى المشاكل التي تواجه علم الاختزال ويُطلق عليها مشكلة يوم الميلاد.
تضمن MD5 تفرّد قيمة الاختزال في مجال قدره 2^64 والذي عُدّ رقمًا مناسبًا لاستخدام التواقيع الرقمية حتّى تم اختراقها.
3. كلمة المرور (استيقان) (Password): (Authentication)
من أجل الحفاظ على خصوصيّة المستخدمين، سواءً في الشركات أو الأجهزة الشخصيّة، فإنّ كلمات المُرور تُخزّن مُختزلة في قاعدة البيانات للحدّ من استفادة الشخص المُخترق منها إن أمكنه الوصول إليها، وتُعتبر MD5 أكثر دوال الاختزال استخدامًا في مجال كلمة المرور وتعريف المستخدم في الوقت الحاليّ.
كسر خوارزمية التشفير MD5
[عدل]جرت الكثير من المحاولات لكسر هذه الخوارزمية عن طريق brute force attack على سبيل المثال، ولكن باء أكثرُها بالفشل بينما نجح البعض منها نجاحًا جُزئيًا حتى تم اختراقها وأُعلن أنّه يجب إيقاف استخدامها للملفّات المهمة والتواقيع الرقميّة في السنوات القريبة الماضية:
1. في عام 2004 استطاع العالمان Xiaoyun Wang و Hongbo Yu إيجاد تصادم في هذه الخوارزميّة، عن طريق إيجاد حزمتين مختلفتين تصلان لنفس قيمة الاختزال، وقد تم نشرها في ورقة بحث بعنوان: كيفيّة خرق MD5 ودوال الاختزال الأخرى [1]
2. في عام 2007 طوّر مارك ستيفنز في رسالته الماجستير طريقة لاختراق MD5 عُرفت باسم: اصطدام البادئة المُختارة (chosen-prefix collisions)، تستغرق ما بين 15 إلى ساعة لتصنيع الاصطدام في أجهزة الكمبيوتر العاديّة.
مراجع
[عدل]- ^ Xiaoyun Wang and Hongbo Yu. "How to Break MD5 and Other Hash Functions" (PDF). مؤرشف من الأصل (PDF) في 2018-03-29. اطلع عليه بتاريخ 2009-12-21.