क्या MD5 फिक्स्ड पॉइंट है जहाँ md5 (x) == x है?


114

क्या एमडी 5 परिवर्तन में एक निश्चित बिंदु है, अर्थात क्या एक्स ऐसा मौजूद है md5(x) == x?


8
कौन सा md5 परिवर्तन? गणितीय एक (किसी भी बिटस्ट्रिंग से 128 बिट्स तक) या किसी भी बायट्रैस्टिंग से 32-चार हेक्सस्ट्रिंग (व्यावहारिक एक)? यह स्पष्ट नहीं है कि दोनों के जवाब एक जैसे हैं ...
राफेल डोवगार्ड

4
खैर, वे कर रहे हैं एक ही जवाब है, है ना? हम जानते हैं कि कोई गैर-128-बिट के लंबे एक्स जो के लिए मौजूद है md5(x) == x, क्योंकि md5(x) है 128 बिट लंबा है। इसलिए, मनमाने ढंग से आकार के इनपुट के लिए md5 में एक निश्चित बिंदु है अगर और केवल अगर 128-बिट डोमेन पर md5 में एक निश्चित बिंदु है।
पॉल

1
मुझे नहीं लगता कि वे एक ही जवाब हैं क्योंकि व्यावहारिक 32 वर्णों के लिए हेक्सस्ट्रिंग यह एक मनमाना विकल्प है कि क्या आप ऊपरी मामले [AF] में या निचले मामले में हेक्स अंकों का प्रतिनिधित्व करते हैं [af]। दोनों अभ्यावेदन समान 128-बिट संख्या के अनुरूप हैं, लेकिन एमडी 5 को इनपुट के रूप में प्रदान करने पर वे अलग-अलग हैश का उत्पादन करेंगे। तो संभावना यह है कि या तो प्रतिनिधित्व में एक निश्चित बिंदु है, वास्तव में है1-(1/e)*(1/e) ≈ 86.47%
ड्यूसन

जवाबों:


138

चूंकि एमडी 5 योग 128 बिट लंबा है, इसलिए किसी भी निश्चित बिंदु पर 128 बिट लंबा होना आवश्यक है। यह मानते हुए कि कोई भी स्ट्रिंग का MD5 योग समान रूप से तो संभावना सभी संभव रकम पर वितरित किया जाता है, कि किसी भी 128 बिट स्ट्रिंग एक निश्चित बिंदु है 1 / 2 128

- इस प्रकार, संभावना है कि कोई 128 बिट स्ट्रिंग एक निश्चित बिंदु है (1 1 / 2 128 ) 2 128 है, तो संभावना एक निश्चित मतलब नहीं है कि 1 है - (1 - 1 / 2 128 ) 2 128

सीमा के रूप में n के अनंत को जाता है के बाद से (1 - 1 / n ) n है 1 / , और 2 128 - सबसे निश्चित रूप से एक बहुत बड़ी संख्या है, इस संभावना लगभग ठीक है 1 1 / ≈ 63.21%।

बेशक, वास्तव में कोई यादृच्छिकता शामिल नहीं है - या तो एक निश्चित बिंदु है या नहीं है। लेकिन, हम 63.21% आश्वस्त हो सकते हैं कि एक निश्चित बिंदु है। (यह भी ध्यान दें कि यह संख्या कीस्पेस के आकार पर निर्भर नहीं करती है - यदि एमडी 5 sums 32 बिट्स या 1024 बिट्स थे, तो उत्तर समान होगा, इसलिए जब तक यह लगभग 4 या 5 बिट्स से बड़ा नहीं हो जाता)।


11
क्या आप वास्तव में यह अनुमान लगा सकते हैं कि किसी भी स्ट्रिंग के एमडी 5 योग को सभी संभावित रकमों पर समान रूप से वितरित किया गया है?
ओरी पेसच

