एक "सुरक्षित" हैश एक हैश है जिसे माना जाता है कि हैश बनाने के लिए इस्तेमाल किए गए संदेश के पूर्व ज्ञान के बिना एक फार्मूला, प्रतिलिपि प्रस्तुत करने योग्य तरीके से "स्पूफ" करना मुश्किल है। जैसा कि जानकारी आम तौर पर गुप्त है, इसलिए हैश की आवश्यकता है, यह प्रमाणीकरण में उपयोग के लिए हैशिंग फ़ंक्शन का एक अच्छा गुण है।
एक हैश को आम तौर पर "सुरक्षित" माना जाता है, यदि एक संदेश M, एक हैश फ़ंक्शन हैश (), और एक हैश मान H (M) द्वारा उत्पादित बिट L में लंबाई के साथ दिया जाता है, तो निम्न में से कोई भी इससे कम में प्रदर्शन नहीं किया जा सकता है। ओ (2 एल ) समय:
- दिया गया हैश () और एच, एम। का उत्पादन (प्रीइमेज रेजिस्टेंस)
- दिया गया हैश () और एम, एक अलग एम 2 का उत्पादन करें जैसे कि हैश (एम 2 ) == एच। (कमजोर टक्कर प्रतिरोध)
- दिया गया हैश (), किसी भी M 1 और M 2 का उत्पादन करें जैसे कि हैश (M 1 ) == हैश (M 2 )। (मजबूत टक्कर प्रतिरोध)
इसके अतिरिक्त, एक "सुरक्षित" हैश में एक हैश की लंबाई L होनी चाहिए जैसे कि 2 Lकिसी कंप्यूटर के लिए दिए गए मौजूदा हार्डवेयर को करने के लिए संभव कदम नहीं है। 32-बिट पूर्णांक हैश में केवल 2.1 बिलियन मान हो सकते हैं; जबकि एक प्राइमेज अटैक (एक संदेश जो एक विशिष्ट हैश एच पैदा करता है) को खोजने में थोड़ा समय लगेगा, यह कई कंप्यूटरों के लिए संभव नहीं है, विशेष रूप से सरकारी एजेंसियों के हाथों में जो कोड-ब्रेकिंग के साथ चार्टर्ड हैं। इसके अलावा, एक एल्गोरिथ्म जो यादृच्छिक संदेश बनाता है और संग्रहीत करता है और उनकी हैश संभावना के अनुसार होगा, केवल 77,000 संदेशों की कोशिश करने के बाद प्रत्येक नए संदेश के साथ डुप्लिकेट हैश खोजने में 50% शॉट होगा, और एक हिट करने के लिए 75% मौका होगा केवल 110,000 के बाद नकल। यहां तक कि 64-बिट हैश में अभी भी केवल 5 बिलियन मानों की कोशिश के बाद टकराने का 50% मौका है। इस तरह छोटी हैश पर जन्मदिन के हमले की शक्ति है। इसके विपरीत,डीकिल नंबर (1.5 * 10 34 )।
क्रिप्टोग्राफिक हैश पर अधिकांश प्रदर्शन किए गए हमले टकराव के हमले हैं, और 2 एल से कम समय में टकराव वाले संदेश उत्पन्न करने की क्षमता का प्रदर्शन किया है (अधिकांश अभी भी घातीय-समय है, लेकिन घातांक को आधा करना जटिलता में एक महत्वपूर्ण कमी है। एक 256-बिट हैश को 128-बिट के रूप में हल करना आसान है, एक 128-बिट को 64-बिट के रूप में हल करना आसान है, आदि)।
छोटे हैश आकार के अलावा, अन्य कारक जो हैश डेन्स्ट्रैबली असुरक्षित बना सकते हैं:
कम काम - हैशटेबल या अन्य "चेकसम" के उपयोग के लिए डिज़ाइन किया गया एक हैशट आमतौर पर कम्प्यूटेशनल रूप से सस्ती होने के लिए डिज़ाइन किया गया है। यह बहुत आसान है कि एक जानवर बल पर हमला करता है।
"स्टिकी स्टेट" - हैशिंग फ़ंक्शन इनपुट के पैटर्न के लिए प्रवृत्त होता है जहां इनपुट के एक विशेष अतिरिक्त बाइट दिए जाने पर अब तक के सभी इनपुटों का वर्तमान हैशेड मूल्य नहीं बदलता है। "चिपचिपा राज्य" होने से टकराव को ढूंढना आसान हो जाता है, क्योंकि एक बार जब आप "चिपचिपा राज्य" हैश का उत्पादन करने वाले संदेश की पहचान करते हैं, तो अन्य संदेश उत्पन्न करने के लिए यह तुच्छ होता है कि इनपुट बाइट्स को जोड़कर वही हैश होता है जो हैश को अपने "चिपचिपी अवस्था" में रखता है। "।
प्रसार - संदेश के प्रत्येक इनपुट बाइट को समान-जटिल तरीके से हैश मान के बाइट्स के बीच वितरित किया जाना चाहिए। कुछ हैश फ़ंक्शन हैश में कुछ बिट्स के लिए अनुमानित परिवर्तन पैदा करते हैं। यह फिर से टकराव निर्माण को तुच्छ बनाता है; एक संदेश जो हैश पैदा करता है, टकराव को आसानी से संदेश के नए मूल्यों को पेश करके बनाया जा सकता है जो केवल बिट्स को प्रभावित करते हैं जो भविष्यवाणी में परिवर्तन करते हैं।