2009-02-11 15 views
5

मेरे पास एक ऐसी वेबसाइट है जहां उपयोगकर्ता अपनी फाइलें अपलोड कर सकते हैं; ये सर्वर पर संग्रहीत हैं और उनके मेटाडेटा डेटाबेस में दर्ज हैं। मैं कुछ सरल अखंडता जांच को कार्यान्वित कर रहा हूं, यानी "क्या इस फाइल की सामग्री अब बाइट-फॉर-बाइट समान है जब इसे अपलोड किया गया था?"2 अलग हैश फ़ंक्शन का उपयोग फ़ाइल अखंडता की जांच करने का एक अच्छा तरीका है?

एक उदाहरण: userfile.jpg की सामग्री के लिए, एमडी 5 हैश 39f9031a154dc7ba105eb4f76f1a0fd4 और SHA-1 हैश 878d8d667721e356bf6646bd2ec21fff50cdd4a9 है। यदि यह फ़ाइल की सामग्री बदलती है, लेकिन उसके पहले और बाद में एक ही एमडी 5 हैश है, तो क्या यह संभव है कि SHA-1 हैश भी वही रहेगा? (हैशिंग के साथ, कभी कभी आप एक हैश टक्कर मिल सकती है - यह एक बार में दो अलग अलग हैशिंग एल्गोरिदम के साथ भी हो सकता है?)

या कोई फ़ाइल व्यर्थ के लिए दो अलग-अलग हैश कंप्यूटिंग है (और मैं ईमानदारी की पुष्टि करने के लिए कुछ अन्य तंत्र की कोशिश करनी चाहिए)?


संपादित करें: मैं आकस्मिक भ्रष्टाचार के बारे में वास्तव में चिंतित नहीं हूँ, लेकिन मैं उन फ़ाइल किसी का ध्यान नहीं (birthday attack और दोस्तों) को बदलने को रोकने के लिए माना जाता रहा हूँ।

मैं शायद एक हैश, SHA-512 के साथ जाऊंगा - चेक अक्सर ऐसा नहीं होता है जो अक्सर प्रदर्शन की बाधा बनता है और वैसे भी, "ब्रूस श्नीयर कहते हैं, वहां पहले से ही पर्याप्त तेज़, असुरक्षित सिस्टम हैं। टिप्पणियों में @MichaelGG "।

+0

मुझे एमडी 5 के विपरीत SHA1 में किसी भी भेद्यता के बारे में पता नहीं है। तो आप एमडी 5 क्यों नहीं डंप करते हैं और SHA1 का उपयोग क्यों करते हैं? –

+0

@ पॉल टॉम्बलिन: हाँ, मैं शायद एसएचए-कुछ के साथ जाऊंगा :) इसे प्रतिबिंबित करने के लिए संपादित किया गया। – Piskvor

+0

ब्रूस श्नीयर कहते हैं, वहां पहले से ही पर्याप्त तेज़, असुरक्षित सिस्टम हैं। – MichaelGG

उत्तर

7

एमडी 5 संभवतः आपके द्वारा किए जा रहे कार्यों के लिए सुरक्षित है, लेकिन ज्ञात त्रुटियों के साथ हैश का उपयोग जारी रखने का कोई कारण नहीं है। असल में, ऐसा कोई कारण नहीं है कि आपको SHA256 या SHA512 का उपयोग नहीं किया जाना चाहिए, जब तक कि आपके पास कुछ प्रमुख प्रदर्शन बाधा न हो।

संपादित करें: स्पष्ट करने के लिए, दो एल्गोरिदम का उपयोग करने का कोई कारण नहीं है; बस उस चीज का उपयोग करें जो आपको चाहिए। यदि आप लोगों पर एमडी 5 टकराव करने वाले लोगों के बारे में चिंतित हैं (जैसा कि, यह एक सुरक्षा खतरा है?), तो एक एल्गोरिदम का उपयोग करें जो कमजोर नहीं है, जैसे SHA256।

संपादित करें 2: स्पष्ट रूप से अभी भी सामान्य गलतफहमी को हल करने के लिए: हैश पर यादृच्छिक टकराव ढूंढना 1/2^एन संभावना नहीं है। यह 1/2^(एन/2) के करीब है। तो 128-बिट हैश शायद 2^64 प्रयासों से टकरा जा सकता है। विवरण के लिए birthday attack देखें।

