هجوم تمديد الطول
في علم التشفير وأمن الحاسوب ، يُعدّ هجوم تمديد الطول نوعًا من الهجمات التي يستطيع فيها المهاجم استخدام دالة التجزئة ( الرسالة 1 ) وطول الرسالة 1 لحساب دالة التجزئة ( الرسالة 1 ‖ الرسالة 2 ) لرسالة 2 يتحكم بها المهاجم ، دون الحاجة إلى معرفة محتوى الرسالة 1. يُصبح هذا الأمر إشكاليًا عندما تُستخدم دالة التجزئة كرمز مصادقة للرسالة باستخدام البنية Hash ( السر ‖ الرسالة )، [ 1 ] حيث يكون طول السر معروفًا، إذ يُمكن للمهاجم إضافة معلومات إضافية في نهاية الرسالة وإنتاج دالة تجزئة صالحة دون معرفة السر. تُعدّ خوارزميات مثل MD5 و SHA-1 ومعظم خوارزميات SHA-2 ، التي تعتمد على بنية Merkle-Damgård، عرضةً لهذا النوع من الهجمات. [ 1 ] [ 2 ] [ 3 ] النسخ المختصرة من SHA-2، بما في ذلك SHA-384 و SHA-512/256، غير قابلة للاختراق، [ 4 ] وكذلك خوارزمية SHA-3 . [ 5 ] يستخدم HMAC أيضًا بنية مختلفة، وبالتالي فهو غير عرضة لهجمات تمديد الطول. [ 6 ] لا يُعدّ رمز مصادقة الرسائل (MAC) ذو اللاحقة السرية، والذي يُحسب كـ Hash ( message ‖ secret )، عرضة لهجوم تمديد الطول، ولكنه عرضة لهجوم آخر يعتمد على تصادم التجزئة. [ 7 ]
توضيح
تعمل دوال التجزئة المعرضة للاختراق عن طريق أخذ الرسالة المدخلة، واستخدامها لتحويل حالة داخلية. بعد معالجة جميع المدخلات، يتم توليد ملخص التجزئة من خلال إخراج الحالة الداخلية للدالة. من الممكن إعادة بناء الحالة الداخلية من ملخص التجزئة، والذي يمكن استخدامه بعد ذلك لمعالجة البيانات الجديدة. بهذه الطريقة، يمكن توسيع الرسالة وحساب التجزئة التي تمثل توقيعًا صالحًا للرسالة الجديدة.
مثال
يمكن إنشاء خادم لتوصيل الفطائر من نوع محدد إلى مستخدم معين في موقع محدد، وذلك للتعامل مع الطلبات ذات التنسيق المحدد:
البيانات الأصلية: count=10&lat=37.351&user_id=1&long=-119.827&waffle=eggo التوقيع الأصلي: 6d5f807e23db210bc254a28be2d6759a0f5f5d99
لن يقوم الخادم بتنفيذ الطلب المُعطى (توصيل عشر قطع وافل من نوع إيغو إلى الموقع المُحدد للمستخدم "1") إلا إذا كان التوقيع صالحًا للمستخدم. التوقيع المُستخدم هنا هو رمز مصادقة الرسائل (MAC) ، مُوقّع بمفتاح غير معروف للمهاجم. [ ملاحظة 1 ]
من الممكن للمهاجم تعديل الطلب في هذا المثال عن طريق تغيير نوع الوافل المطلوب من " eggo " إلى " liege ". ويمكن القيام بذلك باستغلال مرونة تنسيق الرسالة، حيث يُفضّل المحتوى المكرر في سلسلة الاستعلام القيمة الأخيرة. ولا تُشير هذه المرونة إلى وجود ثغرة أمنية في تنسيق الرسالة، لأن هذا التنسيق لم يُصمم أصلًا ليكون آمنًا تشفيريًا، دون وجود خوارزمية التوقيع التي تُعزز أمانه.
البيانات الجديدة المطلوبة: count=10&lat=37.351&user_id=1&long=-119.827&waffle=eggo &waffle=liege
لتوقيع هذه الرسالة الجديدة، يحتاج المهاجم عادةً إلى معرفة المفتاح المستخدم في التوقيع، ثم توليد توقيع جديد عن طريق إنشاء رمز مصادقة رسالة جديد. مع ذلك، في هجوم تمديد الطول، يُمكن إدخال قيمة التجزئة (التوقيع المذكور أعلاه) في حالة دالة التجزئة، ومتابعة العملية من حيث توقفت في الطلب الأصلي، طالما أن طول الطلب الأصلي معروف. في هذا الطلب، كان طول المفتاح الأصلي 14 بايت، وهو ما يمكن تحديده بتجربة طلبات مزورة بأطوال افتراضية مختلفة، والتحقق من الطول الذي ينتج عنه طلب يقبله الخادم على أنه صالح.
غالبًا ما تُضاف بيانات إضافية إلى الرسالة المُدخلة إلى دالة التجزئة ، لأن العديد من الخوارزميات لا تعمل إلا مع الرسائل التي يكون طولها من مضاعفات حجم مُحدد. ويُحدد محتوى هذه البيانات الإضافية دائمًا بواسطة دالة التجزئة المُستخدمة. يجب على المُهاجم تضمين جميع بتات البيانات الإضافية هذه في رسالته المُزوّرة حتى تتطابق الحالة الداخلية لرسالته مع الرسالة الأصلية. وبالتالي، يُنشئ المُهاجم رسالة مُختلفة قليلًا باستخدام قواعد البيانات الإضافية هذه:
بيانات جديدة: العدد=10&خط العرض=37.351&معرف المستخدم=1&خط الطول=-119.827&waffle=eggo \x80\x00 \x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 \x00\x00\x00\x02\x28&waffle=liege
تتضمن هذه الرسالة جميع الحشو الذي أُضيف إلى الرسالة الأصلية داخل دالة التجزئة قبل حمولتها (في هذه الحالة، 0x80 متبوعًا بعدد من 0x00 وطول الرسالة، 0x228 = 552 = (14+55)*8، وهو طول المفتاح مضافًا إليه طول الرسالة الأصلية في النهاية). يعلم المهاجم أن حالة زوج المفتاح/الرسالة المُجزأة للرسالة الأصلية مطابقة لحالة الرسالة الجديدة حتى علامة "&" الأخيرة. كما يعلم المهاجم أيضًا قيمة التجزئة المُلخصة عند هذه النقطة، مما يعني أنه على دراية بالحالة الداخلية لدالة التجزئة في تلك المرحلة. عندئذٍ، يصبح من السهل تهيئة خوارزمية التجزئة عند تلك النقطة، وإدخال الأحرف الأخيرة، وإنشاء مُلخص جديد يُمكنه من توقيع رسالته الجديدة دون الحاجة إلى المفتاح الأصلي.
التوقيع الجديد: 0e41270260895979317fff3898ab85668953aaa2
من خلال دمج التوقيع الجديد والبيانات الجديدة في طلب جديد، سيرى الخادم الطلب المزور كطلب صالح نظرًا لأن التوقيع هو نفسه الذي كان سيتم إنشاؤه لو كانت كلمة المرور معروفة.
ملحوظات
- ↑ هذا المثال معرض أيضًا لهجوم إعادة الإرسال ، من خلال إرسال نفس الطلب والتوقيع مرة ثانية.
مراجع
- 1 2 فو، هوانغ (30 مارس 2012). "إعادة النظر في هجوم تمديد طول MD5 - السلام الداخلي لفو" . مؤرشف من الأصل في 29 أكتوبر 2014. تم الاسترجاع في 27 أكتوبر 2017 .
- ↑ دوونغ، تاي؛ ريزو، جوليانو (28-09-2009). "ثغرة تزوير توقيع واجهة برمجة تطبيقات فليكر" (ملف PDF) . تم الاطلاع عليه بتاريخ 18-03-2023 .
- ↑ ماير، كريستوفر (30 يوليو 2012). "هجمات تمديد طول التجزئة" . تم الاسترجاع في 27 أكتوبر 2017 .
- ↑ بوستروم، مايكل (29-10-2015). "حجم_t مهم: شرح هجمات تمديد طول التجزئة" (ملف PDF) . تم الاطلاع عليه بتاريخ 23-11-2020 .
- ↑ فريق Keccak. "مزايا Keccak - التصميم والأمان" . تم الاطلاع عليه بتاريخ 27-10-2017 .
على عكس SHA-1 وSHA-2، لا يعاني Keccak من مشكلة امتداد الطول، وبالتالي لا يحتاج إلى بنية HMAC المتداخلة. بدلاً من ذلك، يمكن إجراء حساب MAC ببساطة عن طريق إضافة المفتاح في بداية الرسالة.
- ↑ لوسون، نيت (29-10-2009). "توقف عن استخدام التجزئة المفتاحية غير الآمنة، واستخدم HMAC" . تم الاسترجاع في 27-10-2017 .
- ^ بار ، كريستوف. بيلزل، يناير (2009). فهم التشفير (الطبعة الأولى ). سبرينغر . ص 322 – 324. ISBN 978-3-642-04101-3.
- الهجمات المشفرة
