2012-06-23 14 views
5

सबसे पहले, मुझे कहना चाहिए कि मैं प्रोग्रामिंग के लिए अपेक्षाकृत नया हूं इसलिए कृपया मेरे साथ सौम्य रहें यदि यह एक बेवकूफ या बेवकूफ सवाल है।एमडी 5 अभी भी व्यापक रूप से उपयोग क्यों किया जाता है

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

विकल्प SHA-1 आदि की पसंद हैं जो मजबूत हैं और क्रैक होने की संभावना कम है। यह सही समझ में आता है।

बात करने के लिए प्राप्त करने के लिए:

  1. md5 अभी भी व्यापक रूप
  2. hashing के लिए इस्तेमाल किया मैं अपने आप पासवर्ड hashing के लिए md5 छूट चाहिए, या विशिष्ट उपयोग मामलों देखते हैं जहां इसके उपयोग वास्तव में से बेहतर होगा क्यों है अन्य हैशिंग तंत्र?
+0

संभावित डुप्लिकेट [PHP 40+ हैशिंग एल्गोरिदम को संभाल सकता है। तो एमडी 5 वास्तव में मानक क्यों है?] (Http://stackoverflow.com/questions/11062597/php-can-handle-40-hashing- एल्गोरिदम-so-why-is-md5-the-de-facto- मानक) – hakre

उत्तर

8

न तो एमडी 5 और न ही SHA-1 का उपयोग हैशिंग पासवर्ड के लिए किया जाना चाहिए। उन्हें गणना करने के लिए तेज़ होने के लिए डिज़ाइन किया गया है, जो वही है जो आप नहीं चाहते हैं। यदि लोग हैंशिंग पासवर्ड के लिए इन हैशिंग एल्गोरिदम का उपयोग कर रहे हैं, तो ऐसा संभव है क्योंकि वे विकल्पों के बारे में नहीं जानते हैं।

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

संबंधित

+0

धन्यवाद मार्क। यह उत्तर के बीच consus प्रतीत होता है कि bcrypt एक बेहतर soltuion है। मैं इसे एक विकल्प के रूप में जांच करूंगा। क्या आप जानते हैं कि बड़े ट्रैफिक वेबसाइटों पर प्रदर्शन समस्याएं होंगी, इसका उपयोग अपने उपयोगकर्ताओं के लिए प्रमाणीकरण विधि के रूप में करें? –

+0

@ जॉनमोर: आपके द्वारा उपयोग की जाने वाली प्रमाणीकरण विधि के बावजूद बड़ी ट्रैफिक वेबसाइटों पर हमेशा प्रदर्शन समस्याएं हो सकती हैं।प्रमाणीकरण सामान्यतः कुल सर्वर लोड का एक छोटा सा हिस्सा होगा। –

+0

यह एक पूरा जवाब नहीं है। यदि यह स्पष्ट है, जैसा कि आप इसे बताते हैं, तो वर्डप्रेस और जूमला के रूप में व्यापक रूप से उपयोग किए जाने वाले ऐप्स उपयोगकर्ता पासवर्ड के लिए सीधे md5 हैशिंग का उपयोग क्यों करेंगे? मुझे जवाब नहीं पता, लेकिन बहुत उत्सुक हूँ! – giorgio

0

क्यों md5 अभी भी व्यापक रूप

hashing के लिए इस्तेमाल किया है यह पूरी तरह से ठीक है आप उदा करना चाहते हैं वैधता के लिए एक कार्यक्रम की जांच करें (एमडी 5 आपके आईएसओ)। कुछ लोगों को सामान के लिए यह नहीं किया जाना चाहिए के लिए इसका इस्तेमाल करते हैं यही कारण है कि (अब) अपनी चिंता का नहीं होना चाहिए, और inanswerable :)

मैं स्वचालित रूप से यह छूट चाहिए, है या वहाँ विशिष्ट उपयोग के मामलों में जहां हैं अपने वास्तव में अन्य हैशिंग तंत्र से बेहतर होगा?