+0

भी, दो हैश का उपयोग करके बिट्स की संख्या तेजी से कठिन हो रही है। एक ही समय में दो हैश क्रैक करना उतना आसान (या कठिन) प्रत्येक अलग-अलग क्रैकिंग के रूप में होता है। एमडी 5 डुबकी, अकेले SHA-x के लिए जाओ। – Javier

+1

"हैश पर यादृच्छिक टकराव ढूंढना 1/2^एन संभावना नहीं है" सच है यदि लक्ष्य को टक्कर वाले दस्तावेजों की एक जोड़ी के साथ आना है। झूठा अगर लक्ष्य किसी दस्तावेज के साथ आना है जो किसी दिए गए दस्तावेज़ से टकराता है। –

+0

@ जेसन एस: यह परिदृश्य को रद्द नहीं करता है 1) दो टक्कर वाले दस्तावेज उत्पन्न करते हैं, 2) एक लिखें 3) अन्य 4 के साथ ओवरराइट करें) लाभ। (एक कमजोर फ़ंक्शन मानना, उदाहरण के लिए MD5) – Piskvor

4

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

ध्यान दें कि स्केलेबिलिटी के मामले में, अतिरिक्त चेक आपके सर्वर पर अनावश्यक भार जोड़ती है।

1

सामान्य रूप से, यदि एमडी 5 हैश मेल नहीं खाते हैं, तो SHA1 (या कोई अन्य समान हैश) या तो मेल नहीं खाएगा। मैं यह नहीं कहूंगा कि ऐसे संभावित मामले नहीं हैं जहां यह नहीं हो सका (क्योंकि हम सभी जानते हैं कि दोनों एल्गोरिदम में टकराव हैं), लेकिन मैं कहूंगा कि यह शायद आपकी स्थिति में कभी नहीं होगा।

