`Md5sum` कितना सही है?


27

md5sumकिसी फ़ाइल की अखंडता को सत्यापित करने के लिए उपयोग करते समय , प्रक्रिया कितनी सही है?

क्या एक सत्यापित एमडी 5 का अर्थ है कि कभी भी बिट बिल्कुल समान है, या एमडी 5 में द्विआधारी परिवर्तन को प्रतिबिंबित करने से पहले टूट जाना चाहिए?

कैसे एक md5 उत्पन्न होता है पर कोई प्रलेखन भी सराहना की जाएगी।



@choroba यदि मैं यह सब सही ढंग से पढ़ रहा हूं, तो फ़ाइल के आकार को सत्यापित किए जाने के साथ अनिर्धारित परिवर्तन की संभावना बढ़ जाती है। हालांकि यह अभी भी एक संभावना है और 100% निश्चितता केवल 16 बाइट फ़ाइल के साथ हो सकती है। क्या मैं सही हूँ?
कोन्नर रासमुसेन

@Konner मैंने आपका प्रश्न पढ़ा जो फ़ाइल स्थानांतरण से निपटा था। उस उद्देश्य के लिए, यह सुरक्षित है। स्थानांतरण पर थोड़ा सा दूषित होने की संभावनाएं बहुत कम हैं और यह अधिक संभावना है कि आप स्थानांतरण पर प्रतिलिपि की गई फ़ाइल का कुछ हिस्सा खो दें, यह मानते हुए कि मैं आपकी पिछली स्थिति को समझ गया हूं । एमडी 5 दोनों फाइलों की तुलना करने के बराबर है, इस तथ्य में कुछ फायदा है कि आपको एक ही समय में दोनों फाइलों तक पहुंचने की आवश्यकता नहीं है।
डॉकटोरो रीचर्ड

15
"क्या एक सत्यापित एमडी 5 का अर्थ है कि हर बिट बिल्कुल समान है।" ध्यान दें कि यह असंभव है, पिजनहोल सिद्धांत के लिए धन्यवाद। en.wikipedia.org/wiki/Pigeonhole_principle
प्लूटोर

3
मुझे नहीं लगता कि आपको 16 बाइट फ़ाइलों के लिए कोई गारंटी मिलती है।
मूविंग डक

जवाबों:


65

एक बुद्धिमान विरोधी के खिलाफ इस उद्देश्य के लिए एमडी 5 टूट गया है। एक ही MD5 हैश का उत्पादन करने वाले डेटा के दो अलग-अलग ब्लॉकों का दुर्भावनापूर्ण रूप से निर्माण करना संभव है।

हालांकि, पारगमन या भंडारण में अनजाने डेटा भ्रष्टाचार से बचाने के लिए एमडी 5 का उपयोग करना पूरी तरह से उपयुक्त है (हालांकि लगभग निश्चित रूप से बेहतर तरीके हैं)। हालांकि यह अनुमान योग्य है कि इस तरह की घटना एमडी 5 हैश के समान हो सकती है, संभावना इतनी कम है कि यह लगभग अकल्पनीय है कि यह चिंता के लायक एक संभावना होगी। पृष्ठभूमि विकिरण, टनलिंग, स्थैतिक और दर्जनों अन्य स्रोतों के कारण विफलता परिमाण के आदेश अधिक संभावित होंगे।

यहां तक ​​कि अगर आपके पास एक क्वाड्रिलियन यूनिट डेटा था, तो इस बात की संभावना नहीं है कि एक बेमेल MD5 एक MD5 हैश का उत्पादन करेगा, जो उन क्वाड्रिलियन इकाइयों में से एक से संबंधित है जो क्वाड्रिलियन में एक से कम है।


हालांकि एक ही हैश के साथ दो फाइलें उत्पन्न करना सैद्धांतिक रूप से संभव हो सकता है, यह व्यावहारिक रूप से संभव है। खासकर अगर प्रतिस्थापन फ़ाइल को भी समझ में आना चाहिए। उदाहरण के लिए, यदि मूल फ़ाइल अंग्रेजी पाठ थी, तो हो सकता है कि कोई अन्य मिलान अंग्रेजी भी न हो। या यदि यह एक एक्सेल स्प्रेडशीट है, तो समान हैश वाली अन्य फ़ाइलों में से कोई भी मान्य स्प्रेडशीट नहीं होगी।
बरमार

1
@Barmar: win.tue.nl/hashclash/Nostradamus इन लोगों ने एक ही MD5 हैश के साथ कई पीडीएफ फाइलें बनाईं, ताकि यह साबित हो सके कि यह व्यावहारिक रूप से व्यवहार्य है।
दार्शन

26

MD5 एक हैश है। यह मूल रूप से एक फ़ाइल की पूरी सामग्री को एक छोटे से स्ट्रिंग में मैप करता है जो कि 16 बाइट लंबा IIRC है।

स्पष्ट रूप से कई फाइलें होंगी जो एक ही एमडी 5 राशि के लिए हैश है। इसलिए, एक मिलान MD5 योग फ़ाइलों के बीच सटीक मिलान की कोई गारंटी नहीं है।

इस तरह से कोई सीमा नहीं है क्योंकि जिस तरह से हैश काम करते हैं। तो एक MD5 योग भी एक एकल बिट परिवर्तन का पता लगा सकता है। हालाँकि, बहुत सारे एकल परिवर्तन एक साथ MD5 हैश के समान हो सकते हैं। इसलिए, यादृच्छिक भ्रष्टाचार के खिलाफ फ़ाइल अखंडता को मान्य करने के लिए एमडी 5 का उपयोग करना काफी उचित है, लेकिन यदि दुर्भावनापूर्ण इरादे संभव नहीं हैं, क्योंकि एमडी 5 हैश समान है, तो कोई फ़ाइल को संशोधित कर सकता है।


