2012-07-27 10 views
7

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

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

कोई सुझाव?

उत्तर

4

आप सबसे सही हैं। यदि आपके सिस्टम में कोई विरोधी नहीं है, तो क्रिप्टोग्राफ़िक हैश-फ़ंक्शंस का उपयोग करके उनकी सुरक्षा गुणों को ओवरकिल किया जाता है।


टक्कर बिट्स, , अपने हैश समारोह की की संख्या पर निर्भर और हैश के संख्या को महत्व देता, एन, आप की गणना करने का अनुमान है। अकादमिक साहित्य का बचाव इस टकराव की संभावना हार्डवेयर त्रुटि संभावना को हल करना चाहिए, इसलिए डेटा बाइट-बाय-बाइट [ref1, ref2, ref3, ref4, ref5] की तुलना करने की तुलना में हैश फ़ंक्शन के साथ टकराव करने की संभावना कम है। हार्डवेयर त्रुटि संभावना 2^-12 और 2^-15 [ref6] की सीमा में है। आप उत्पन्न करने की आशा करते एन = 2^क्ष हैश मान तो अपने टक्कर संभावना इस समीकरण है, जो पहले से ही birthday paradox ध्यान में रखा जाता द्वारा दी जा सकती:
Equation

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


यहाँ कैसे है कि विश्लेषण बनाने के लिए पर एक उदाहरण है:

  • मान लीजिए कि आप = 2^15 फाइलें करते हैं;
  • प्रत्येक फ़ाइल का औसत आकार एलएफ2^20 बाइट;
  • आप प्रत्येक फ़ाइल को औसत आकार एलसी2^10 बाइट के बराबर विभाजित करने का नाटक करते हैं;
  • प्रत्येक फ़ाइल = वामो/नियंत्रण रेखा = 2^10 मात्रा में विभाजित किया जाएगा;

  • फिर आप क्ष = च * ग = 2^25 वस्तुओं हैश होगा।

कि समीकरण कई हैश आकार के लिए टक्कर संभावना से है निम्नलिखित:

  • पी (हैश = 64 बिट्स) = 2^(2 * 25-64 + 1) = 2^-13 (की तुलना में कम 2^-12)
  • पी (हैश = 128 बिट) = 2^(2 * 25-128 + 1) 2^-77 (की तुलना में कम ज्यादा रास्ता 2^-12)

अब आपको यह तय करने की आवश्यकता है कि 64 का कौन सा गैर-क्रिप्टोग्राफ़िक हैश फ़ंक्शन या 128 बिट्स का उपयोग आप 64 बिट्स को हार्डवेयर त्रुटि संभावना के करीब बहुत जानते हैं (लेकिन तेज़ हो जाएगा) और 128 बिट्स एक अधिक सुरक्षित विकल्प (हालांकि धीमे) हैं।


बोले आप गैर-क्रिप्टोग्राफिक हैश फ़ंक्शंस के विकिपीडिया से हटाई गई एक छोटी सूची पा सकते हैं। मैं Murmurhash3 जानते हैं और यह किसी भी क्रिप्टोग्राफिक हैश समारोह की तुलना में बहुत तेजी से होता है:

  1. Fowler–Noll–Vo: 32, 64, 128, 256, 512 और 1024 बिट
  2. Jenkins: 64 और 128 बिट
  3. MurmurHash: 32, 64, 128, और 160 बिट
  4. CityHash: 64, 128 और 256 बिट
+1

सबसे पहले, इसे समझाने के लिए समय देने के लिए धन्यवाद; मैं वास्तव में इसकी प्रशंसा करता हूँ। दूसरा, मैं एक स्पष्ट प्रश्न पूछना चाहता था: आप एक बड़ी संख्या में फाइलों के विरुद्ध एक विरोधी के खिलाफ अलग-अलग बचाव कैसे करते हैं? क्या अंतिम परिणाम समान नहीं है: पर्याप्त डेटा की पीढ़ी जो आपको आखिरकार डेटा के दो टुकड़े मिलती है जो हैश समान है? (या तो यादृच्छिक रूप से, या एल्गोरिदम के लक्षित विश्लेषण के माध्यम से।) –

1

एमडी 5 और एसएचए 1 सुरक्षा के लिए डिज़ाइन नहीं किए गए हैं, नहीं, इसलिए वे विशेष रूप से सुरक्षित नहीं हैं, और इसलिए वास्तव में बहुत धीमी नहीं हैं। मैंने खुद को deduplication (पायथन के साथ) के लिए MD5 का उपयोग किया है, और प्रदर्शन बस ठीक था।

This article दावा मशीन आज प्रति सेकंड 330 एमबी डेटा के एमडी 5 हैश की गणना कर सकते हैं।

एसएचए -1 को एमडी 5 के लिए एक सुरक्षित विकल्प के रूप में विकसित किया गया था जब यह पता चला कि आप एमडी 5 के साथ समान मूल्य के लिए हैश इनपुट कर सकते हैं, लेकिन मुझे लगता है कि आपके उद्देश्यों के लिए एमडी 5 ठीक काम करेगा। यह निश्चित रूप से मेरे लिए किया था।

+5

एमडी 5 और एसएचए 1 क्रिप्टोग्राफिक हैश फ़ंक्शन हैं, इस प्रकार सुरक्षा उद्देश्यों के लिए डिज़ाइन किया गया है। सिर्फ इसलिए कि उनकी सुरक्षा से समझौता किया गया है (SHA1 अभी भी समझौता नहीं किया गया है), इसका मतलब यह नहीं है कि वे सुरक्षा के लिए डिज़ाइन नहीं किए गए हैं। – Leaurus

+0

(SHA1 को इतना समझौता नहीं किया गया है) * – Leaurus

-1

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

स्केन बहुत मजबूत है। इसमें 80 राउंड हैं। 10 या उससे कम करने की कोशिश करें।

या आउटपुट ब्लॉक को एईएस और एक्सओआर के साथ एन्क्रिप्ट करें। एईएस आधुनिक सीपीयू पर हार्डवेयर-त्वरित और तेजी से तेज़ है।

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