क्या व्यवहार में SHA टकराव की संभावना को अनदेखा करना सुरक्षित है?


209

मान लीजिए कि हमारे पास एक बिलियन अद्वितीय चित्र हैं, प्रत्येक मेगाबाइट है। हम प्रत्येक फ़ाइल की सामग्री के लिए SHA-256 हैश की गणना करते हैं। टक्कर की संभावना इस पर निर्भर करती है:

  • फ़ाइलों की संख्या
  • एकल फ़ाइल का आकार

हम इस संभावना को अनदेखा करते हुए कितनी दूर जा सकते हैं, यह मानते हुए कि यह शून्य है?


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

हां, इस मामले में, यदि आप फ़ाइल आकार की तुलना करते हैं, तो संभावना काफी कम हो जाती है। आप दो हैशिंग एल्गोरिदम का उपयोग कर सकते हैं और परिणामों को संक्षिप्त कर सकते हैं। फिर, एक ही समय में दोनों के टकराने की संभावना कम हो जाती है। लेकिन, सवाल यह है कि "निष्पक्ष" कितना सुरक्षित है? शायद हमें एक सूत्र और संख्या की आवश्यकता है।
Hristo Hristov

2
@ हिस्ट्रो हिस्ट्रोव: अगर हम मानते हैं कि हैश कुंजी एक छद्म यादृच्छिक संख्या है (जो सैद्धांतिक रूप से सही है) तो 128 बिलियन कुंजी की एक अरब 2.9 * 10 ^ -30 की टक्कर की संभावना देती है। आप इसे "
मिनीस्कूल

3
@mojuba: और भी बेहतर, वह 256-बिट हैश के बारे में पूछ रहा है।
माइकल बोर्गवर्ड

FWIW: GIT संस्करण नियंत्रण प्रणाली उनकी सामग्री SHA द्वारा फ़ाइलों की पहचान करती है।
स्नोमार्क

जवाबों:


385

सामान्य उत्तर इस प्रकार है: क्या संभावना है कि एक बदमाश क्षुद्रग्रह अगले सेकंड के भीतर पृथ्वी पर दुर्घटनाग्रस्त हो जाए, सभ्यता-जैसा-हम-यह जानते हैं, और कुछ अरब लोगों को मार डालते हैं? यह तर्क दिया जा सकता है कि संभावना से कम किसी भी अशुभ घटना की तुलना में वास्तव में बहुत महत्वपूर्ण नहीं है।

अगर हम उत्पादन आकार के साथ एक "सही" हेश फंक्शन है n , और हमारे पास पी हैश को संदेश (व्यक्तिगत संदेश लंबाई महत्वपूर्ण नहीं है), तो टकराव की संभावना के बारे में है पी 2 /2 n + 1 (यह एक सन्निकटन है जो है "छोटे" पी के लिए वैध , यानी 2 एन / 2 से काफी छोटा )। उदाहरण के लिए, SHA-256 ( n = 256 ) और एक बिलियन संदेश ( p = 10 9 ) के साथ तो संभावना लगभग 4.3 * 10 -60 है

हर 30 मिलियन वर्षों में औसतन एक बार हत्या करने वाला स्पेस रॉक होता है। इसके कारण इस तरह की घटना अगले 10 से 15 -15 में होने की संभावना है । यह SHA-256 टकराव की तुलना में अधिक संभावित परिमाण के 45 आदेश हैं। संक्षेप में कहा गया है, यदि आपको SHA-256 टक्कर डरावनी लगती है तो आपकी प्राथमिकताएँ गलत हैं।

एक सुरक्षा सेटअप में, जहां एक हमलावर को उन संदेशों को चुनने के लिए मिलता है, जिन्हें हैश किया जाएगा, फिर हमलावर एक अरब से अधिक संदेशों का उपयोग कर सकता है; हालाँकि, आप पाएंगे कि हमलावर की सफलता की संभावना अभी भी गायब हो जाएगी। यह 256-बिट आउटपुट के साथ हैश फ़ंक्शन का उपयोग करने का पूरा बिंदु है: ताकि टकराव के जोखिमों की उपेक्षा की जा सके।

बेशक, उपरोक्त सभी मानते हैं कि SHA-256 एक "संपूर्ण" हैश फ़ंक्शन है, जो सिद्ध होने से बहुत दूर है। फिर भी, SHA-256 काफी मजबूत लगता है।


12
यह एक बहुत अच्छा जवाब है, धन्यवाद! लेकिन, अगर टक्कर के मामले में एक परमाणु ऊर्जा संयंत्र विस्फोट हो जाएगा, और यह आप पर निर्भर करता है, तो क्या आप उस जोखिम को उठाएंगे? यदि आप पूरी तरह से सही हैं, तो हम जोखिम उठा सकते हैं, क्योंकि यह परिमाण के 45 आदेश हैं जो सभ्यता को नष्ट करने की अधिक संभावना है। सही?
हिस्टो हिस्ट्रोव

46
@ हिस्ट्रो मुझे लगता है कि हाँ, कोई भी यह जोखिम उठाएगा। एक परमाणु ऊर्जा संयंत्र पहले से ही एक है अब तक यांत्रिक विफलता, यह या ऑपरेटर त्रुटि के निर्माण में मानवीय भूल की तरह, अन्य बातों के की वजह से विस्फोट, जबकि यह चल रहा है, और हम पहले से ही उन अवसरों को ले जा रहे हैं की उच्च मौका। यदि SHA-256 टकराव केवल परमाणु घटनाओं का कारण होता है, तो हम निश्चित रूप से अब तक बिल्कुल शून्य थे।
रोमन स्टार्कोव