13
हाँ। बड़ी संख्या और मोडुलस एक मोटे तौर पर यादृच्छिक वितरण बनाते हैं। यदि वे नहीं करते हैं, तो आपके पास लगातार टकराव होंगे। Md5 की प्रकृति अपने आउटपुट को यादृच्छिक रूप से वितरित करने के लिए मजबूर करती है।
स्टीफन केंडल

2
मैंने इस उत्तर के लिए एक आधार के रूप में आपके उत्तर का उपयोग किया: Security.stackexchange.com/questions/3851/…
CesarB

1
यहाँ, एक गोल्ड बैज है।
डेनिस

सिवाय इसके कि md5 नियतात्मक है, यादृच्छिक नहीं।
3

13

मेरी पाशविक बल कोशिश को 12 उपसर्ग और 12 प्रत्यय मिला।

उपसर्ग 12: 54db1011d76dc70a0a9df3ff3e0b390f -> 54db1011d76d137956603122ad86d762

प्रत्यय 12: df12c1434cec7850a7900ce027af4b78 -> b2f6053087022898fe920ce027af4b78

ब्लॉग पोस्ट: https://plus.google.com/103541237243849171137/posts/SRxXrTMdrFN


लिंक काम नहीं कर रहा है। Google प्लस अप्रैल में बंद हो गया
टाइपरवार

क्षमा करें ... मैंने ब्लॉग पोस्ट को सहेजा नहीं है और Google + बैकअप मेरे लिए काम नहीं कर रहा है। लेकिन यहाँ मेरा
गित्बम

क्या आप इस बारे में निश्चित हैं: उपसर्ग 12: 54db1011d76dc70a0a9df3ff3e0b390f -> 54db1011d76d137956603122ad86d762 - md5sumलिनक्स कमांड का इस्तेमाल किया , मुझे अलग-अलग परिणाम मिले
थंडरपोहेनिक्स

सुनिश्चित नहीं है कि आप md5sum का सही उपयोग कर रहे हैं। आप इसकी ऑनलाइन पुष्टि यहां भी कर सकते हैं: onlinemd5.com
थॉमस एगेंस

11

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

विस्तृत करने के लिए, MD5 हैश में 16 बाइट्स हैं। इसका मतलब है कि 2 ^ (16 * 8) = 3.4 * 10 ^ 38 संयोजन हैं। यदि 16 बाइट मान पर हैश की गणना करने में 1 मिलीसेकंड का समय लगता है, तो उन सभी हैश की गणना करने में 10790283070806014188970529154.99 साल लगेंगे।


2
सच है, अगर आपको हर एक को आजमाना था । लेकिन आपको केवल यह सुनिश्चित करने के लिए हर संभव इनपुट का प्रयास करना होगा कि कोई निश्चित बिंदु नहीं था। यदि कोई निश्चित बिंदु है (और एडम रोसेनफील्ड का उत्तर बताता है कि हो सकता है) तो एक भाग्यशाली अनुमान यह है कि इसकी आवश्यकता है।
Naaff

फ़ंक्शन इस अर्थ में अपरिवर्तनीय है कि इसका कोई गणितीय उलटा नहीं है, हालांकि इसका मतलब केवल यह है कि किसी दिए गए आउटपुट के लिए एक से अधिक इनपुट हो सकते हैं। सामान्य तौर पर, किसी दिए गए आउटपुट के लिए इनपुट का स्थान अनंत होगा, लेकिन अगर आपको पता है कि यह 128-बिट मूल्य के रूप में शुरू हुआ है तो आप संभावनाओं को कम कर सकते हैं। यदि आप फ़ंक्शन को ब्लैक बॉक्स के रूप में नहीं मानते हैं, तो "पीछे की ओर" काम करने का मौका है, लेकिन इसके बजाय कल्पना पढ़ें और कुछ गणितीय सोच को लागू करें।
rndmcnlly

2
@Naaff: "केवल हर संभव इनपुट की कोशिश करनी है" - और यह हर हैश की कोशिश करने की तुलना में आसान है, कैसे? इसके विपरीत, चूंकि कई संभावित इनपुट समान आउटपुट में हैश कर सकते हैं।
पिस्कोर ने

