2010-02-19 10 views
7

यदि मैं डेटा के मुकाबले एक बड़े बाइट आकार (उदाहरण के लिए शा -256) के साथ हैश एल्गोरिदम का उपयोग करके समान डेटा (सामाजिक सुरक्षा संख्या, उदाहरण के लिए) हैशिंग है, तो हैश विशिष्टता के समान स्तर की गारंटी देगा मूल डेटा के रूप में?क्या ऐसी परिस्थितियां हैं जहां हैश एल्गोरिदम को अद्वितीय गारंटी दी जा सकती है?

उत्तर

1

यदि आप एसएचए की तरह क्रिप्टोग्राफ़िक हैश का उपयोग कर रहे हैं, तो संक्षिप्त उत्तर हाँ है।

+0

धन्यवाद। मैं ऐसा सोच रहा था, लेकिन मुझे इसका समर्थन करने का कोई संदर्भ नहीं मिला और मैं गणित में खोदने के लिए पर्याप्त बुद्धिमान नहीं हूं और एक तरफ या दूसरा निष्कर्ष निकाला हूं! – matt

+1

जैसा ऊपर बताया गया है, एक क्रिप्टोग्राफ़िक हैश बस कहता है कि टक्कर असाधारण रूप से असंभव है, असंभव नहीं है। – Novelocrat

+3

@ नोवेलक्रेट, मूल प्रश्न का * संक्षिप्त * उत्तर हाँ है। सिद्धांत रूप में एक टकराव संभव है, टकराव खोजने का औसत समय सूर्य के लाल लाल रंग में विकसित होने और पृथ्वी को नष्ट करने के समय से काफी लंबा है। –

5

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

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

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

+0

धन्यवाद। मैं हैशिंग एसएसएन और एक "खाता" पहचानकर्ता पर विचार कर रहा हूं जो प्रत्येक कार्यान्वयन के साथ भिन्न हो सकता है। इसलिए यदि मैं प्री-जेनरेट की बजाय हैश फ़ंक्शन का उपयोग कर सकता हूं, तो यह बेहतर होगा। – matt

+0

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

1

cryptographically secure hash function की एक प्रमुख विशेषता यह है कि इनपुट के बावजूद आप उचित संदेह से परे टक्कर से सुरक्षित हैं। यह आउटपुट के आकार की तुलना में इनपुट के लिए भी मान्य है, जो कि छोटे एन्ट्रॉपी के साथ एक लंबा संदेश है। तो आप टकराव के बारे में चिंता किए बिना SHA-2 का उपयोग कर सकते हैं।

4

हैश टकराव की संभावना इनपुट स्ट्रिंग के आकार से कुछ लेना देना नहीं है (इस सीमा को छोड़कर कि यह इंगित करता है कि आपको विशिष्टता रखने के लिए कितने इनपुट की आवश्यकता है)। जब हैश 0 और 1 एक परिपूर्ण हैश एल्गोरिदम का उपयोग करते हुए हैश टकराव होना संभव है, हालांकि संभावना 1/(2^बिट-लम्बाई) है। जो SHA-256 के मामले में प्रभावी रूप से शून्य है।

हैश टकराव जन्मदिन विरोधाभासी समस्या है। एक 256 बिट हैश के मामले में, दो आदानों के बीच एक टकराव की संभावना विशुद्ध रूप से आदानों की गिनती पर निर्भर है और है:

  • 1 - (2^256)!/((2^256^इनपुटकाउंट) * (2^256-इनपुटकाउंट)!) या जैसा कि अन्य ने कहा है - मूल रूप से इनपुट की उचित संख्या के लिए शून्य।
+0

सही होने का तरीका है। हालांकि, मैं सुरक्षा प्रभाव पर सवाल नहीं उठा रहा हूं। मैं हैश से विशिष्टता की संभावना के लिए पूछ रहा हूं जब डेटा का आकार हैश के आकार से कम है। (मुझे परिणामस्वरूप मान को निर्धारिती/दोहराने योग्य होने की आवश्यकता है, इसलिए एक्स बाइट्स का एक यादृच्छिक नमक मेरे लिए काम नहीं करता है। उदाहरण के लिए, मैं प्रति कार्यान्वयन निरंतर वर्ण जोड़कर "नमक" कर सकता हूं - उदाहरण के लिए, मैं '593jra' जैसे वर्ण जोड़ सकता हूं। हैशिंग से पहले एसएसएन के लिए)। – matt

+0

कबूतर सिद्धांत पर आधारित जन्मदिन विरोधाभास नहीं है? यदि हां, तो सिद्धांत में मेरे पास कबूतर परिदृश्य नहीं है। – matt

+0

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

2

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

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