سؤال

من التافه استخدام دالة تجزئة آمنة مثل SHA-256، والاستمرار في استخدام MD5 للأمان هو سلوك متهور.ومع ذلك، هناك بعض التعقيدات المتعلقة بنقاط الضعف في وظيفة التجزئة والتي أود أن أفهمها بشكل أفضل.

وكانت الاصطدامات تم إنشاؤها لـ MD4 وMD5.وفقًا لـ NIST، فإن MD5 ليست دالة تجزئة آمنة.إنها فقط تأخذ 239 عمليات لتوليد الاصطدام ولا ينبغي أبدا أن يكون تستخدم لكلمات المرور.ومع ذلك، فإن SHA-1 عرضة لـ هجوم تصادمي مماثل حيث يمكن العثور على الاصطدام في 269 العمليات، في حين أن القوة الغاشمة هي 280.لم يقم أحد بإنشاء تصادم SHA-1 و لا يزال NIST يدرج SHA-1 كوظيفة ملخص للرسائل الآمنة.

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

دعونا نأخذ هذه الخاصية أبعد قليلا.هل يصبح من الآمن بعد ذلك استخدام ملخص رسائل ضعيف جدًا مثل MD4 لكلمات المرور إذا تم إضافة الملح مسبقًا إلى كلمة المرور؟ضع في اعتبارك أن هجمات MD4 وMD5 هي هجمات بادئة، وإذا تم وضع ملح مسبقًا، فلن يتمكن المهاجم من التحكم في بادئة الرسالة.إذا كان الملح سرًا حقًا، وغير معروف للمهاجم، فهل يهم إذا تم إلحاقه بكلمة المرور؟هل من الآمن افتراض أن المهاجم لا يمكنه إحداث تصادم حتى يتم الحصول على الرسالة بأكملها؟

هل تعرف حالات أخرى حيث يمكن استخدام وظيفة التجزئة المعطلة في سياق أمني دون ظهور ثغرة أمنية؟

(يرجى نشر الأدلة الداعمة لأنها رائعة!)

هل كانت مفيدة؟

المحلول

في الواقع، تكون الاصطدامات أسهل مما أدرجته في كل من MD5 وSHA-1.يمكن العثور على تصادمات MD5 في وقت يعادل 226.5 العملية (حيث "العملية" الواحدة هي حساب MD5 عبر رسالة قصيرة).يرى هذه الصفحة للحصول على بعض التفاصيل وتنفيذ الهجوم (كتبت هذا الرمز؛تجد تصادمًا خلال 14 ثانية في المتوسط ​​على معالج Core2 x86 بتردد 2.4 جيجا هرتز في وضع 64 بت).

وبالمثل، فإن الهجوم الأكثر شهرة على SHA-1 يقع في حوالي 261 العمليات، لا 269.لا يزال الأمر نظريًا (لم يتم إنتاج أي تصادم فعلي بعد) ولكنه ضمن نطاق الممكن.

أما بالنسبة للآثار الأمنية:يُقال عادةً أن وظائف التجزئة لها ثلاث خصائص:

  • لا صورة مسبقة:منح ذ, ، لا ينبغي أن يكون من الممكن العثور عليها س مثل ذلك ح(س) = ص.
  • لا يوجد صورة أولية ثانية:منح س1, ، لا ينبغي أن يكون من الممكن العثور عليها س2 (متميزة من س1) مثل ذلك ح(س1) = ح(س2).
  • لا تصادم:لا ينبغي أن يكون من الممكن العثور على أي س1 و س2 (متميزين عن بعضهم البعض) هكذا ح(س1) = ح(س2).

للحصول على وظيفة التجزئة مع أ ن-بت الإخراج، هناك هجمات عامة (والتي تعمل بغض النظر عن تفاصيل وظيفة التجزئة) في 2ن العمليات للخاصيتين الأولين، و 2ن/2 العمليات للثالثة.إذا تم العثور على هجوم، بالنسبة لوظيفة تجزئة معينة، والذي، من خلال استغلال تفاصيل خاصة حول كيفية عمل وظيفة التجزئة، يجد صورة أولية أو صورة أولية ثانية أو تصادمًا أسرع من الهجوم العام المقابل، فيُقال إن وظيفة التجزئة تكون "مكسورة".

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

يعتمد أمان HMAC على آخر الخاصية التي يجب أن تحققها وظيفة التجزئة؛وهي أن "وظيفة الضغط" (الطوب الأساسي الذي بنيت عليه وظيفة التجزئة) تعمل بمثابة وظيفة عشوائية زائفة (بي آر إف).التفاصيل حول ماهية PRF هي تفاصيل فنية تمامًا، ولكن بشكل عام، يجب أن يكون من الصعب تمييز PRF عن أوراكل عشوائي.تم تصميم أوراكل العشوائي على شكل صندوق أسود يحتوي على جنوم وبعض النرد وكتاب كبير.في بعض بيانات الإدخال، يختار الجنوم مخرجات عشوائية (باستخدام النرد) ويكتب في الكتاب رسالة الإدخال والمخرجات التي تم اختيارها عشوائيًا.يستخدم الجنوم الكتاب للتحقق مما إذا كان قد رأى بالفعل نفس رسالة الإدخال:إذا كان الأمر كذلك، فسيُرجع الجنوم نفس المخرجات السابقة.من خلال البناء، لا يمكنك معرفة أي شيء عن مخرجات أوراكل عشوائية في رسالة معينة حتى تجربها.

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

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

