कैसे एमडी 5 हैश मूल्य प्रतिवर्ती नहीं हैं?


91

एक अवधारणा जिसे मैंने हमेशा आश्चर्यचकित किया है वह है क्रिप्टोग्राफ़िक हैश फ़ंक्शन और मूल्यों का उपयोग। मैं समझता हूं कि ये फ़ंक्शन एक हैश मान उत्पन्न कर सकते हैं जो अद्वितीय और वस्तुतः रिवर्स करने के लिए असंभव है, लेकिन यहां मैंने हमेशा सोचा है:

अगर मेरे सर्वर पर, PHP में मैं उत्पादन:

md5("stackoverflow.com") = "d0cc85b26f2ceb8714b978e07def4f6e"

जब आप MD5 फ़ंक्शन के माध्यम से उसी स्ट्रिंग को चलाते हैं, तो आपको अपने PHP इंस्टॉलेशन पर समान परिणाम मिलता है। कुछ मूल्य का उत्पादन किया जा रहा है, कुछ शुरुआती मूल्य से।

क्या इसका मतलब यह नहीं है कि जो कुछ हो रहा है, उसे फिर से बनाना और हैश मान को उलट देना है?

इन कार्यों के बारे में ऐसा क्या है जो परिणामी तारों को वापस करने के लिए असंभव बनाता है?


54
उदाहरण के लिए गैर प्रतिवर्ती मूल्य का एक सरल उदाहरण मोडुलो है। उदाहरण के लिए 10% 3 = 1, लेकिन आप 1 से 10 को उल्टा नहीं कर सकते क्योंकि यह 4 भी हो सकता है
गैब रॉय

57
यदि आप डेटा को फिर से संगठित कर सकते हैं तो आपके पास सबसे कुशल दोषरहित संपीड़न एल्गोरिथम होगा :)
Dan Diplo

जवाबों:


204

इनपुट सामग्री एक अनंत लंबाई हो सकती है, जहां आउटपुट हमेशा 128 बिट लंबा होता है। इसका अर्थ है कि अनंत संख्या में इनपुट स्ट्रिंग्स समान आउटपुट उत्पन्न करेंगे।

यदि आप एक यादृच्छिक संख्या चुनते हैं और इसे 2 से विभाजित करते हैं, लेकिन केवल शेष लिखें, तो आपको क्रमशः 0 या 1 मिलेगा - या विषम, क्रमशः। क्या उस 0 या 1 को लेना और मूल संख्या प्राप्त करना संभव है?


4
यह कहना है, न तो संख्या -> शेष और न ही स्ट्रिंग -> md5 "इंजेक्शन कार्य" हैं।
फेडरिको ए। रामपोनी

फेडेरिको, निश्चित रूप से आपका मतलब है कि न तो विशेषण कार्य हैं? वे दोनों इंजेक्टिव हैं।
मिहाई लिम्बोअन

10
मोचा: विशेषण का अर्थ है 1 से 1. एमडी 5 निश्चित रूप से 1 से 1 नहीं है, क्योंकि डोमेन सीमा से बड़ा है। ध्यान देने योग्य एक और बात यह है कि एक MD5 चेकसम दिया गया है, यह भी एक स्ट्रिंग है कि यह करने के लिए hashes खोजने के लिए बहुत मुश्किल है। स्पष्टीकरण के लिए उत्तर जोड़ने के लायक हो सकता है।
बायोजिन

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

