كم عدد العناصر العشوائية قبل أن ينتج MD5 الاصطدامات؟

StackOverflow https://stackoverflow.com/questions/201705

  •  03-07-2019
  •  | 
  •  

سؤال

لدي مكتبة صور على Amazon S3.بالنسبة لكل صورة، أضع عنوان URL المصدر على الخادم الخاص بي بالإضافة إلى طابع زمني للحصول على اسم ملف فريد.نظرًا لأن S3 لا يمكن أن يحتوي على أدلة فرعية، فأنا بحاجة إلى تخزين كل هذه الصور في مجلد مسطح واحد.

هل أحتاج إلى القلق بشأن الاصطدامات في قيمة تجزئة MD5 التي يتم إنتاجها؟

علاوة:كم عدد الملفات التي يمكن أن أملكها قبل أن أبدأ في رؤية التضاربات في قيمة التجزئة التي ينتجها MD5؟

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

المحلول

احتمال تصادم جزأين فقط عن طريق الخطأ هو 1/2128 الذي 1 في 340 وندسيليون 282 ديسيليون 366 نونيليون 920 أوكتليون 938 سيبتيليون 463 سيكستليون 463 كوينتيليون 374 كوادريليون 607 تريليون 431 مليار 768 مليون 211 ألف 456.

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

نصائح أخرى

وS3 يمكن أن يكون الدلائل. وضعت للتو "/" في اسم المفتاح، ويمكنك الوصول إلى الملفات كما لو كانوا في الدلائل منفصلة. أنا استخدم هذا لتخزين الملفات المستخدم في مجلدات منفصلة على أساس هوية المستخدم في S3.

وعلى سبيل المثال: "mybucket / المستخدمين / 1234 / somefile.jpg". انها ليست بالضبط نفس الدليل في نظام الملفات، ولكن API S3 لديه بعض الميزات التي السماح لها بالعمل نفسه تقريبا. يمكنني أن أسأل لسرد كافة الملفات التي تبدأ ب "المستخدمين / 1234 /" وسوف تظهر لي كل الملفات في هذا "الدليل".

وهكذا الانتظار، هل هو:

md5(filename) + timestamp

وأو:

md5(filename + timestamp)

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

وهناك قاعدة الخام من الإبهام للاصطدام هي الجذر التربيعي لمجموعة من القيم. MD5 سيج هو المفترض 128 بت طويلة، لذلك كنت على وشك أن المرجح أن تشهد اصطدامات وتتجاوز 2 ^ 64 صور.

وعلى الرغم من الاصطدامات MD5 عشوائية نادرة جدا، إذا يمكن للمستخدمين تقديم الملفات (التي سيتم تخزينها حرفيا) ثم يمكنهم مهندس الاصطدامات تحدث. وهذا يعني أنها يمكن أن تخلق الملفين عمدا مع نفس MD5SUM لكن بيانات مختلفة. تأكد أن التطبيق يمكن التعامل مع هذه القضية بطريقة معقولة، أو ربما استخدام تجزئة أقوى مثل SHA-256.

وبينما كانت هناك مشاكل التي حظيت بتغطية إعلامية مع MD5 بسبب اصطدام، اصطدام غير مقصود بين البيانات العشوائية <لأ href = "http://www.miketaylor.org.uk/tech/law.html" يختلط = "نوفولو noreferrer "> نادرة جدا. من ناحية أخرى، إذا كنت تجزئة على اسم الملف، وهذا ليس بيانات عشوائية، وأتوقع اصطدام بسرعة.

الاصطدام بـ MD5 أمر مستبعد للغاية.اذا كنت تمتلك 9 تريليون MD5s، هناك فرصة واحدة فقط للدخول 9 تريليون أنه سيكون هناك تصادم.

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

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