मेरे विचार यह है कि एक हैश प्रदान करना संभवतः पर्याप्त है; एक से अधिक हैश सत्यापित करने के लिए कठिन हो गए हैं (प्लेटफॉर्म के लिए उपलब्ध उपयोगिताओं के आधार पर एक को सत्यापित करना पर्याप्त है,, और मुझे गंभीरता से संदेह है कि आप एक फ़ाइल के इस तरह के अद्भुत भ्रष्टाचार को देखने के लिए एक परिपूर्ण टक्कर।

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

+0

मूल रूप से मेरे मन में क्या नहीं था, लेकिन अच्छी बात है: फ़ाइलों को डाउनलोड करने योग्य होना चाहिए, मैं उपयोगकर्ताओं के लिए चेकसम प्रदान कर सकता हूं क्योंकि वे पहले से गणना की गई हैं। अछा सुझाव! – Piskvor

1

अनुमान के मुताबिक, एमडी 5 झूठी सकारात्मक के लिए मौका 1/(2^128) है, एसएचए -1 झूठी सकारात्मक के लिए मौका 1/(2^160) है, इसलिए दोनों के लिए झूठी सकारात्मक का मौका एल्गोरिदम 1/(2^128) और 1/(2^288) के बीच है, लेकिन आप यह सुनिश्चित कर सकते हैं कि यह 1/(2^288) के करीब है क्योंकि दोनों एल्गोरिदम का सांख्यिकीय रूप से परीक्षण किया गया है।

कम से कम, दो अलग-अलग हैंश का उपयोग करते समय, आप एल्गोरिदम में से एक में जानबूझकर हमलों के खिलाफ बहुत अच्छी तरह से संरक्षित हैं।

संपादित करें: कुछ शोध के बाद, मैंने इस Wikipedia Note पर ठोकर खाई कि एमडी 5 जन्मदिन के हमलों को 1 मिनट से कम समय में किया जा सकता है, इसलिए यह एसडीए -1 के साथ एमडी 5 के रूप में एक अलग एल्गोरिदम का उपयोग करना बेहतर लगता है। एसएचए -1 के लिए जन्मदिन के हमले इस समय 2^69 operations लेते हैं।

+0

एमडी 5 को छोड़कर समस्याएं ज्ञात हैं और पहले ही असली दुनिया टकराव के हमलों का कारण बन चुकी है। – MichaelGG

+2

इसके अतिरिक्त, एक यादृच्छिक टकराव 1/2^n नहीं है, यह लगभग 1/2^(एन/2) है। जन्मदिन विरोधाभास देखें। – MichaelGG

1

क्योंकि दो हैंश की गणना अलग-अलग होती है, उसी एमडी 5 हैश वाली दो फाइलें दो यादृच्छिक फ़ाइलों की तुलना में एक ही SHA-1 हैश होने की संभावना नहीं होती हैं। यदि आपके पास हैश के साथ यादृच्छिक टक्कर का मौका है (ballpark) 2^128, दोनों में यादृच्छिक टकराव का आपका मौका 2^256 होगा।

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

यह आदेश किसी को बेतरतीब ढंग से अपने 128 बिट कुंजी लगता होने से बचने के लिए 256-बिट एन्क्रिप्शन करने के लिए 128 बिट से जाने के बराबर है।

2

फ़ाइल अखंडता (उदा। आकस्मिक/यादृच्छिक भ्रष्टाचार) के लिए, एक हैश पर्याप्त होना चाहिए। 128 बिट्स = 2 -128 एक ज्ञात त्रुटि की संभावना, जो कि सभी व्यावहारिक उद्देश्यों के लिए पर्याप्त है।

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

एमडी 5 को इस अर्थ में "कमजोर" माना जाता है कि एक ही हैश के साथ दो दस्तावेज़ों का निर्माण करना संभव है, जिसमें सीपीयू समय की बहुत कम राशि होती है, जो ब्रूट-फोर्स सर्च ("टकराव प्रतिरोध" एमडी 5 टूटा गया है)।

लेकिन यदि आपके पास मनमाने ढंग से दस्तावेज़ एक्स है, तो यह दृष्टिकोण ("जहां तक ​​मुझे पता है)" कमजोर "है, कोई और एक ब्रश के मुकाबले एक आसान हैश के साथ एक दस्तावेज़ बना सकता है। बल खोज (एमडी 5 अभी भी "preimage प्रतिरोध" है)। (भेद एक पार्टी में जाने और उसी जन्मदिन के साथ दो लोगों को खोजने के बीच अंतर की तरह है, बनाम एक ही व्यक्ति को आपके जन्मदिन के साथ ढूंढना।)

भले ही MD5 उस संबंध में टूट गया हो, यह असंभव है किसी दस्तावेज एक मनमाना MD5 हैश और एक arbritrary SHA1 हैश मैच के लिए बनाने के लिए एक एल्गोरिथ्म के साथ आ सकते हैं।

यह लगता है एक तरह से दो maxims के बीच तनाव की तरह बनाम "एक टोकरी में अपने सभी अंडे डाल दिया, और टोकरी घड़ी" "एक टोकरी में अपने सभी अंडे डाल नहीं है"। या दो deadbolt ताले बनाम एक deadbolt ताला अच्छा के रूप में दो बार और दो बार के रूप में ज्यादा लागत जिस पर पैसा खर्च करने की तरह।आदर्श रूप से एक की गणना करने के लिए सीपीयू समय बिताना सबसे अच्छा होगा दो के बजाय सुरक्षित 25-बिट हैश अलग-अलग एल्गोरिदम का उपयोग करके कम सुरक्षित 128-बिट हैश। (हाँ मुझे पता है कि SHA1 160 बिट है, यह केवल एक उदाहरण है) सुरक्षा के वांछित स्तर के लिए आपको बेहतर प्रदर्शन करने की अधिक संभावना है - यानी यदि 256-बिट हैश टूट नहीं गया है। यदि यह टूटा हुआ है, तो आप अपने दांव को संभालने के लिए दो-एल्गोरिदम दृष्टिकोण से बेहतर हो सकते हैं।

लेकिन फिर अगर यह त्रुटियों के खिलाफ सुरक्षा के लिए सिर्फ अखंडता है, तो एक एमडी 5 हैश ठीक है।

संपादित करें: कुछ उपयोगी सूत्रों का हवाला देते हैं करने के लिए: 1 2 3, "MD5 considered harmful today", RFC4270, NIST's latest update on the SHA-3 competition, और "The SHA-3 Zoo"

+0

बिल्कुल। एमडी 5 कुछ चीजों के लिए सुरक्षित है, लेकिन बिना विवरण के, इसका उपयोग करने का कोई कारण नहीं है। – MichaelGG

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

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