4
मेरा सुझाव है कि आपका उत्तर मुख्य बिंदु को संबोधित नहीं करता है। जैसा कि Biozinc ने उल्लेख किया है, सुरक्षित पासवर्ड हैश के लिए जो महत्वपूर्ण है वह यह है कि आप किसी भी इनपुट को नहीं बना सकते हैं जो आउटपुट बनाता है, यह नहीं कि आप मूल इनपुट नहीं ढूंढ सकते। उस नोट पर, MD5 जरूरी नहीं है जितना सुरक्षित हो सकता है ( en.wikipedia.org/wiki/MD5#Collision_vulnerabilities )।
माइक पेले जूल 5'10

53

यदि MD5 जैसे हैश फ़ंक्शन प्रतिवर्ती थे, तो यह डेटा संपीड़न एल्गोरिदम के इतिहास में एक वाटरशेड घटना होगी! यह देखना आसान है कि यदि MD5 प्रतिवर्ती थे, तो मनमाने आकार के डेटा की मनमानी जानकारी को बिना किसी नुकसान के केवल 128 बिट्स द्वारा दर्शाया जा सकता है। इस प्रकार आप मूल संदेश के आकार की परवाह किए बिना 128 बिट संख्या से मूल संदेश को फिर से संगठित करने में सक्षम होंगे।


9
सोचें कि अगर आप सिर्फ md5 को प्राप्त कर सकते हैं तो linux distros को डाउनलोड करना कितना जल्दी होगा :)
कॉलिन पिकार्ड

15
@ कोलिन पिकार्ड: हम लिनक्स डिस्ट्रोस को डाउनलोड नहीं करेंगे , हम उन्हें लिखेंगे । :)
tzot

29

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

इस फ़ंक्शन पर विचार करें (सवाल के रूप में PHP संकेतन में):

function simple_hash($input) {
     return bin2hex(substr(str_pad($input, 16), 0, 16));
}

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

print simple_hash("stackoverflow.com");

यह आउटपुट होगा:

737461636b6f766572666c6f772e636f6d

इस फ़ंक्शन में MD5 के लिए कोडी के उत्तर द्वारा हाइलाइट किए गए गैर-इंजेक्शन गुण भी हैं: हम किसी भी आकार के स्ट्रिंग्स में गुजर सकते हैं (जब तक वे हमारे कंप्यूटर में फिट होते हैं), और यह केवल 32 हेक्स-अंकों का उत्पादन करेगा। बेशक यह इंजेक्शन नहीं हो सकता।

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

क्रिप्टोग्राफ़िक हैश फ़ंक्शन के लिए महत्वपूर्ण धारणाएँ हैं:

  • किसी भी हैश (प्रीमीज रेजिस्टेंस) को पैदा करने वाली किसी भी स्ट्रिंग को ढूंढना मुश्किल है
  • किसी भी अलग स्ट्रिंग को दिए गए स्ट्रिंग के समान हैश का उत्पादन करना मुश्किल है (दूसरा प्रीइमेज प्रतिरोध)
  • एक ही हैश (टक्कर प्रतिरोध) के साथ तार की किसी भी जोड़ी को खोजना मुश्किल है

जाहिर है कि मेरा simple_hashकार्य इन शर्तों में से किसी को पूरा नहीं करता है। (वास्तव में, यदि हम इनपुट स्पेस को "16-बाइट स्ट्रिंग्स" तक सीमित रखते हैं, तो मेरा फ़ंक्शन इंजेक्टिव हो जाता है, और इस तरह यह दूसरे-प्राइमेज रेसिस्टेंट और टकराव प्रतिरोधी भी साबित होता है।)

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

वास्तविक प्रश्न का उत्तर देने के लिए:

इन कार्यों के बारे में ऐसा क्या है जो परिणामी तारों को वापस करने के लिए असंभव बनाता है?

MD5 (और अन्य हैश फ़ंक्शन मर्कले-डैमगार्ड निर्माण पर प्रभावी रूप से बनाते हैं) प्रभावी रूप से संदेश के साथ एन्क्रिप्शन एल्गोरिथ्म को लागू कर रहा है और कुछ निश्चित मान "सादे पाठ" के रूप में है, जिसके परिणामस्वरूप हैश के रूप में सिफरटेक्स्ट का उपयोग किया जाता है। (इससे पहले, इनपुट को गद्देदार और ब्लॉकों में विभाजित किया जाता है, इस ब्लॉक के प्रत्येक का उपयोग पिछले ब्लॉक के आउटपुट को एन्क्रिप्ट करने के लिए किया जाता है, रिवर्स गणना को रोकने के लिए अपने इनपुट के साथ XORed।)