لو وظيفة الضغط هي PRF ثم وظيفة التجزئة مقاومة للتصادمات تلقائيًا.هذا جزء من سحر PRF. لذلك, ، إذا تمكنا من العثور على تصادمات لوظيفة التجزئة، فإننا نعلم أن وظيفة الضغط الداخلي ليست PRF.هذا لا يحول الاصطدامات إلى هجوم على HMAC.إن القدرة على توليد تصادمات حسب الرغبة لا تساعد في كسر HMAC.ومع ذلك، توضح تلك التصادمات أن دليل الأمان المرتبط بـ HMAC لا ينطبق.الضمان باطل.هذا هو نفس الكمبيوتر المحمول:إن فتح العلبة لا يؤدي بالضرورة إلى كسر الجهاز، ولكن بعد ذلك تصبح وحدك.

في ال كيم بيريوكوف برينيل هونغ في هذه المقالة، يتم عرض بعض الهجمات على HMAC، ولا سيما هجوم التزوير على HMAC-MD4.يستغل الهجوم عيوب MD4 ("نقاط ضعفه") التي تجعله غير PRF.تم استخدام متغيرات من نفس نقاط الضعف لتوليد تصادمات على MD4 (MD4 معطل تمامًا؛تولد بعض الهجمات تصادمات بشكل أسرع من حساب دالة التجزئة نفسها!).وبالتالي فإن الاصطدامات لا تعني هجوم HMAC، ولكن كلا الهجومين يتغذىان على نفس المصدر.لاحظ، مع ذلك، أن هجوم التزوير قد كلف 258, ، وهو مرتفع جدًا (لم يتم إنتاج أي تزوير فعلي، والنتيجة لا تزال نظرية) ولكنه أقل بكثير من مستوى المقاومة المتوقع من HMAC (مع وظيفة تجزئة قوية مع ن-بت الإخراج، يجب أن مقاومة HMAC تصل إلى 2ن عامل العمل ن = 128 لـ MD4).

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

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

لمزيد من المعلومات حول هذا الموضوع، ابدأ بقراءة الفصل التاسع من الكتاب دليل التشفير التطبيقي, ، من تأليف مينيزيس وفان أورشوت وفانستون، وهو كتاب يجب قراءته لمصممي التشفير المبتدئين (يجب عدم الخلط بينه وبين "التشفير التطبيقي" بقلم بي.Schneier، وهي مقدمة مكتوبة بشكل جيد ولكنها ليست شاملة مثل "الدليل").

نصائح أخرى

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

عندما لا تهتم سواء كانت آمنة أم لا.

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

تحرير بعد قراءة سؤالك بالفعل

وفقًا لـ Schneier A ، لا يزال من الممكن استخدام وظيفة التجزئة المعرضة لهجوم Collsion كـ HMAC. أعتقد أن هذا لأن أمان HMAC يعتمد على مفتاحه السري ولا يمكن العثور على تصادم حتى يتم الحصول على هذا المفتاح.

في الواقع ، يرجع السبب في ذلك إلى أن القدرة على توليد تصادم لتجزئة لا تساعدك بالضرورة على توليد تصادم ل التجزئة من الضحك (جنبا إلى جنب مع Xoring المستخدمة من قبل HMACs).

هل تصبح آمنة لاستخدام رسالة ضعيفة للغاية مثل MD4 لكلمات المرور إذا كان الملح مضطربًا لكلمة المرور؟

لا ، ليس إذا كان لدى التجزئة هجوم preimage مما يسمح لك بتقديم البيانات إلى الإدخال. على سبيل المثال ، إذا كان التجزئة H(pass + salt), ، سنحتاج إلى هجوم preimage الذي يسمح لنا بالعثور على Pass2 من هذا القبيل H(pass2 + salt) = H(pass + salt).

كانت هناك هجمات إلحاق في الماضي ، لذلك أنا متأكد من أن الهجمات المسبقة ممكنة.

تستخدم مواقع التنزيل MD5 Hash كإجراء فحص لتحديد ما إذا كان الملف قد تالفة أثناء التنزيل ، وأود أن أقول إن التجزئة المكسورة جيدة بما يكفي لهذا الغرض.

دعنا نقول أن MITM يقرر تعديل الملف (قل أرشيف الرمز البريدي ، أو exe). الآن ، على المهاجم القيام شيئين -

  1. ابحث عن تصادم التجزئة وقم بإنشاء ملف معدّل منه
  2. تأكد من أن الملف الذي تم إنشاؤه حديثًا هو أيضا exe صالحة أو أرشيف مضغوط

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

هذا هو إجابتي الخاصة تمامًا ، وقد أكون مخطئًا بشكل رهيب.

تعتمد الإجابة تمامًا على ما تستخدمه من أجله. إذا كنت بحاجة إلى منع شخص ما من إنتاج تصادم مع بضعة ميلي ثانية ، فسأكون أقل قلقًا مما لو كنت بحاجة إلى منع شخص ما من إنتاج تصادم في غضون بضعة عقود.

ما هي المشكلة التي تحاول حلها بالفعل؟

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

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top