हां। यदि आप इसे पासवर्ड के लिए उपयोग कर रहे हैं तो इसे डिस्काउंट करें। आपको पहले ही कमजोरियां मिली हैं, लेकिन देखें कि @ मार्कबर्स क्या कहते हैं कि आप उपयोग करना चाहिए, उदा। bcrypt

+0

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

+1

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

+0

यह बात नहीं है - एमडी 5 हैश को अक्सर एक अलग चैनल के माध्यम से अलग से पोस्ट किया जाता है, इसलिए आमतौर पर हैकर को फ़ाइल और एंड दोनों प्रकाशित पाचन को बदलने के लिए संभव नहीं है। जिस बिंदु को मैं बनाने की कोशिश कर रहा था वह यह है कि एमडी 5 अभी भी (शुद्ध क्रिप्टैनालिसिस शर्तों में) उतना ही अच्छा है जितना कि यह कभी भी पासवर्ड के लिए था, लेकिन फ़ाइल सत्यापन के लिए _isn't_ नहीं था। एकमात्र चीज जो बदल गई है w.r.t. पासवर्ड सत्यापन यह है कि मूर का कानून अब बलपूर्वक बल के लाखों पासवर्ड परीक्षण करने के लिए व्यवहार्य बनाता है। – Alnitak

1

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

मैं नए प्रोग्रामर को दोष नहीं देता, मैं ट्यूटोरियल निर्माताओं को उनके ट्यूटोरियल अपडेट नहीं करने के लिए दोषी ठहराता हूं। Google की खोज एल्गोरिदम आमतौर पर आयु में खाता लेती है, और खोज परिणाम में पुरानी प्रविष्टियां प्रदर्शित करती है।

विकल्पों के लिए, मेरा मानना ​​है कि मार्क बेयर्स ने मुझसे बेहतर प्रदर्शन किया था।

0

एमडी 5 अभी भी हैशिंग के लिए व्यापक रूप से उपयोग क्यों किया जाता है?

यह नहीं है। यहां तक ​​कि वर्डप्रेस ने इसे साल पहले छोड़ दिया था। और वर्डप्रेस व्यापक रूप से प्रयोग किया जाता है।

क्या मुझे इसे स्वचालित रूप से छूट देना चाहिए, या क्या विशिष्ट उपयोग के मामले हैं जहां इसका उपयोग वास्तव में अन्य हैशिंग तंत्र से बेहतर होगा?

मुझे कोई मतलब नहीं है कि आपका क्या मतलब है। एक हैशिंग एल्गोरिदम का प्रयोग करें जो पासवर्ड हैशिंग के लिए उपयुक्त है और आपको ज्यादा चिंता करने की आवश्यकता नहीं है।

0

MD5 अभी भी यथोचित इतने लंबे समय के रूप में आप वास्तविक पासवर्ड के साथ मिश्रण करने से पहले यह एन्क्रिप्टेड है एक अच्छा "नमक" का उपयोग, ज्यादातर मामलों [*] के लिए उपयोग करने के लिए सुरक्षित है।

एमडी 5 पर "पहले प्री-इमेज अटैक" को पूरा करने के लिए ब्रूट फोर्स के अलावा अभी भी कोई ज्ञात तरीका नहीं है, यानी एक हैश दिया गया है, यह पता लगाएं कि मूल पासवर्ड क्या था।

ऊपर वर्णित "नमक" यह सुनिश्चित करने के लिए आवश्यक है कि आपके एन्क्रिप्टेड पासवर्ड को "इंद्रधनुष तालिका" या "पचाने के लिए स्ट्रिंग" की अन्य मौजूदा सूचियों में देखा जा सके।

हाल ही में लिंक्ड-इन पासवर्ड लीक एक अच्छा उदाहरण है कि क्यों नमक महत्वपूर्ण है। वे अपने उपयोगकर्ताओं के पासवर्ड को नमक करने में असफल रहे, इसलिए कई पासवर्डों को तुच्छ रूप से उलट दिया गया क्योंकि उन पासवर्डों के हैंश की गणना पहले से ही की गई है (और कई मामलों में Google के माध्यम से पाए जाते हैं)।

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