आधुनिक एन्क्रिप्शन एल्गोरिदम (हैश फ़ंक्शन में उपयोग किए जाने वाले सहित) कुंजी को पुनर्प्राप्त करने के लिए कठिन बनाने के लिए बनाए गए हैं, यहां तक ​​कि दोनों प्लेनटेक्स्ट और सिफरटेक्स्ट (या यहां तक ​​कि जब विरोधी उनमें से किसी एक को चुनता है) दिया जाता है। वे आम तौर पर बहुत सारे बिट-शफलिंग ऑपरेशंस को इस तरह से करते हैं कि प्रत्येक आउटपुट बिट प्रत्येक कुंजी बिट (कई बार) और प्रत्येक इनपुट बिट द्वारा भी निर्धारित होता है। इस तरह से आप केवल आसानी से वही कर सकते हैं जो पूर्ण कुंजी और इनपुट या आउटपुट को जानते हैं।

MD5 जैसे हैश फ़ंक्शंस और एक प्रीइमेज अटैक (सिंगल-ब्लॉक हैशेड स्ट्रिंग के साथ, चीजों को आसान बनाने के लिए), आपके पास केवल अपने एन्क्रिप्शन फ़ंक्शन का इनपुट और आउटपुट है, लेकिन कुंजी नहीं (यह वही है जो आप खोज रहे हैं)।


4
हां, मुझे पता है कि यह एक बहुत देर से जवाब है, लेकिन स्वीकृत जवाब को इस तरह से खड़ा नहीं होने देना चाहिए।
पाओलो एबरमैन

मुझे लगता है कि आपकी आलोचनाओं में कुछ योग्यता है, लेकिन आप वास्तविक प्रश्न का उत्तर देने में विफल रहे हैं "इन कार्यों के बारे में ऐसा क्या है जो परिणामी तारों को वापस लेना असंभव बनाता है?" आपका उत्तर उन गुणों पर केंद्रित है जो एक क्रिप्टोग्राफिक हैश के पास होने चाहिए, लेकिन उनकी व्याख्या md5 द्वारा कैसे की जाती है, इसका शून्य विवरण है। आप MD5 sums की गणना के लिए सटीक एल्गोरिदम यहां बता सकते हैं कि यह कैसे प्रतिवर्ती नहीं है, लेकिन अन्य उत्तर नॉटी-ग्रिटिज़ में जाने के बिना एक सरल विवरण प्रदान करते हैं।
ऑटोडिडैक्ट

(cont ...) 2. ये स्पष्टीकरण मूलभूत समस्या को दिखाने के लिए "गणित" का उपयोग करते हैं, जिसके कारण ऐसे ऑपरेशन ढीली जानकारी देते हैं और अपरिवर्तनीय हो जाते हैं।
ऑटोडिडैक्ट

1
@SandeepDatta I ने इस बारे में कुछ पैराग्राफ जोड़े।
पाओलो एबरमन

1
जबकि इस सूत्र में अन्य उत्तर तकनीकी रूप से सही हैं, लेकिन यह उत्तर सबसे उपयोगी है। गैर-इंजेक्शन फ़ंक्शन f (x) = 1 गैर-प्रतिवर्ती, लेकिन निर्बाध है। हैशिंग की उपयोगिता प्रीमीज प्रतिरोध में निहित है, जहां किसी भी इनपुट को एक विशिष्ट आउटपुट देने में मुश्किल होती है ।
जस्टिन जे स्टार्क

18