1
इतनी लंबी कहानी छोटी है कि एक md5 फ़ाइल अखंडता को सत्यापित करने के एक त्वरित और गंदे तरीके से ज्यादा कुछ नहीं है, और इसका उपयोग केवल तब किया जाना चाहिए जब एक अनिर्धारित त्रुटि के कारण कैटासीमिक नतीजों का कारण नहीं होगा ... सही?
कोन्नर रासमुसेन

3
इसका सबसे अच्छा उपयोग हस्तांतरण या नकल के दौरान भ्रष्टाचार का पता लगाना है। वास्तव में सुरक्षा के रूप में नहीं।
माइकल मार्टिनेज

12
@KonnerRasmussen - यह नतीजों की डिग्री की बात नहीं है, यह खतरे की प्रकृति है। यदि आप चिंतित हैं कि दो दस्तावेजों में गलती से एक ही एमडी 5 हो सकता है, तो चिंता करना बंद करें: संभावनाएं काफी अधिक हैं कि आपके कंप्यूटर अनायास आग की लपटों में फट जाएंगे; यदि आप चिंतित हैं, तो एक बुद्धिमान हमलावर एक दस्तावेज का उत्पादन कर सकता है जो आपके पास पहले से ही मेल खाता है, यह एक गंभीर चिंता का विषय है और आपको एक बेहतर हैश प्राप्त करना चाहिए; यदि आप चिंतित हैं तो एक बुद्धिमान हमलावर दो दस्तावेजों का उत्पादन कर सकता है जो एक दूसरे से मेल खाते हैं, "चिंता न करें": यह निश्चित रूप से होगा।
मालवोलियो

5
बेशक, एमडी 5 हैश टकराव पैदा करते समय सैद्धांतिक रूप से संभव है, एक उपयोगी टक्कर उत्पन्न करना (जैसा कि, टकराकर फ़ाइल एक ही प्रकार की फ़ाइल है और इसकी सामग्री कम से कम प्रशंसनीय रूप से प्रामाणिक है) बहुत कठिन है ...
शादुर

6
@ शशूर: यह मामला हुआ करता था, लेकिन चल रहे सुरक्षा अनुसंधान ने एमडी 5 टक्कर उत्पन्न करने के नए तरीके खोज लिए हैं जो कि आसान बनाते हैं। विशेष रूप से, यदि आपका फ़ाइल प्रारूप मुफ्त-प्रारूप "टिप्पणी" के आंकड़ों की अनुमति देता है, तो उपयुक्त टिप्पणी डालकर किसी भी एमडी 5 हैश से मिलान करना संभव है।
MSalters

17

MD5-Hash में 128 बिट्स होते हैं। स्रोत फ़्लिप में एक एकल फ़्लिप बिट (औसतन) हैश में 64 बिट्स।

दो हैश की संभावित रूप से टकराने की संभावना 1/2 ^ 128 है जो कि 1 में 340 अविवेक 282 डिकिल 366 नॉनिलियन 920 ऑक्टिलियन 938 सेप्टिलीन 463 सेक्स्टिलियन 463 क्विंटलियन 374 क्वाड्रिलियन 607 बिलियन 431 बिलियन 768 मिलियन 211 हजार 456 है।

हालाँकि यदि आप सभी हैश रखते हैं तो जन्मदिन के विरोधाभास की संभावना थोड़ी अधिक है। किसी भी हैश टकराने की 50% संभावना के लिए आपको 2 ^ 64 हैश की आवश्यकता होती है। इसका मतलब है कि टक्कर पाने के लिए, औसतन, आपको 100 वर्षों के लिए प्रति सेकंड 6 बिलियन फाइलें हैश करने की आवश्यकता होगी।

स्रोत: porneL, /programming/201705/how-many-random-elements-before-md5-produces-collisions


8
तो आप कह रहे हैं कि अभी भी एक मौका है? : पी
खोखला

1
परेशानी यह है कि यद्यपि आप कुछ वर्षों के लिए 6 बिलियन फाइलें प्रति सेकंड हैश के लिए जरूरी हैं कि आप एक टक्कर पाते हैं; यह पहले सेकंड के भीतर अच्छी तरह से हो सकता है।
डर्बी

सच है, यह पहला दूसरा हो सकता है। लेकिन हमेशा की तरह यह संतुलन कारणों के बारे में है। ऐसे सैन्य अनुप्रयोग हो सकते हैं जहां यह जोखिम स्वीकार्य नहीं है, लेकिन मैं दूसरी सोच के बिना एक कार किराए पर लूंगा जहां एयरबैग सेंसर md5 का उपयोग करते हैं। याद रखें, संभावना यह है कि आप md5 की टक्कर की प्रतीक्षा करते हुए कई बार बिजली की चपेट में आते हैं।
Zsolt Szilagy

मुझे खेद है, लेकिन 2 ^ 128 का आधा 2 ^ 127 है, 2 ^ 64 नहीं है।
फिशी

2
@fischi, जन्मदिन के विरोधाभास पर लिंक पढ़ें, और en.wikipedia.org/wiki/Birthday_attack - यह केवल हैश की कुल संख्या को आधा करने की बात नहीं है। खोज स्थान H को देखते हुए, टक्कर की 50% संभावना प्राप्त करने से पहले आपको जितने हैश उत्पन्न करने होते हैं, वह लगभग sqrt ((pi / 2) * H) होता है। यदि आप 2 ^ 128 के साथ उस गणित को करते हैं, तो आपको लगभग 2 ^ 64 नंबर मिलेंगे
पॉल डिक्सन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.