2011-01-13 13 views
18

मैंने सुना है कि हैश बनाते समय, यह संभव है कि यदि छोटी फाइलें या डेटा की मात्रा का उपयोग किया जाता है, तो परिणामस्वरूप हैश को टकराव से पीड़ित होने की अधिक संभावना होती है। यदि यह सच है, तो क्या यह सुनिश्चित करने के लिए उपयोग की जाने वाली न्यूनतम "सुरक्षित" मात्रा का डेटा उपयोग किया जाना चाहिए?SHA256/512 हैश उत्पन्न करते समय, हैश को डेटा की न्यूनतम 'सुरक्षित' राशि है?

मैं सवाल लगता है कि यह भी phrased जा सकता है के रूप में:

डेटा की छोटी राशि है कि सुरक्षित रूप से टुकड़ों में बांटा जा सकता है क्या है?

उत्तर

78

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

तो, यदि यह वास्तविक रूप से पर पर वास्तविक रूप से नहीं किया जा सकता है, तो आप उम्मीद कर सकते हैं कि (बुरी) किस्मत से टकराव न हो।

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

बस यह स्पष्ट करने के लिए कि एसएचए -256 के साथ टकराव का कितना जोखिम है: स्थानीय चिड़ियाघर या निजी मालिक से बचने वाले गोरिल्ला द्वारा अपने जोखिमों पर विचार करें। संभावना नहीं? हां, लेकिन यह अभी भी अनुमानित रूप से हो सकता है: ऐसा लगता है कि एक गोरिला Dallas zoo in 2004 से बच निकला और चार लोगों को घायल कर दिया; एक और गोरिल्ला same zoo in 2010 से बच निकला। मान लीजिए कि पूरे पृथ्वी पर हर 6 साल में केवल एक ही रैंपिंग गोरिल्ला है (न केवल डलास क्षेत्र में) और आप दुर्भाग्यपूर्ण चैप बन जाते हैं जो 6.5 अरबों की मानव आबादी से बाहर है, फिर गंभीर रूप से जोखिम -बोडली-हान-बाय-गोरिल्ला का अनुमान लगाया जा सकता है कि प्रति दिन 2 43.7 प्रति दिन। अब, पीसी के 10 हजार लें और उन्हें SHA-256 के लिए टकराव खोजने पर काम करें। टकराव मारने की संभावना 2 प्रति दिन 1 के करीब है - अरब से अधिक नाराज ऐप चीज़ से कम संभव है। निष्कर्ष यह है कि यदि आप SHA-256 टकराव से डरते हैं लेकिन हमेशा आपके साथ एक लोड शॉटगन नहीं रखते हैं, तो आप अपनी प्राथमिकताओं को गलत कर रहे हैं। इसके अलावा, टेक्सास के साथ गड़बड़ मत करो।

+5

मुझे या तो बंद करने की जरूरत है, या बंदूकें मेरे बिस्तर के करीब रखें। – Xeoncross

+6

मुझे लगता है कि गोरिल्ला हमले की संभावना को समायोजित किया जाना चाहिए क्योंकि नीदरलैंड में 2007 में कम से कम एक और गोरिल भाग निकला था। ;) Http://en.wikipedia.org/wiki/Bokito_(gorilla देखें) –

+3

यह संभावना का एक शानदार उदाहरण था। –

1

नहीं, संदेश की लंबाई टकराव की समानता को प्रभावित नहीं करती है।

यदि ऐसा होता है, तो एल्गोरिदम टूट जाता है।

आप सभी एक बाइट इनपुट के खिलाफ एसएचए चलाकर अपने आप को आजमा सकते हैं, फिर सभी दो बाइट इनपुट के खिलाफ और फिर, और देखें कि क्या आपको टक्कर मिलती है या नहीं। शायद नहीं, क्योंकि किसी ने कभी भी SHA-256 या SHA-512 (या कम से कम kept it a secret from Wikipedia)

+1

हाँ मैंने इसे शायद नहीं सोचा था, लेकिन मैंने सोचा कि यह जांचना समझदार था। – PeterM

-4

आपके आवेदन पर बहुत अधिक निर्भर करता है: यदि आप बस "हां" और "नहीं" तारों को परेशान कर रहे थे यह इंगित करने के लिए कि आपको मुझे $ 100,000 का ऋण देना चाहिए, यह एक बहुत बड़ी विफलता होगी - उत्तर का डोमेन बड़ा नहीं हो सकता है, इसलिए कोई आसानी से तार पर देखे गए हैंश को देख सकता है 'छोटे इनपुट' हैश आउटपुट का डेटाबेस।

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

लेकिन मुझे आपके प्रवृत्तियों से परे आपको इंगित करने के लिए कोई शोध नहीं है। माफ़ कीजिये।

+4

हैश फ़ंक्शन को रिवर्स करने के लिए एक छोटे इनपुट डोमेन (YES और NO) को बलपूर्वक बल देने की क्षमता टक्कर नहीं बनती है। – Thilo

+1

ओपी एक ही स्ट्रिंग के टकराव के बारे में बात नहीं कर रहा है, लेकिन इसके बजाय अलग-अलग तार। –

0

कोई न्यूनतम इनपुट आकार नहीं है। SHA-256 एल्गोरिदम प्रभावी रूप से एक यादृच्छिक मैपिंग और टक्कर संभावना इनपुट इनपुट पर निर्भर नहीं है। यहां तक ​​कि 1 बिट इनपुट भी 'सुरक्षित' है।

ध्यान दें कि इनपुट SHA-256 (SHA-512 के लिए 1024 के एकाधिक) के लिए 512 बिट्स (64 बाइट्स) के एकाधिक में पैड किया गया है। एसएचए -256 का उपयोग करते समय 12 बाइट इनपुट (जैसे थॉमस ने अपने उदाहरण में इस्तेमाल किया) लेते हुए, लंबाई 64 बाइट्स के 2^96 संभावित अनुक्रम हैं।

उदाहरण के तौर पर, एक 12 बाइट इनपुट हैलो वहाँ! (0x48656c6c6f20546865726521) एक बिट के साथ गद्देदार होगा, इसके बाद 351 शून्य बिट्स के बाद बिट्स में इनपुट की लंबाई के 64 बिट प्रतिनिधित्व के बाद 0x0000000000000060 है जो 512 बिट पैड किए गए संदेश का निर्माण करेगा। यह 512 बिट संदेश हैश की गणना के लिए इनपुट के रूप में उपयोग किया जाता है।

अधिक जानकारी आरएफसी में पाया जा सकता है: 4634 "अमेरिका सुरक्षित हैश एल्गोरिदम (SHA और HMAC-SHA)", http://www.ietf.org/rfc/rfc4634.txt

0

Τhe हैश 256 बिट्स है, 256bits से अधिक समय के लिए कुछ भी करने के लिए एक टक्कर होती है।

coll आप टकराव के बिना किसी छोटी चीज में कुछ संपीड़ित नहीं कर सकते हैं, इसकी अपमानजनक गणित।

हां, एल्गोरिदम की वजह से और 2 256 की शक्ति के लिए 2 में कई अलग-अलग हैंश हैं, लेकिन वे टकराव मुक्त नहीं हैं, यह असंभव है।

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^