कोडी ब्रोचेस का जवाब सही है। कड़ाई से बोलते हुए, आप हैश फ़ंक्शन को "इनवर्ट" नहीं कर सकते क्योंकि कई स्ट्रिंग्स को एक ही हैश में मैप किया जाता है। हालाँकि, ध्यान दें कि या तो एक स्ट्रिंग जो किसी दिए गए हैश में मैप की जाती है, या एक ही हैश (यानी टकराव ) के लिए मैप किए गए दो स्ट्रिंग्स को ढूंढना , एक क्रिप्टोकरंसी के लिए प्रमुख सफलताएं होंगी। इन दोनों समस्याओं की बड़ी कठिनाई यही कारण है कि क्रिप्टोग्राफी में अच्छे हैश फ़ंक्शन उपयोगी हैं।


12

MD5 एक अद्वितीय हैश मूल्य नहीं बनाता है; MD5 का लक्ष्य जल्दी से एक मूल्य उत्पन्न करना है जो स्रोत में मामूली बदलाव के आधार पर महत्वपूर्ण रूप से बदलता है।

उदाहरण के लिए,

"hello" -> "1ab53"
"Hello" -> "993LB"
"ZR#!RELSIEKF" -> "1ab53"

(जाहिर है कि यह वास्तविक एमडी 5 एन्क्रिप्शन नहीं है)

अधिकांश हैश (यदि सभी नहीं हैं) भी गैर-अद्वितीय हैं; बल्कि, वे काफी अद्वितीय हैं , इसलिए एक टकराव बेहद असंभव है, लेकिन फिर भी संभव है।


8

हैश एल्गोरिथम के बारे में सोचने का एक अच्छा तरीका है कि फ़ोटोशॉप में एक छवि को आकार देने के बारे में सोचें ... कहते हैं कि आपकी एक छवि है जो 5000x5000 पिक्सेल की है और आप इसे केवल 32x32 में आकार देते हैं। आपके पास अभी भी मूल छवि का प्रतिनिधित्व है, लेकिन यह बहुत छोटा है और इसे छवि डेटा के कुछ हिस्सों को प्रभावी रूप से "दूर फेंक" दिया गया है ताकि यह छोटे आकार में फिट हो सके। इसलिए यदि आप उस 32x32 छवि को 5000x5000 तक का आकार परिवर्तन करने वाले थे, तो आपको एक धुंधली गड़बड़ मिलेगी। हालाँकि, क्योंकि एक 32x32 छवि इतनी बड़ी नहीं है कि यह सैद्धांतिक रूप से बोधगम्य होगा कि एक ही छवि को ठीक उसी पिक्सेल का उत्पादन करने के लिए छोटा किया जा सकता है!

यह सिर्फ एक सादृश्य है, लेकिन यह समझने में मदद करता है कि एक हैश क्या कर रहा है।


3
जबकि छवि-आकार बदलना एक हानिपूर्ण प्रक्रिया है, फिर भी मूल 5000 × 5000 आकार में एक छवि का उत्पादन करना काफी आसान है जो (फिर से सिकुड़ने वाले कार्य को लागू करते समय) उसी 32 × 32 छवि को कम कर देगा। एक अच्छे हैश फंक्शन के लिए इस तरह के प्रिमिज को खोजना कठिन होना चाहिए ।
पाओलो एबरमन

4

एक हैश टकराव की संभावना बहुत अधिक है जितना आप सोचेंगे। जन्मदिन विरोधाभास पर एक नज़र डालें कि क्यों की एक बड़ी समझ है।


1
365 संभावित जन्मदिन मान हैं, जो 2 ^ 8 और 2 ^ 9 के बीच है। 128-बिट हैश में 2 ^ 128 संभावित मान हैं - 2 ^ 120 गुना अधिक। हां, टकराव की संभावना आपके द्वारा घुसपैठ की तुलना में अधिक हो सकती है, लेकिन वे अभी भी खगोलीय रूप से असंभावित हैं।
टिम कीटिंग

हैश टक्कर में एक अच्छा मौका देने के लिए आपको लगभग 2 ^ 64 विभिन्न मूल्यों की आवश्यकता होगी। अभी भी काफी कुछ।
पाओलो एबरमन

4

