2011-02-07 12 views
6

मेरे पास एक ग्राहक है जो आंतरिक रूप से बड़ी बाइनरी फ़ाइलों को वितरित कर रहा है। वे फाइलों के एमडी 5 चेकसम भी पास कर रहे हैं और स्पष्ट रूप से चेकसम के खिलाफ फ़ाइलों को उनके वर्कफ़्लो के हिस्से के रूप में उपयोग करने से पहले सत्यापित कर रहे हैं।एमडी 5 झूठी सकारात्मक जांच कितनी संभावना है?

हालांकि वे दावा करते हैं कि "अक्सर" वे उन फ़ाइलों में भ्रष्टाचार का सामना कर रहे हैं जहां एमडी 5 अभी भी कह रहा है कि फ़ाइल अच्छी है।

जो कुछ मैंने पढ़ा है, वह बताता है कि यह बेहद असंभव होना चाहिए।

क्या यह ध्वनि संभव है? क्या एक और हैशिंग एल्गोरिदम बेहतर परिणाम प्रदान करेगा? क्या मुझे वास्तव में प्रक्रिया की समस्याओं को देखना चाहिए जैसे कि चेकसम की जांच करने का दावा करना, लेकिन वास्तव में ऐसा नहीं करना चाहिए?

एनबी, मुझे अभी तक पता नहीं है कि इस संदर्भ में "अक्सर" का क्या अर्थ है। वे एक दिन सैकड़ों फाइलों को संसाधित कर रहे हैं। मुझे नहीं पता कि यह दैनिक, मासिक या वार्षिक घटना है या नहीं।

+5

क्या उन्हें "भ्रष्ट" फ़ाइल और "अच्छा" मूल का उदाहरण प्रदान किया गया है। –

+1

क्या यह संभव है कि एमडी 5 योग भ्रष्ट फ़ाइल पर गणना की गई हो, या योग की गणना के बाद भ्रष्टाचार हो रहा है? निश्चित रूप से जानने के लिए, एनन के सुझाव लें और एक ही चेकसम के साथ दो फाइलों का उदाहरण प्राप्त करें। – BMitch

+0

तो तब से, क्या आपने बिटरोरेंट सिंक विचार को देखा है? getync.com] – dlamblin

उत्तर

9

एमडी 5 एक 128 बिट क्रिप्टोग्राफिक हैश फ़ंक्शन है, इसलिए अलग-अलग संदेशों को 128-बिट स्पेस पर बहुत अच्छी तरह से वितरित किया जाना चाहिए। इसका मतलब यह होगा कि दो फाइलें (विशेष रूप से एमडी 5 को हराने के लिए बनाई गई फाइलों को छोड़कर) में 2^128 टकराव का मौका होना चाहिए। दूसरे शब्दों में, यदि फाइलों की एक जोड़ी की तुलना प्रत्येक नैनोसेकंड से की जाती है, तो यह अभी तक नहीं हुआ होता।

+1

ठीक है, आप जानते हैं कि यह पहले से ही हुआ है, है ना? बेशक उन टकरावों को उकसाया गया था (एक दो अलग-अलग फाइलें बनाने की कोशिश कर रहा था, जिसमें एक ही एमडी 5 चेकसम है), फिर भी यह इस तथ्य को नहीं बदलेगा कि मानव जाति के लिए कई फाइलें हैं (और ये जंगली में भी बाहर हैं) बिल्कुल उसी एमडी 5 चेकसम का उत्पादन करें, भले ही उनमें पूरी तरह से अलग डेटा हो। – Mecki

+2

@ मेकी: क्या आपने उस हिस्से को पढ़ा जहां मैंने कहा था "(विशेष रूप से MD5 को हराने के लिए बनाई गई फ़ाइलों को छोड़कर)"? – recursive

+0

लेकिन आपके पास कभी भी दो फाइलें नहीं हैं, आपके पास फाइलों का एक सेट है और आप नहीं चाहते हैं कि किसी भी दो को एक ही मान में हैश करें। संभावना एसकर्ट (2^128) होना चाहिए जो 2^64 है। यदि आप 64 बिट हैश, या एमडी 5 की दौड़ के साथ 280 ट्रिलियन फाइलों का उपयोग करते हैं तो आप 4.3 बिलियन फाइलों को स्टोर कर सकते हैं। जब आप 2^128 फाइलों तक पहुंच चुके हैं तो आपको गारंटी दी जाती है कि अगर आप उस बिंदु पर टक्कर से बचने में कामयाब रहे हैं तो आपकी अगली फाइल टकरा जाएगी; जो व्यावहारिक रूप से आपके पास नहीं हो सकता है। – dlamblin

5

यदि कोई फ़ाइल दूषित हो जाती है, तो संभावना है कि दूषित फ़ाइल में एक ही एमडी 5 चेकसम है, क्योंकि अनसुलझा फ़ाइल 1: 2^128 है। दूसरे शब्दों में, यह लगभग हमेशा के रूप में "अक्सर" के रूप में होगा। यह खगोलीय रूप से अधिक संभावना है कि आपका ग्राहक वास्तव में क्या हुआ है (जैसे वे गलत हैश की गणना कर रहे हैं)

4

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

This question सुझाव देता है कि, यदि आप प्रति सेकंड 6 अरब फाइलें उत्पन्न कर रहे थे, तो औसतन, आपको हर 100 साल औसतन टक्कर मिलती है, इसलिए यह काफी संभावना नहीं है।

3

क्या यह ध्वनि संभव है?

नहीं है, एक यादृच्छिक भ्रष्टाचार ही चेकसम के कारण की संभावना को 2 या 3.40 × 10 में 1 है। यह संख्या 1 अरब में (10) मौका शर्म की बात है।

क्या कोई अन्य हैशिंग एल्गोरिदम बेहतर परिणाम प्रदान करेगा?

शायद नहीं। जबकि एमडी 5 हमले के खिलाफ टक्कर प्रतिरोध के लिए टूट गया है, यह यादृच्छिक भ्रष्टाचार और उपयोग करने के लिए एक लोकप्रिय मानक के खिलाफ ठीक है।

क्या मुझे वास्तव में जांच की समस्याएं देखना चाहिए जैसे कि चेकसम की जांच करने का दावा करना, लेकिन वास्तव में ऐसा नहीं करना?

शायद, लेकिन पर विचार समस्याओं के सभी संभव अंक: MD5 पीढ़ी से पहले

  1. फ़ाइल दूषित
  2. फ़ाइल MD5 सत्यापन के बाद भ्रष्ट।
  3. MD5 कार्यक्रम या समर्थन ढांचा एक बग
  4. ऑपरेटर दुरुपयोग (गलत फ़ाइल पर अनजाने में, उदाहरण के लिए चल रहा है MD5 कार्यक्रम)
  5. ऑपरेटर दुरुपयोग (जानबूझकर, जैसे सत्यापन चरण को छोड़ने पर)

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

0

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

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