1
@Piskvor: आपको गलत लगा कि Naaff का क्या मतलब था (मुझे एक मिनट भी लगा)। यह कहने का एक स्पष्ट तरीका है "केवल अगर कोई निश्चित बिंदु नहीं है तो क्या आप हर संभव इनपुट (अंतरिक्ष 2 ^ 128 से) की कोशिश करेंगे"। दूसरे शब्दों में, आपको केवल हर संभावना को आजमाना होगा यदि कोई भी उस काम से पहले नहीं है। तो 1.08e28 साल, या एक भाग्यशाली अनुमान!
पी डैडी

"अगर हैश की गणना करने में 1 मिलीसेकंड का समय लगता है"। आधुनिक जीपीयू अरबों हैश की गणना कर सकता है, इससे बहुत तेज। लेकिन फिर भी, इसमें बहुत लंबा समय लगेगा।
markasoftware

0

हालांकि मेरे पास हां / नहीं का कोई जवाब नहीं है, मेरा अनुमान "हां" है और इसके अलावा, शायद 2 ^ 32 ऐसे निश्चित बिंदु हैं (बिट-स्ट्रिंग व्याख्या के लिए, चरित्र-स्ट्रिंग अंतर्ग्रहण के लिए नहीं)। मैं सक्रिय रूप से इस पर काम कर रहा हूं क्योंकि यह एक भयानक, संक्षिप्त पहेली की तरह लगता है, जिसके लिए बहुत रचनात्मकता की आवश्यकता होगी (यदि आप तुरंत ब्यूट बल खोज के लिए व्यवस्थित नहीं होते हैं)।

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


यह वास्तव में दिलचस्प है, कृपया अपनी प्रगति साझा करें क्योंकि आप इस सड़क पर जाते हैं?
user230910

-1

शायद, लेकिन इसे खोजने में हमें जितना समय लगेगा या एमडी 5 से समझौता करना पड़ेगा।


6
इसे तोड़ा नहीं गया है। वे सभी करने में सक्षम है समय की एक उचित मात्रा में 2 तार है कि एक ही हैश के बराबर है। यह अभी भी एक स्ट्रिंग का उत्पादन करने के लिए बहुत कठिन है जो एक विशिष्ट हैश के बराबर होगा।
किब्बी

9
निश्चित नहीं है कि खोज करने वाला व्यक्ति md5 से कैसे समझौता करेगा, अब तक यह एल्गोरिथ्म से समझौता करेगा यदि मैंने आपको MD5 ("आलसी कुत्ते पर त्वरित भूरे लोमड़ी कूदता है") = 9e107d9d372bb6826bb81d3542a419d6
Kip

5
एक निश्चित बिंदु संभवतः गणित पर कुछ लाभ उठाएगा जो एमडी 5 के अधिक व्यापक उल्लंघन का कारण बन सकता है। मुझे यकीन नहीं है कि ग्लोमेक वास्तव में 'शायद' को सही ठहरा सकता है; मैं बिना समीकरण के 'संभवतः' को स्वीकार करूंगा।
जोनाथन लेफलर

-9

दो व्याख्याएं हैं, और यदि किसी को चुनने की अनुमति है, तो एक निश्चित बिंदु खोजने की संभावना 81.5% तक बढ़ जाती है।

  • व्याख्या 1: क्या एमडी 5 आउटपुट का एमडी 5 बाइनरी इसके इनपुट से मेल खाता है?
  • व्याख्या 2: क्या हेक्स में एमडी 5 आउटपुट का एमडी 5 इसके इनपुट से मेल खाता है?

13
एमडी 5 एल्गोरिथ्म के बारे में कुछ भी नहीं है जो हेक्स का अर्थ है - यह बाइट्स पर काम करता है, और बाइट्स पैदा करता है - इसलिए मुझे लगता है कि बाद की व्याख्या अमान्य है।
निक जॉनसन