चूंकि संभावित इनपुट फ़ाइलों की संख्या 128-बिट आउटपुट की संख्या से बड़ी है, इसलिए प्रत्येक संभव के लिए MD5 हैश को विशिष्ट रूप से असाइन करना असंभव है।

क्रिप्टोग्राफ़िक हैश फ़ंक्शंस का उपयोग डेटा अखंडता या डिजिटल हस्ताक्षरों की जाँच के लिए किया जाता है (दक्षता के लिए हैश पर हस्ताक्षर किए जा रहे हैं)। इसलिए मूल दस्तावेज़ को बदलना चाहिए इसका मतलब मूल हैश बदल दस्तावेज़ से मेल नहीं खाता है।

इन मानदंडों का उपयोग कभी-कभी किया जाता है:

  1. प्रतिरोध प्रतिरोध: किसी दिए गए हैश फ़ंक्शन और दिए गए हैश के लिए, उस इनपुट को खोजने के लिए मुश्किल होना चाहिए जो उस फ़ंक्शन के लिए दिया गया हैश है।
  2. दूसरा प्रीइमेज रेजिस्टेंस: दिए गए हैश फंक्शन और इनपुट के लिए, एक ही हैश के साथ दूसरा, अलग, इनपुट ढूंढना मुश्किल होना चाहिए।
  3. टकराव प्रतिरोध: किसी दिए गए फ़ंक्शन के लिए, एक ही हैश के साथ दो अलग-अलग इनपुट ढूंढना मुश्किल होना चाहिए।

इन मानदंडों को किसी दिए गए हैश से मेल खाने वाले दस्तावेज़ को खोजने के लिए मुश्किल बनाने के लिए चुना जाता है, अन्यथा मूल को हैश द्वारा मिलान किए गए एक के साथ बदलकर दस्तावेज़ बनाना संभव होगा। (भले ही प्रतिस्थापन अस्पष्ट हो, मूल के मात्र प्रतिस्थापन में व्यवधान हो सकता है।)

नंबर 3 का मतलब है नंबर 2।

विशेष रूप से एमडी 5 के लिए, यह त्रुटिपूर्ण दिखाया गया है: एमडी 5 और अन्य हैश कार्यों को कैसे तोड़ना है


2

लेकिन यह वह जगह है जहां इंद्रधनुष टेबल खेलने में आते हैं। मूल रूप से यह मूल्यों की एक बड़ी मात्रा है separetely और फिर परिणाम डिस्क पर सहेजा जाता है। फिर एक बहुत बड़ी तालिका में लुकअप करने के लिए "बिट" को उल्टा करना है।

स्पष्ट रूप से यह केवल सभी संभव इनपुट मूल्यों के सबसेट के लिए संभव है, लेकिन यदि आप इनपुट मूल्य की सीमा जानते हैं तो इसकी गणना करना संभव हो सकता है।


आह हाँ। मुझे हैश टेबल्स ( codinghorror.com/blog/archives/000949.html ) पर जेफ़ की पोस्ट पढ़ने में मज़ा आया और इस थ्रेड ने अवधारणा को समझने में मदद की है।
बारफून


1

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

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


1