एमडी 5 में अब तक की एकमात्र वास्तविक कमजोरियां एक नई फाइल बनाने के तरीके हैं जो एक ही फाइल के रूप में उसी एमडी 5 डाइजेस्ट के परिणामस्वरूप प्रबंधित होती हैं, जब आप पहले से ही मूल फ़ाइल की सामग्री को जानते हैं। इसे "दूसरा प्री-इमेज अटैक" के रूप में जाना जाता है, और पासवर्ड एन्क्रिप्शन के लिए हैशिंग एल्गोरिदम के उपयोग पर विचार करते समय अप्रासंगिक है।

सभी ने कहा कि, यदि एक बेहतर एल्गोरिदम (SHA-2, bcrypt) उपलब्ध है, तो आप इसका भी उपयोग कर सकते हैं!

[*] मैं ई-कॉमर्स से संबंधित किसी भी चीज़ के लिए एमडी 5 का उपयोग नहीं करता, हालांकि!

+0

MD5 किसी भी सुरक्षा से संबंधित किसी भी चीज़ के लिए सुरक्षित नहीं है। विशेष रूप से पासवर्ड नहीं। यहां तक ​​कि अगर एमडी 5 में कोई दोष नहीं मिला है, तो यह अभी भी पासवर्ड के लिए उपयुक्त नहीं होगा क्योंकि यह बहुत तेज़ है। [नमक ** ** ** LinkedIn बचाया नहीं है] (http://security.stackexchange.com/q/15910/1472)। इन दिनों डिस्क से इंद्रधनुष तालिका को पढ़ने के बजाय एमडी 5 (या SHA1) पासवर्ड को बलपूर्वक बल देना तेज है। लिंक्डइन हैश को लीक होने से पहले ही डी-डुप्ड किया गया था जो नमक का इस्तेमाल होने पर नहीं हुआ होता। एसएचए 2 परिवार बहुत तेज है। Bcrypt, scrypt या PBKDF2 का प्रयोग करें। – Ladadadada

+0

@ लडादादादा निश्चित रूप से, bcrypt, scrypt, जो भी हो, मैं सहमत हूं कि यह सब सर्वोत्तम अभ्यास है। लेकिन तथ्य यह है कि एक सही ढंग से यादृच्छिक नमक (256 बिट्स कहें) जहां प्रत्येक पासवर्ड में एक अलग नमक होता है और हैकर के लिए अज्ञात है, तो यह कभी भी ब्रह्मांड के जीवनकाल से अधिक समय तक ले जाएगा, एमडी 5 को बल देने के लिए भी हर एनवीडिया कार्ड के साथ । हैश बल को बलपूर्वक बल देने के बजाय प्रति सेकंड 1 प्रयास पर पासवर्ड लॉगिन को बलपूर्वक बल देना बहुत तेज़ होगा। और आपके द्वारा लिंक किए गए उत्तर पर अधिकांश टिप्पणियां उस से सहमत होने लगती हैं। – Alnitak

+0

ब्रह्मांड के जीवनकाल से निश्चित, एमडी 5 की पूरी कुंजीपटल की जांच कर रहा है। पूरे प्रिंट करने योग्य ASCII के 8 अक्षरों को MD5 के रूप में सेट करना? $ 170 के लिए एक एकल राडेन एचडी 5830 के साथ 35 दिन [इस तालिका का उपयोग] [http://golubev.com/gpuest.htm)। और संभवतः पासवर्ड खोजने के लिए औसतन आधा। नमक एक पासवर्ड की जांच करने के लिए समय नहीं बदलता है (जब तक कि यह इतना बड़ा न हो कि डिस्क का उपयोग बाधा है)। यह केवल प्रत्येक पासवर्ड को व्यक्तिगत रूप से क्रैक करने के लिए मजबूर करता है। और कृपया बताएं कि प्रति सेकेंड 1 प्रयास प्रति सेकंड 3.3 बिलियन से तेज कैसे हो सकता है? – Ladadadada

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

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