27
foxnews.com/science/2013/02/11// मैं SHA512 के बारे में सोचना शुरू करूँगा।
डस्टिन ऑपेरा

37
मैं अब यह जानकर आसानी से आराम कर सकता हूं कि मुझे SHA-256 टकराव का अनुभव करने के लिए जीवित रहने से बहुत पहले एक क्षुद्रग्रह द्वारा मिटा दिया जाएगा।
एरोनल्स

10
क्षमा करें, आप तथाकथित "जन्मदिन विरोधाभास" को याद कर रहे हैं। "अच्छी तालिका" पर बेहतर नज़र डालें, यह आपके सोचने के तरीके पर काम नहीं करता है। मेरे द्वारा दिए गए आंकड़ों के लिए, उस तालिका में, "4.3 * 10 ^ -60" और पंक्ति "128 बिट्स" वाले कॉलम में "10 ^ 9" का मान होगा (लेकिन तालिका 10 ^ -18 से नीचे नहीं जाती है )।
थॉमस पोर्निन

47

टकराव की संभावना फाइलों के आकार पर निर्भर नहीं करती है, केवल उनकी संख्या पर।

यह जन्मदिन के विरोधाभास का एक उदाहरण है । विकिपीडिया पृष्ठ टकराव की संभावना का अनुमान देता है। यदि आप संख्याओं को चलाते हैं, तो आप देखेंगे कि पृथ्वी पर अब तक निर्मित सभी हार्डडिस्क SHMB-256 के लिए 0.01% की टक्कर की संभावना प्राप्त करने के लिए पर्याप्त 1MB फाइलें भी नहीं पकड़ सकते हैं।

असल में, आप बस संभावना को नजरअंदाज कर सकते हैं।


5
मैं निष्कर्ष से सहमत नहीं हो सकता। हां, कोई भी हार्ड डिस्क उस संख्या को संग्रहीत नहीं कर सकता है, लेकिन आप IMO स्थिति की गलत व्याख्या करते हैं। टकराव पैदा करने में केवल दो फाइलें लगती हैं। हालांकि संभावना बहुत कम है यह अभी भी हो सकता है।
शार्प्यूट

11
@ साभार: नहीं, मैं स्थिति को गलत नहीं बता रहा हूं। आपके और आपके द्वारा ज्ञात एक ही दिन सड़क दुर्घटना से मरने की संभावना बहुत कम है, लेकिन यह अभी भी हो सकता है (और यह SHA-256 टकराव की तुलना में बहुत अधिक है)। फिर भी आप उस संभावना को नजरअंदाज कर रहे हैं।
माइकल बोर्गवर्ड

11
@ शेराप्यूट: मैं कुछ सौ विशिष्ट लोगों के अलग-अलग , एक साथ सड़क दुर्घटनाओं के बारे में बात कर रहा था । उस निचले हिस्से को बनाने के लिए आप वास्तव में कोई कदम नहीं उठा सकते। यह व्यर्थ होगा, क्योंकि यह पहले से ही कम है। लेकिन अभी भी SHA-256 की टक्कर से इतनी अधिक संभावना है कि आप कल्पना भी नहीं कर सकते कि कितना। यह वही तर्क है जो थॉमस ने बनाया था।
माइकल बोर्गवर्ड

12
@ साभार: नहीं, संभावना काफी नहीं बढ़ती है, क्योंकि संख्या अभी भी SHA-256 हैश स्पेस के आकार से बिल्कुल बौनी है। यह वह चीज है जिसे आप ठीक से ध्यान नहीं दे रहे हैं - सभी कारकों को उनके वास्तविक परिमाण द्वारा भारित करना होगा, समान रूप से नहीं। यदि आपने पृथ्वी पर हर एक व्यक्ति के लिए प्रति सेकंड एक बिलियन हैश उत्पन्न किया, और एक हजार वर्षों के लिए किया, तो आपके पास टक्कर का 1% से भी कम मौका होगा।
माइकल बोर्गवर्ड

3
यदि आप मेमोरी से प्रत्येक भ्रूण पर एक अज्ञात त्रुटि की संभावना की जांच नहीं करते हैं या डिस्क से पढ़ते हैं (जिसमें SHA-256 टकराव की तुलना में कहीं अधिक संभावना है), तो आप पूरी तरह से संभावनाओं को नहीं समझ सकते हैं।
क्रिस्टोफ़

17

सबसे पहले, यह शून्य नहीं है, लेकिन शून्य के बहुत करीब है

महत्वपूर्ण सवाल यह है कि यदि वास्तव में टकराव होता है तो क्या होता है ? यदि उत्तर "एक परमाणु ऊर्जा संयंत्र विस्फोट होगा" तो आप टकराव की संभावना को नजरअंदाज नहीं करना चाहिए। ज्यादातर मामलों में नतीजे इतने गंभीर नहीं होते हैं और इसलिए आप टकराव की संभावना को नजरअंदाज कर सकते हैं।

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


... कॉपियों के # द्वारा नहीं, बल्कि # डेटासेट के सभी प्रतियाँ पचती हैं।
एंड्रियास स्पिंडलर

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

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


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