यह समझने का सबसे अच्छा तरीका है कि सभी सबसे अधिक वोट किए गए उत्तरों का मतलब वास्तव में एमडी 5 एल्गोरिदम को वापस करने का प्रयास करना है। मुझे याद है कि मैंने कुछ साल पहले MD5crypt एल्गोरिदम को वापस लाने की कोशिश की थी, मूल संदेश को पुनर्प्राप्त करने के लिए नहीं क्योंकि यह स्पष्ट रूप से असंभव है, लेकिन सिर्फ एक संदेश उत्पन्न करने के लिए जो मूल हैश के समान हैश का उत्पादन करेगा। यह, कम से कम सैद्धांतिक रूप से, मुझे एक लिनक्स डिवाइस को लॉगिन करने का एक तरीका प्रदान करेगा जो उपयोगकर्ता को संग्रहीत करता है: मूल संदेश का उपयोग करने के बजाय जनरेट किए गए संदेश (पासवर्ड) का उपयोग करके / etc / passwd फ़ाइल में पासवर्ड। चूँकि दोनों संदेशों में समान परिणामी हैश होगा, इसलिए सिस्टम मेरे पासवर्ड (मूल हैश से उत्पन्न) को मान्य मान लेगा। यह बिल्कुल काम नहीं किया। कई हफ्तों के बाद, अगर मुझे सही ढंग से याद है, तो नमक का उपयोगप्रारंभिक संदेश में मुझे मार डाला। मुझे न केवल एक मान्य प्रारंभिक संदेश का उत्पादन करना था, बल्कि एक नमकीन मान्य प्रारंभिक संदेश, जो मैं कभी नहीं कर पाया। लेकिन मुझे इस प्रयोग से जो ज्ञान मिला वह अच्छा था।


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

0

परिभाषा के अनुसार हैश (क्रिप्टोग्राफिक हैश) फ़ंक्शन: इनवर्टर नहीं होना चाहिए, इसमें टकराव नहीं होना चाहिए (कम से कम संभव)।