व्याख्या 1 के तहत एक निश्चित बिंदु है या नहीं, व्याख्या के तहत एक अभी भी हो सकता है (या नहीं हो सकता है) 2. हालांकि, यदि आप समस्या की खोज करने में रुचि रखते हैं, तो व्याख्या 1 शुरू करने के लिए एक बेहतर जगह की तरह लगता है क्योंकि आप जीते थे 'आवरण और चरित्र एन्कोडिंग के बारे में सभी प्रकार के मनमाने निर्णय लेने होंगे। उसके ऊपर, द्विआधारी मामले में कम बिट्स हैं!
rndmcnlly

4
आप गलत व्याख्या कर रहे हैं कि हेक्स वास्तव में क्या है। आप हेक्स में बाइनरी का प्रतिनिधित्व कर सकते हैं, जिस तरह आप इसे दशमलव या अष्टक या आधार 3 में दर्शा सकते हैं। यह एक संख्या है, और अलग-अलग प्रतिनिधित्व हैं। तो, व्याख्या 1 और 2 एक ही बात है। आप जो सोच रहे हैं वह चरित्र स्ट्रिंग प्रतिनिधित्व है, जो एक ही हेक्स बिल्कुल नहीं है, लेकिन एक पूरी तरह से अलग द्विआधारी मूल्य है। वास्तव में आप विभिन्न चरित्र सेटों में कई अलग-अलग हेक्स स्ट्रिंग्स हो सकते हैं। 128-बिट हैश मान को "हेक्स" स्ट्रिंग के रूप में दर्शाया जा सकता है, लेकिन यह स्ट्रिंग के बराबर नहीं है। स्ट्रिंग एक ही बाइनरी डेटा नहीं है।
परिभाषित करता है

डस्टिन, व्याख्या 2 वास्तव में डिस्प्ले स्ट्रिंग के एमडी 5 का मतलब है।
जोशुआ

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

-23

सख्ती से बोलना, चूंकि एमडी 5 का इनपुट 512 बिट लंबा है और आउटपुट 128 बिट्स का है, मैं कहूंगा कि यह परिभाषा द्वारा असंभव है।


4
नहीं, 1 बाइट स्ट्रिंग्स का MD5 मौजूद है।
जोशुआ

7
इनपुट किसी भी आकार का हो सकता है। यदि इनपुट 512 बाइट्स से कम है तो यह गद्देदार है, लेकिन छोटे इनपुट अभी भी स्वीकार्य हैं। विकिपीडिया से: "एमडी 5 एक चर-लंबाई संदेश को 128-बिट्स की निश्चित-लंबाई वाले आउटपुट में संसाधित करता है। इनपुट संदेश 512-बिट ब्लॉक (सोलह 32-बिट छोटे एंडियन पूर्णांक) के विखंडन में टूट जाता है; संदेश को गद्देदार किया जाता है ताकि; इसकी लंबाई 512 से विभाज्य है। "
Naaff

तो आप मान रहे हैं कि, 0000000001 = 1? मैं तब तर्क दूंगा कि यह प्रश्न सबसे अच्छे रूप में निर्दिष्ट है।
ओरी पेसच

11
एमडी 5 का इनपुट 128 बिट्स हो सकता है। यदि MD5 उस इनपुट को पेड करना चाहता है, तो, स्पष्ट रूप से, यह MD5 का व्यवसाय है। इनपुट अभी भी अच्छी तरह से परिभाषित है। इसी तरह, आउटपुट एक अच्छी तरह से परिभाषित 128 बिट्स है। यदि (अच्छी तरह से परिभाषित) इनपुट और (अच्छी तरह से परिभाषित) आउटपुट दोनों समान हैं तो MD5 (x) = x।
Naaff

2
@ जोशुआ एक खाली तार के एमडी 5 (यानी 0 बाइट) भी मौजूद है
किप
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.