नहीं, एमडी 5 जैसे हैश फ़ंक्शन को रिवर्स करना संभव नहीं है: आउटपुट हैश मान को देखते हुए इनपुट संदेश को ढूंढना असंभव है जब तक कि इनपुट संदेश के बारे में पर्याप्त जानकारी न हो।
डिक्रिप्शन एक फ़ंक्शन नहीं है जिसे हैश फ़ंक्शन के लिए परिभाषित किया गया है; एन्क्रिप्शन और डिक्रिप्शन एक सिफर के कार्य हैं जैसे CBC मोड में AES; हैश फंक्शन एन्क्रिप्ट नहीं करते हैं और न ही डिक्रिप्ट होते हैं । हैश फ़ंक्शन का उपयोग इनपुट संदेश को पचाने के लिए किया जाता है । जैसा कि नाम से ही स्पष्ट है कि डिजाइन द्वारा कोई रिवर्स एल्गोरिदम संभव नहीं है ।
MD5 को क्रिप्टोग्राफिक रूप से सुरक्षित, वन-वे हैश फ़ंक्शन के रूप में डिज़ाइन किया गया है । एमडी 5 के लिए टकराव उत्पन्न करना अब आसान है - भले ही इनपुट संदेश का एक बड़ा हिस्सा पूर्व निर्धारित हो। तो एमडी 5 आधिकारिक तौर पर टूट गया है और एमडी 5 को अब क्रिप्टोग्राफिक रूप से सुरक्षित हैश नहीं माना जाना चाहिए। हालांकि एक इनपुट संदेश मिलना अभी भी असंभव है जो हैश वैल्यू की ओर जाता है: एक्स को तब खोजें जब केवल एच (एक्स) ज्ञात हो (और एक्स में प्री-कम्यूटेड डेटा के कम से कम एक 128 बाइट ब्लॉक के साथ पूर्व-संकलित संरचना नहीं है) । एमडी 5 के खिलाफ कोई पूर्व-छवि हमले नहीं हैं ।
आमतौर पर डेटाबेस की तुलना करने या तथाकथित इंद्रधनुष तालिकाओं में पासवर्ड हैश को खोजने और खोजने की कोशिश करने के लिए, ब्रूट फोर्स या (संवर्धित) डिक्शनरी हमलों का उपयोग करके पासवर्ड का अनुमान लगाना संभव है। यदि कोई मिलान पाया जाता है तो यह कम्प्यूटेशनल रूप से निश्चित है कि इनपुट मिल गया है। टकराव के हमलों के खिलाफ हैश फ़ंक्शंस भी सुरक्षित हैं: X'
ऐसा लगता है कि H(X') = H(X)
दिया गया है H(X)
। तो अगर X
यह पाया जाता है कि यह कम्प्यूटेशनल रूप से निश्चित है कि यह वास्तव में इनपुट संदेश था। अन्यथा आप सभी के बाद टकराव का प्रदर्शन होता। रेनबो टेबल का उपयोग हमलों को तेज करने के लिए किया जा सकता है और वहाँ विशेष इंटरनेट संसाधन हैं जो आपको एक विशिष्ट हैश दिए गए पासवर्ड को खोजने में मदद करेंगे।
अन्य प्रणालियों पर उत्पन्न पासवर्ड को सत्यापित करने के लिए हैश मान का फिर से उपयोगH(X)
करना निश्चित रूप से संभव है । केवल एक चीज जिसे प्राप्त करने की प्रणाली है, F
वह H(X)
इनपुट के रूप में निर्धारित होने वाले नियतात्मक फ़ंक्शन के परिणाम को संग्रहीत करना है । जब X
सिस्टम को दिया जाता है तब H(X)
और इसलिए F
पुनर्गणना की जा सकती है और परिणामों की तुलना की जा सकती है। दूसरे शब्दों में, यह सत्यापित करने के लिए हैश मान को डिक्रिप्ट करने की आवश्यकता नहीं है कि एक पासवर्ड सही है, और आप अभी भी हैश को एक अलग मान के रूप में संग्रहीत कर सकते हैं।
एमडी 5 के बजाय एक पासवर्ड हैश या पीबीकेडीएफ (पासवर्ड आधारित कुंजी व्युत्पत्ति फ़ंक्शन) का उपयोग करना महत्वपूर्ण है। ऐसा फ़ंक्शन निर्दिष्ट करता है कि एक हैश के साथ नमक का उपयोग कैसे किया जाए । इस तरह से समान हैश समान पासवर्ड (अन्य उपयोगकर्ताओं या अन्य डेटाबेस से) के लिए उत्पन्न नहीं होगा। उस कारण से पासवर्ड हैश भी इंद्रधनुष की तालिकाओं का उपयोग करने की अनुमति नहीं देता है जब तक कि नमक पर्याप्त बड़ा और ठीक से यादृच्छिक न हो।
पासवर्ड हैश में एक कार्य कारक भी होता है (कभी-कभी इसे पुनरावृत्ति गणना का उपयोग करके कॉन्फ़िगर किया जाता है ) जो हमलों को काफी धीमा कर सकता है जो नमक और हैश मान को दिए गए पासवर्ड को खोजने का प्रयास करता है। यह महत्वपूर्ण है क्योंकि लवण और हैश मूल्यों वाले डेटाबेस को चुराया जा सकता है। अंत में, पासवर्ड हैश मेमोरी-हार्ड भी हो सकता है ताकि हैश की गणना करने के लिए महत्वपूर्ण मात्रा में मेमोरी की आवश्यकता हो। यह विशेष हार्डवेयर (GPU के, ASIC, FPGA आदि) का उपयोग करने के लिए एक हमलावर को खोज को गति देने की अनुमति देना असंभव बनाता है। अन्य इनपुट या कॉन्फ़िगरेशन विकल्प जैसे कि काली मिर्च या समानीकरण की मात्रा भी पासवर्ड हैश के लिए उपलब्ध हो सकती है।
हालाँकि यह किसी को H(X)
भी H(X)
पासवर्ड हैश होने पर भी दिए गए पासवर्ड को सत्यापित करने की अनुमति देगा । पासवर्ड हैश अभी भी नियतात्मक हैं, इसलिए यदि किसी को सभी इनपुट और हैश एल्गोरिथ्म खुद पता है तो X
गणना करने के लिए H(X)
और फिर से - परिणाम की तुलना की जा सकती है।
आमतौर पर उपयोग किए जाने वाले पासवर्ड हैश bcrypt , scrypt और PBKDF2 हैं । विभिन्न रूपों में आर्गन 2 भी है जो हालिया पासवर्ड हैशिंग प्रतियोगिता का विजेता है। यहाँ पर CrackStation पासवर्ड सुरक्षा सही करने पर एक अच्छा ब्लॉग पोस्ट है।
यह संभव है कि विरोधी के लिए हैश गणना को सत्यापित करना संभव है कि एक पासवर्ड सही है। इसके लिए काली मिर्च को पासवर्ड हैश के इनपुट के रूप में इस्तेमाल किया जा सकता है। वैकल्पिक रूप से, हैश मूल्य निश्चित रूप से एईएस जैसे सिफर और सीबीसी या जीसीएम जैसे ऑपरेशन के एक मोड का उपयोग करके एन्क्रिप्ट किया जा सकता है। हालांकि इसके लिए स्वतंत्र रूप से एक गुप्त / कुंजी के भंडारण की आवश्यकता होती है और पासवर्ड हैश की तुलना में अधिक पहुंच आवश्यकताओं के साथ।