अपने प्रश्न को पुनः दर्ज करें: यह एक तरह से हैश है। इनपुट (लंबाई की परवाह किए बिना) एक निश्चित आकार का आउटपुट उत्पन्न करेगा। (यह algo (MD5 के लिए 512 बिट सीमा) पर आधारित होगा। जानकारी संकुचित (खो) है और व्यावहारिक रूप से रिवर्स ट्रांसफ़ॉर्म से उत्पन्न करना संभव नहीं है।

MD5 पर अतिरिक्त जानकारी: यह टकराव की चपेट में है। इस लेख के माध्यम से हाल ही में, http://www.win.tue.nl/hashclash/Nostradamus/

क्रिप्टो हैश कार्यान्वयन के लिए स्रोत कोड (MD5 और SHA) मोज़िला कोड में पाया जा सकता है। (freebl पुस्तकालय)।


0

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

उदाहरण के लिए http://gdataonline.com/seekhash.php पर निम्न हैश कोड जानने की कोशिश करें कि मैंने हैश की गणना करने के लिए किस पाठ का उपयोग किया है

aea23489ce3aa9b6406ebb28e0cda430

आह, हाँ, एक आम 7-अक्षर शब्द का हैश। अब व्हॉट्सएप और विराम चिह्न के साथ इस 11-शब्द गीत गीत का पता लगाने के लिए इसका उपयोग करें: 9f2c08d4e6158bd4854b15be50c8daa8। कई मिलनिया में मिलते हैं।
टिम किटिंग

6fba2bbab8a8366309bf67c7df12c622? संकेत: यह Mac OS X के विशिष्ट संस्करण का OEM संस्करण हो सकता है!
विद्वान

@ टाइम किटिंग, @ शेचरैंड: बस हैश एल्गोरिदम की कमजोरी की ओर इशारा करते हैं, क्योंकि एक स्ट्रिंग का हैश हमेशा एक ही होता है हमें वास्तविक स्ट्रिंग का पता लगाने के लिए एल्गोरिदम को क्रैक करने की आवश्यकता नहीं है।
बाबर

2
लेकिन ऐसा आपने नहीं कहा। आपने कहा कि हैश "सभी संभावित तारों के लिए पूर्वनिर्मित है और आसान पहुंच के लिए संग्रहीत है" जो कि वर्तमान में गलत है ("सभी संभव तार" का सेट अनंत है ... और यहां तक ​​कि "सभी प्रशंसनीय तार" का सेट वास्तव में बड़ा है )। IMHO यह गलतफहमी देता है कि एक उचित पासफ़्रेज़ के खिलाफ एक शब्दकोश हमला करना कितना आसान है।
टिम कीटिंग

0

f (x) = 1 अपरिवर्तनीय है। हैश फ़ंक्शन अपरिवर्तनीय नहीं हैं।

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

यहां भी और कहीं-कहीं लोगों में भ्रम है, जिनके पास गणितीय ज्ञान है, लेकिन ज्ञान की थोड़ी-बहुत जानकारी है। कई सिफर केवल कीस्ट्रीम के साथ डेटा को XOR करते हैं, और इसलिए आप कह सकते हैं कि एक सिफरटेक्स्ट उस लंबाई के सभी प्लेनटेक्स्ट से मेल खाता है क्योंकि आप किसी भी कीस्ट्रीम का इस्तेमाल कर सकते थे।

हालाँकि, यह ध्यान नहीं देता है कि बीज से उत्पादित एक सादा सादा कपड़ा passwordबहुत अधिक होता है, बीज की तुलना में किसी अन्य द्वारा उत्पादित होने की संभावना Wsg5Nm^bkI4EgxUOhpAjTmTjO0F!VkWvysS6EEMsIJiTZcvsh@WI$IH$TYqiWvK!%&Ue&nk55ak%BX%9!NnG%32ftud%YkBO$U6oइस हद तक होती है कि कोई भी यह दावा करता है कि दूसरा संभावित रूप से हँसेगा।

उसी तरह, यदि आप दो संभावित पासवर्डों के बीच निर्णय लेने की कोशिश कर रहे हैं passwordऔर Wsg5Nm^bkI4EgxUO, यह उतना मुश्किल नहीं है जितना कि कुछ गणितज्ञों का मानना ​​है।


आप अपने अधिकांश सिफर को केवल कीस्ट्रीम ज्ञान के साथ डेटा कहां से प्राप्त करते हैं ? यह धारा सिफर के लिए सही है, लेकिन ब्लॉक सिफर भी हैं, और वे इस तरह से काम नहीं करते हैं।
पाओलो एबरमैन

-5

मुझे सभी विभिन्न तर्क पसंद हैं। यह स्पष्ट है कि हैश के मूल्यों का वास्तविक मूल्य केवल पासवर्ड जैसे स्ट्रिंग्स के लिए मानव-अपठनीय प्लेसहोल्डर प्रदान करना है। इसका कोई विशिष्ट संवर्धित सुरक्षा लाभ नहीं है। हमलावर को मान लिया गया कि हैशेड पासवर्ड वाली मेज पर पहुंच गया है, वह:

  • अपनी पसंद का एक पासवर्ड हैश करें और पासवर्ड तालिका के अंदर परिणामों को रखें, यदि उसके पास तालिका के लेखन / संपादन अधिकार हैं।
  • सामान्य पासवर्ड के हैशेड मान उत्पन्न करें और पासवर्ड तालिका में समान हैशेड मूल्यों के अस्तित्व का परीक्षण करें।

इस मामले में कमजोर पासवर्ड को इस तथ्य से संरक्षित नहीं किया जा सकता है कि वे हैशेड हैं।


"हैशेड मान" का वास्तविक मूल्य मानव-अपठनीय प्लेसहोल्डर्स प्रदान करना नहीं है। यदि If पासवर्ड 1 ’val न्यूवैल’ को हैश किया जाता है, तो क्या वह अभी भी समान तरीके से मूल्य नहीं छिपाता है, हालांकि हैश पठनीय और सार्थक है? इसके अलावा, पासवर्ड एक BAD उदाहरण हैं, क्योंकि उन्हें कभी भी हैश नहीं किया जाना चाहिए। हमलावर ने कहा कि डेटाबेस के लिए उपयोग लिखा था, कि निश्चित रूप से एक संभावना है। हालाँकि ऐसा लगता है कि आप केवल इस तरह के हैशिंग कार्यों के लिए उचित उपयोग को छोड़ रहे हैं, एक उदाहरण ऊपर दिए गए कई उत्तरों में उल्लिखित है - संदेश अखंडता। यही कारण है कि मैं आज वास्तव में इस धागे पर हूं।
शेन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.