क्या SHA-1 पासवर्ड स्टोरेज के लिए सुरक्षित है?


148

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


कुछ लोग "SHA-1 टूटा हुआ है" जैसी टिप्पणियों के आसपास फेंक देते हैं, इसलिए मैं समझने का प्रयास कर रहा हूं कि वास्तव में इसका क्या मतलब है। मान लेते हैं कि मेरे पास SHA-1 पासवर्ड हैश का एक डेटाबेस है, और एक हमलावर ने SHA-1 ब्रेकिंग एल्गोरिथ्म की एक अवस्था को सचेत किया है और 100,000 मशीनों के साथ एक बोटनेट इसे एक्सेस करता है। (100k होम कंप्यूटर पर नियंत्रण होने का मतलब होगा कि वे प्रति सेकंड लगभग 10 ^ 15 ऑपरेशन कर सकते हैं।) उन्हें कितने समय की आवश्यकता होगी

  1. किसी एक उपयोगकर्ता का पासवर्ड ज्ञात करें?
  2. किसी दिए गए उपयोगकर्ता का पासवर्ड पता करें?
  3. सभी उपयोगकर्ताओं के पासवर्ड का पता लगाएं?
  4. उपयोगकर्ताओं में से एक के रूप में लॉग इन करने का एक तरीका खोजें?
  5. विशिष्ट उपयोगकर्ता के रूप में लॉग इन करने का एक तरीका खोजें?

यदि पासवर्ड नमकीन हैं, तो यह कैसे बदलता है? क्या नमकीन बनाने की विधि (उपसर्ग, उपसर्ग, दोनों, या कुछ और अधिक जटिल है जैसे कि Xor-ing) पदार्थ?

यहाँ कुछ गोगलिंग के बाद मेरी वर्तमान समझ है। कृपया उत्तर में सही करें अगर मुझे कुछ गलत लगा।

  • यदि कोई नमक नहीं है, तो इंद्रधनुष का हमला तुरंत सभी पासवर्ड (बेहद लंबे लोगों को छोड़कर) को ढूंढ लेगा।
  • यदि पर्याप्त रूप से लंबा यादृच्छिक नमक है, तो पासवर्ड का पता लगाने का सबसे प्रभावी तरीका एक क्रूर बल या शब्दकोश हमला है। वास्तविक पासवर्ड का पता लगाने के लिए न तो टकराव और न ही पूर्व-आक्रमण हमलों से कोई मदद मिलती है, इसलिए SHA-1 के खिलाफ क्रिप्टोग्राफ़िक हमले यहां कोई मदद नहीं है। यह बहुत महत्वपूर्ण नहीं है कि एल्गोरिथ्म का क्या उपयोग किया जाता है - एक भी एमडी 5 या एमडी 4 का उपयोग कर सकता है और पासवर्ड बस सुरक्षित होंगे (इसमें थोड़ा अंतर है क्योंकि SHA-1 हैश की गणना धीमी है)।
  • यह मूल्यांकन करने के लिए कि "बस के रूप में सुरक्षित" कितना सुरक्षित है, मान लें कि एक एकल sha1 रन में 1000 ऑपरेशन होते हैं और पासवर्ड में अपरकेस, लोअरकेस और अंक (अर्थात, 60 वर्ण) होते हैं। इसका मतलब है कि हमलावर एक दिन में 10 15 * 60 * 60 * 24/1000 ~ = 10 17 संभावित पासवर्ड का परीक्षण कर सकता है। एक ब्रूट फोर्स अटैक के लिए, जिसका अर्थ होगा 3 घंटे में 9 अक्षरों तक, एक सप्ताह में 10 वर्णों तक, एक वर्ष में 11 वर्णों तक सभी पासवर्ड का परीक्षण करना। (यह हर अतिरिक्त चरित्र के लिए 60 गुना अधिक होता है।) एक शब्दकोश हमला बहुत अधिक है, बहुत तेज (यहां तक ​​कि एक कंप्यूटर के साथ एक हमलावर भी इसे घंटों में खींच सकता है), लेकिन केवल कमजोर पासवर्ड पाता है।
  • उपयोगकर्ता के रूप में लॉग इन करने के लिए, हमलावर को सटीक पासवर्ड का पता लगाने की आवश्यकता नहीं है; यह एक स्ट्रिंग को खोजने के लिए पर्याप्त है जिसका परिणाम उसी हैश में होता है। इसे पहला प्राइमेज अटैक कहा जाता है। जहां तक ​​मुझे पता चला है, SHA-1 के खिलाफ कोई पूर्व-आक्रमण हमले नहीं हैं। (एक ब्रूटफोर्स हमले में 2 160 ऑपरेशन होंगे, जिसका अर्थ है कि हमारे सैद्धांतिक हमलावर को इसे खींचने के लिए 10 30 वर्षों की आवश्यकता होगी । सैद्धांतिक संभावना की सीमाएं लगभग 2 60 ऑपरेशन हैं, जिस पर हमले में कुछ साल लगेंगे।) पूर्ववर्ती हमले हैं। नगण्य प्रभाव वाले SHA-1 के कम संस्करणों के खिलाफ (घटे हुए SHA-1 के लिए, जो 80 के बजाय 44 चरणों का उपयोग करता है, हमले का समय 2 160 ऑपरेशन से 2 157 तक कम है)। SHA-1 के खिलाफ टक्कर के हमले हैं जो सैद्धांतिक संभावना के भीतर अच्छी तरह से हैं ( सबसे अच्छा मैंने पाया है कि 2 से 80 से 2 52 तक का समय कम हो जाता है ), लेकिन वे पासवर्ड हैश के खिलाफ बेकार हैं, यहां तक ​​कि नमकीन के बिना भी।

संक्षेप में, SHA-1 के साथ पासवर्ड संग्रहीत करना पूरी तरह से सुरक्षित लगता है। क्या मैं कुछ भुल गया?

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


यह अब 7 साल का हो गया है और बहुत कुछ हुआ है क्योंकि इसे पिछली बार संपादित किया गया था। SHA-1 अब पासवर्ड हैशिंग के लिए पर्याप्त रूप से सुरक्षित नहीं माना जाता है
गॉर्डन

@GordonM क्या हुआ? कंप्यूटिंग शक्ति की वृद्धि के साथ, SHA-1 टकराव के हमले अधिक से अधिक व्यावहारिक होते जा रहे हैं, लेकिन वे वास्तव में यहां प्रासंगिक नहीं हैं। SHA-1 पासवर्ड हैशिंग (आमतौर पर फास्ट हैश आमतौर पर नहीं हैं) के लिए वास्तव में सुरक्षित नहीं था, लेकिन इस हद तक, यह अभी भी AFBIK है।
TGR

SHA-1 कभी भी पासवर्ड हैशिंग के लिए सुरक्षित नहीं था क्योंकि यह पहली बार में पासवर्ड हासिल करने का इरादा नहीं था ...
Azxdreuwa

जवाबों:


209

आपके प्रश्न का संक्षिप्त उत्तर है: SHA-1 उतना ही सुरक्षित है जितना आप प्राप्त कर सकते हैं। एमडी 5 भी ठीक होगा, एमडी 4 भी; लेकिन यह कुछ निवेशकों को परेशान कर सकता है। के लिए जनसंपर्क , यह, जैसे SHA-256, भले ही आप 160 या 128 बिट करने के लिए इसके उत्पादन काटना (भंडारण लागत पर बचाने के लिए) एक "बेहतर" हैश समारोह का उपयोग करने के लिए सबसे अच्छा है। में से कुछ SHA-3 राउंड 2 उम्मीदवारों तेजी SHA-1 की तुलना में दिखाई देते हैं, जबकि यकीनन "अधिक सुरक्षित" किया जा रहा है; फिर भी वे अभी भी थोड़े नए हैं, इसलिए अभी तक SHA-256 या SHA-512 से चिपके रहना एक सुरक्षित मार्ग होगा। यह आपको पेशेवर और सतर्क दिखेगा, जो अच्छा है।

ध्यान दें कि "आप जितना सुरक्षित हो सकते हैं" उतना ही नहीं है "पूरी तरह से सुरक्षित"। बल्कि लंबे स्पष्टीकरण के लिए नीचे देखें।

ज्ञात हमलों के बारे में:

एमडी 4, एमडी 5 और एसएचए -1 पर ज्ञात हमले टकराव के बारे में हैं, जो प्रीइमेज प्रतिरोध को प्रभावित नहीं करते हैं। यह दिखाया गया है कि एमडी 4 में कुछ कमजोरियां हैं जो एचएमएसी / एमडी 4 को तोड़ने की कोशिश करने पर (केवल सैद्धांतिक रूप से) शोषण किया जा सकता है, लेकिन यह आपकी समस्या पर लागू नहीं होता है। केसली और श्नेयर द्वारा पेपर में 2 106 दूसरा प्राइमेज अटैक एक जेनेरिक ट्रेड-ऑफ है जो केवल बहुत लंबे इनपुट्स (2 60 बाइट्स) पर लागू होता है ; यह एक लाख टेराबाइट्स है - ध्यान दें कि 106 + 60 160 से अधिक कैसे होते हैं? व्यापार-बंद का इसमें कुछ भी जादू नहीं है)।

इस संदेश के बाकी ने मान लिया है कि आपके द्वारा उपयोग किए गए हैश फ़ंक्शन (जैसे SHA-1) एक "ब्लैक बॉक्स" है जिसमें कोई विशेष गुण नहीं है जिसका उपयोग हमलावर कर सकता है। यही कारण है कि आपके पास अभी भी "टूटी हुई" हैश फ़ंक्शन MD5 और SHA-1 है।

इंद्रधनुष तालिकाओं के बारे में:

"इंद्रधनुष हमला" वास्तव में एक शब्दकोश या जानवर बल के हमले का लागत-साझाकरण है। यह पहली बार 1980 में हेलमैन द्वारा वर्णित टाइम-मेमोरी ट्रेड-ऑफ से व्युत्पन्न है। यह मानते हुए कि आपके पास एन संभव पासवर्ड हैं (यह आपके शब्दकोश का आकार है, या 2 एन अगर आप एक आउटपुट के साथ हैश फ़ंक्शन को ब्रूट-फोर्सिंग मानते हैं n बिट्स), एक टाइम-शेयरिंग अटैक है जिसमें आप N हैशेड पासवर्ड्स को दबाते हैं और उन्हें एक बड़ी टेबल में स्टोर करते हैं। यदि आप हैश आउटपुट को सॉर्ट करते हैं, तो आप अपना पासवर्ड सिंगल लुकअप में प्राप्त कर सकते हैं। एक रेनबो टेबल एक बहुत कम अंतरिक्ष के साथ कि मेज स्टोर करने के लिए एक स्मार्ट तरीका है। आप केवल N / t हैशेड पासवर्ड स्टोर करते हैं, और आप O के साथ पासवर्ड क्रैक करते हैं (टी 2 ) लुकअप। इंद्रधनुष की तालिकाओं से आप वास्तविक रूप से स्टोर किए जाने वाले की तुलना में प्री-कॉम्पट्यूट टेबल को लगभग बड़ा कर सकते हैं।

हालांकि, इंद्रधनुष या नहीं, हमलावर को अभी भी कम से कम एक बार पूरा हमला चलाना है। इसे कई क्रमिक अनुकूलन परतों के रूप में देखा जा सकता है:

  1. प्रत्येक पासवर्ड को क्रैक करने के लिए ब्रूट-फोर्स / डिक्शनरी हमले की लागत N है
  2. पहले से गणना की गई तालिका के साथ, हमलावर उस लागत N को एक बार भुगतान करता है और उसके बाद प्रति पासवर्ड बहुत कम अतिरिक्त लागत के साथ कई पासवर्डों पर हमला कर सकता है ।
  3. यदि पूर्व-संकलित तालिका एक इंद्रधनुष तालिका है, तो एन कुछ हद तक बड़ा हो सकता है, क्योंकि भंडारण लागत कम हो जाती है। एन पर अड़चन सीपीयू शक्ति बन जाती है जो हमलावर को रोक सकती है, न कि उसकी हार्डडिस्क के आकार को।

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

लवण के बारे में:

साल्ट पूर्व संगणना को हराने का एक तरीका है। उपरोक्त विवरण में, नमक हमलावर को चरण 1 में वापस लाता है: नमकीन हमलावर को कई हमले वाले पासवर्डों के बीच ओ ( एन ) लागत को साझा करने से रोकता है । पहले से गणना की गई तालिकाओं, एक फ़ोर्टाओरी इंद्रधनुष सारणी, अब संभव नहीं हैं।

आप नमस्कार करना चाहते हैं क्योंकि जब हैशेड डेटा में पासवर्ड होते हैं , यानी कुछ ऐसा जो एक यादृच्छिक इंसान के मस्तिष्क के भीतर फिट बैठता है, तो एन काफी कम हो सकता है: मानव वास्तव में पासवर्ड चुनने और याद रखने में खराब हैं। यह "शब्दकोश के हमलों" के बारे में है: कि संभावित पासवर्ड ("शब्दकोश") की कम जगह का उपयोग इस धारणा के तहत किया जाता है कि कई उपयोगकर्ता पासवर्ड उस विशेष रूप से चयनित स्थान में होंगे।

इसलिए सलाटिंग कम से कम हमलावर को पूर्व-गणना की गई तालिकाओं का उपयोग करने से रोकता है, विशेष रूप से पूर्व-गणना इंद्रधनुष तालिकाओं में। यह मानता है कि हमलावर एक या दो पासवर्ड तोड़ने में सक्षम होगा ; हम नहीं चाहते कि वह 1000 अतिरिक्त पासवर्डों को थोड़ा अतिरिक्त ओवरहेड के साथ तोड़ दे।

साथ ही, जनसंपर्क के लिए सलामी देना अच्छा होता है।

SHA-1 लागत के बारे में:

SHA-1 की प्राथमिक लागत 64-बाइट ब्लॉक हैशिंग के बारे में है। SHA-1 कैसे काम करता है: डेटा गद्देदार है, फिर 64-बाइट ब्लॉकों में विभाजित है। एक एकल ब्लॉक को संसाधित करने की लागत एक Intel Core2 प्रणाली पर लगभग 500 घड़ी चक्र है, और यह एकल कोर के लिए है। एमडी 5 और एमडी 4 तेजी से हैं, क्रमशः 400 और 250 चक्रों की गणना करते हैं। यह मत भूलो कि अधिकांश आधुनिक सीपीयू में कई कोर हैं, इसलिए तदनुसार गुणा करें।

कुछ नमकीन योजनाओं में भारी लवण होते हैं; उदाहरण के लिए, हैश फ़ंक्शन में प्रवेश करने वाला वास्तव में एक ही 128-बिट नमक की 40000 क्रमिक प्रतियां है, इसके बाद पासवर्ड ही होता है। यह वैध उपयोगकर्ता के लिए और हमलावर के लिए पासवर्ड हैशिंग को अधिक महंगा बनाता है (मेरे उदाहरण के साथ 10000 का कारक)। यह एक अच्छा विचार है या नहीं यह सेटअप पर निर्भर करता है। एक डेस्कटॉप सिस्टम पर लॉगिन के लिए, यह अच्छा है: उपयोगकर्ता यह भी ध्यान नहीं देगा कि 1 सेंट के बजाय उसके पासवर्ड को हैश करने में 10ms लग गए; लेकिन हमलावर के लिए लागत बहुत ध्यान देने योग्य कारक 10000 से बढ़ी है। प्रति सेकंड हजारों ग्राहकों के साथ साझा सर्वर पर, कुल लागत निषेधात्मक हो सकती है। वैचारिक रूप से, वैध उपयोगकर्ता और हमलावर के लिए समान कारक द्वारा बार उठाना अंततः अच्छी सुरक्षा नहीं है; लेकिन यह कुछ विशिष्ट स्थितियों में एक सार्थक विचार हो सकता है।

ऑनलाइन हमलों के बारे में:

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

आमतौर पर पासवर्ड सुरक्षा के लिए, यह एक हमलावर को ऑफ़लाइन हमले का निर्माण न करने देने के लिए सिस्टम को व्यवस्थित करने के लिए बहुत अधिक भुगतान करता है। यूनिक्स सिस्टम यही करता है: हैशेड पासवर्ड, जो कि विश्व-पठनीय /etc/passwordफ़ाइल में हुआ करते थे, अब उस /etc/shadowफ़ाइल में हैं, जो कुछ विशेषाधिकार प्राप्त अनुप्रयोगों को छोड़कर, रीड एक्सेस के विरुद्ध सुरक्षित है। यहाँ धारणा यह है कि अगर हमलावर पढ़ सकता है /etc/shadow, तो शायद उसका उस प्रणाली पर पर्याप्त नियंत्रण हो जो उसे वास्तव में अब पासवर्ड की आवश्यकता नहीं है ...


5
बहुत बढ़िया जवाब। एकमात्र बिट जिससे मैं असहमत हूं, "वैचारिक रूप से, वैध उपयोगकर्ता और हमलावर के लिए एक ही कारक द्वारा बार उठाना, अंत में अच्छी सुरक्षा नहीं है" - हमलावर को उपयोगकर्ता द्वारा किए जाने वाले कई कार्यों को करना होगा। एक उपयोगकर्ता लॉगिन के लिए एक घड़ी चक्र जोड़ना एक हमलावर के लिए लाखों जोड़ता है।
निक जॉनसन

1
@ थोमस यह सटीक रहता है और शायद अनिश्चित भविष्य के लिए सटीक रहेगा। सामान्य पासवर्ड की खराब गुणवत्ता के कारण हैकर्स किसी भी तरह के हैशिंग के माध्यम से वास्तविक पासवर्ड का अनुमान लगा सकते हैं। "123456" का अनुमान लगाएं और आपको हमेशा कुछ हिट मिलेंगे। यह सही रहेगा चाहे आप कोई भी पासवर्ड स्टोरेज करें।
tylerl

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

1
मैं अपने कोर से हैरान हूं कि @ThomasPornin से एक जवाब में भटक गया कि एमडी 5 पासवर्ड स्टोरेज के लिए सुरक्षित है। अगर MD5 ठीक है, तो हर कोई यह क्यों कहता है कि इसका उपयोग न करें, bcrypt का उपयोग करें ?? क्या वे अत्याचारी हैं? मैंने सबकुछ पढ़ा और समझा है और यह धारणा के तहत है कि एमडी 5 बहुत खराब था क्योंकि इतना क्रूर बल था। हाल ही में के रूप में एक साल पहले के रूप में टिप्पणियाँ जवाब खंडन नहीं है ...
temporary_user_name

1
@Aerovistae: आप सुरक्षा पर उस जवाब पर एक नज़र रखना चाह सकते हैं । साइट; इसमें पासवर्ड हैशिंग पर अधिक विश्लेषण और हाल के विवरण शामिल हैं।
थॉमस पोर्निन

30

पिछले उत्तरों में GPU का कोई उल्लेख नहीं किया गया है, जो SHA-1 हैशिंग को इस हद तक समांतर कर सकता है कि अब एक संपूर्ण डेटाबेस को दिनों या हफ्तों के बजाय मिनटों या घंटों में मजबूर किया जा सकता है, भले ही पासवर्ड को नमस्कार किया गया हो।

आधुनिक पासवर्ड हैश एल्गोरिदम जैसे कि bcrypt या scrypt को विशेष रूप से इस तथ्य के कारण GPUs पर चलने के लिए डिज़ाइन किया गया है कि वे अधिक उच्चतर मेमोरी आवश्यकताओं वाले साइफ़र्स को ब्लॉक कर रहे हैं (और GPU में मेमोरी एक्सेस को उसी सीमा तक समानांतर नहीं किया जा सकता है)। उनके पास एक "कार्य फ़ंक्शन" भी है जो उन्हें प्रौद्योगिकी में सुधार के रूप में मक्खी पर धीमा बनाने की अनुमति देता है।

संक्षेप में, आपको केवल नौकरी के लिए सर्वोत्तम साधनों का उपयोग करना चाहिए। और SHA-1 कला की स्थिति से बहुत दूर है।

आगे पढ़ने के लिए:


2
"आधुनिक पासवर्ड हैश एल्गोरिदम जैसे कि bcrypt या PBKDF2 को विशेष रूप से GPU पर चलाने के लिए डिज़ाइन किया गया है" - क्या आपका मतलब "bcrypt या scrypt" है? PBKDF2 हैशटैग हैशिंग है, इसमें ऐसा कुछ भी नहीं है जो GPU के लिए समस्याग्रस्त हो।
TGR

4
कृपया मुझे बताएं कि आप किस GPU का उपयोग करते हैं, मैं वही खरीदूंगा। यदि आप "मिनटों" में 2 ^ 160 SHA-1 अभिकलन कर सकते हैं (जो कि "घंटे" से कम होगा, तो अधिकतम 59 मिनट में), आपको प्रति सेकंड 10 ^ 44 से अधिक प्रदर्शन करने में सक्षम होना चाहिए। चूंकि PCIe लगभग 128GT / s पर कैप स्थानांतरित करता है, इसलिए आपके GPU में ऑन-बोर्ड मेमोरी भी होना चाहिए। मुझे यह चाहिेए।
डेमोन

3
@ डैमोन: आप मान रहे हैं कि उपयोगकर्ताओं के पास या तो "तुच्छ" पासवर्ड (<8 बिट्स ऑफ़ एनट्रॉपी) या "अनब्रेकेबल" पासवर्ड (> एंट्रोपी के 60 बिट्स) हैं। आप पूरी तरह से हर किसी को अनदेखा कर रहे हैं जिनके बीच में पासवर्ड 10-60 बिट रेंज में है। वे उपयोगकर्ता हैं जहाँ bcrypt, इंद्रधनुष टेबल और GPU हैं, और वे आमतौर पर एक विशिष्ट उपयोगकर्ता आधार का लगभग 80% बनाते हैं।
जम्मीक्स ने

1
(उफ़ ... मुझे कहना चाहिए था, "वे उपयोगकर्ता हैं जहाँ bcrypt, इंद्रधनुष टेबल और GPUs सबसे बड़ा अंतर रखते हैं")
jammycakes

3
कुछ आंकड़ों और विश्लेषणों के लिए, troyhunt.com/2011/06/brief-sony-password-analysis.html देखें - जबकि 36% उपयोगकर्ता पासवर्ड शब्दकोशों में प्रकट होने वाले पासवर्ड चुनते हैं, केवल 2-3% सबसे आम चुनते हैं।
१२:०२

7

आपका वर्णन कला की वर्तमान स्थिति के लिए सटीक लगता है।

आपको किसी भी हैश फ़ंक्शन के एकल पुनरावृत्ति का उपयोग नहीं करना चाहिए, हालांकि: बहुत कम से कम, आपको कई बार पुनरावृति करना चाहिए (हैश के 1000 पुनरावृत्तियों ने हमलावर के काम को 1000 गुना बढ़ा दिया है। यह आपके काम को उसी राशि से बढ़ाता है, लेकिन आप बहुत कम पासवर्ड हैशिंग की तुलना में कर रहे हैं)।

आदर्श रूप से, हालांकि, आपको मौजूदा पासवर्ड भंडारण आदिम का उपयोग करना चाहिए, जैसे कि यहां वर्णित ।


हजारों बार इरिटेट करना उतना अच्छा विचार नहीं है जितना आप सोच सकते हैं। इससे हैश टकराने का खतरा बढ़ जाता है। yorickpeterse.com/articles/use-bcrypt-fool
jammycakes

1
वह लेख पूरी तरह से भ्रमित लगता है। एक सुरक्षित हैशिंग फ़ंक्शन हैरिटिव हैशिंग के माध्यम से सराहनीय एन्ट्रॉपी नहीं खोता है, और पुनरावृति हैशिंग पीबीकेडीएफ 2 और स्क्रीप्ट जैसी महत्वपूर्ण स्ट्रेचिंग योजनाओं का एक मुख्य घटक है। यहां तक ​​कि bcrypt, जिसे लेखक अनुशंसा करता है, एक समान निर्माण का उपयोग करता है। उसका 'हमला' एक हैश का एक उदाहरण खोजने पर निर्भर करता है - जिस स्थिति में, उस हैश का उपयोग करने वाले अधिकांश निर्माण वैसे भी पूरी तरह से टूट जाते हैं। अंत में, मैं अनुशंसा नहीं करता कि लोग सीधे पुनरावृत्ति हैशिंग का उपयोग करें - जैसा कि मैं अपने प्रश्न में कहता हूं, आपको उद्देश्य के लिए डिज़ाइन किए गए मौजूदा आदिम का उपयोग करना चाहिए।
निक जॉनसन

7

SHA1 एक संदेश डाइजेस्ट है , यह कभी भी पासवर्ड-हैशिंग (या की-व्युत्पत्ति) फ़ंक्शन के लिए नहीं था। (हालांकि यह एक KDF के लिए बिल्डिंग ब्लॉक का उपयोग किया जा सकता है, जैसे HMK-SHA1 के साथ PBKDF2 में।)

पासवर्ड-हैशिंग फ़ंक्शन को शब्दकोश हमलों और इंद्रधनुष तालिकाओं के खिलाफ बचाव करना चाहिए। इस लक्ष्य को प्राप्त करने के लिए कई एल्गोरिदम तैयार किए गए हैं।

वर्तमान में, सबसे अच्छा विकल्प शायद आर्गन 2 है । पासवर्ड हैशिंग कार्यों के इस परिवार ने 2015 में पासवर्ड हाशिंग प्रतियोगिता जीती।

यदि आर्गन 2 उपलब्ध नहीं है, तो केवल अन्य मानकीकृत पासवर्ड-हैशिंग या की-व्युत्पत्ति फ़ंक्शन PBKDF2 है , जो एक पुराना NIST मानक है। अन्य विकल्प, यदि मानक का उपयोग करना आवश्यक नहीं है, तो bcrypt और scrypt शामिल हैं

विकिपीडिया के इन कार्यों के लिए पृष्ठ हैं:


4

SHA-1 में गंभीर कमजोरियों की खोज की गई है जो खोज को तेज बल की तुलना में अधिक तेज बनाती है। यह अभी भी काफी हद तक अचूक है, लेकिन यह बहुत अधिक समय के लिए होने की उम्मीद नहीं है; पैरानॉयड प्रोग्रामर SHA-2 परिवार से कुछ का पक्ष लेते हैं।

मूल 2005 परिणाम के संबंध में इस लेख से :

"यह चलने का समय है, लेकिन आग से बाहर नहीं चलना है। आप धुआं नहीं देखते हैं, लेकिन आग अलार्म बंद हो गई है।"

ऐसा नहीं है कि वर्तमान क्रिप्टोकरेंसी SHA-1 को असुरक्षित बनाती है, बल्कि यह है कि क्रिप्टो समुदाय चिंतित है कि कोने के चारों ओर बदतर खबरें हो सकती हैं। यह भय SHA-2 पर भी लागू होता है, जो SHA-1 के समान दोषों को प्रदर्शित करता है, जो कि अधिक बड़े खोज स्थान पर होता है, इसलिए SHA-3 के लिए चल रही खोज ।

संक्षेप में, SHA-1 अभी सुरक्षित है, और संभवतः कुछ समय के लिए होगा, लेकिन क्रिप्टो समुदाय प्रैग्नेंसी से असहज है।


क्या आप एक लिंक प्रदान कर सकते हैं? जैसा कि मैंने कहा, सबसे अच्छा प्रिमेज अटैक मैं खोज को 8 गुना तेज बना सकता हूं, और यहां तक ​​कि काम करने के लिए आपको SHA-1 के आधे चरणों को छोड़ना होगा। (इसके अलावा, मुझे लगता है कि यह दूसरा प्राइमेज अटैक है, जो पासवर्ड हैश के खिलाफ बेकार है।)
10'10

मुझे एनएसए से हाल की खबरों के प्रकाश में आने वाली किसी बात पर भी संदेह है :)
एलेक्स डब्ल्यू

4

फरवरी 2017 तक, SHA-1 को अब सुरक्षित नहीं माना जाना चाहिए। Google ने पूर्ण, गैर-कम-दौर-दौर SHA-1 ( रिपोर्ट करने के लिए लिंक ) के खिलाफ टक्कर के हमलों के साथ सफलता की सूचना दी है । Google की घोषणा के लिए, यहां क्लिक करें

संपादित करें: जैसा कि दूसरों द्वारा बताया गया है, पासवर्ड हैश टक्कर के हमलों के लिए असुरक्षित नहीं हैं। हालाँकि, एक सामान्य दिशानिर्देश के रूप में मैं सुरक्षा-संबंधी अनुप्रयोगों के लिए SHA-1 का चयन नहीं करूँगा। वहाँ बेहतर विकल्प हैं।


ठीक है, SHA-1 टकराव को खोजने में लगभग 6,500 CPU वर्ष और 100 GPU वर्ष लगे , यह कोई उत्पादन हमला नहीं है। किसी पासवर्ड को क्रैक करना सभी संभावित इनपुट्स के खिलाफ नहीं बल्कि 10,000,000 बार-बार आने वाले पासवर्डों की सूचियों के खिलाफ है। यहाँ कागज है
ज़ाफ़

1
पासवर्ड की सुरक्षा के लिए दोष केवल किसी भी हैश फ़ंक्शन का उपयोग कर रहा है। बस एक हैश फ़ंक्शन का उपयोग करना पर्याप्त नहीं है और सुरक्षा को बेहतर बनाने के लिए सिर्फ एक नमक जोड़ना बहुत कम है, क्रिप्टोग्राफिक हैश बहुत तेज़ हैं। इसके बजाय लगभग 100ms की अवधि के लिए एक यादृच्छिक नमक के साथ एक HMAC पर पुनरावृत्त करें और हैश के साथ नमक को बचाएं। इस तरह के PBKDF2(उर्फ Rfc2898DeriveBytes), password_hash/ password_verify, Bcryptऔर इसी तरह के कार्यों का उपयोग करें। बिंदु यह है कि हमलावर बल द्वारा पासवर्ड खोजने में बहुत समय व्यतीत करें। अपने उपयोगकर्ताओं की सुरक्षा करना महत्वपूर्ण है, कृपया सुरक्षित पासवर्ड विधियों का उपयोग करें।
ज़ाफ़

टकराव की स्थिति नहीं है और पासवर्ड हस्ताक्षर नहीं हैं। टकराव के हमले पासवर्ड के खिलाफ काम नहीं करते हैं क्योंकि उन्हें मूल प्लेटेक्स्ट के ज्ञान की आवश्यकता होती है।
TGR

Tgr: सहमत, धन्यवाद। ज़ाफ़: हाँ, इंद्रधनुष के हमलों से बचाव और धीमी गति से क्रिप्टो हैश का उपयोग करने के लिए सलाम करना उन अनुशंसित प्रथाओं में से एक है जिन्हें मैंने इस उत्तर में विशेष रूप से संबोधित नहीं किया था।
आरोन

3

यदि आप नमकीन पासवर्ड स्टोर करते हैं, तो SHA-1 व्यावहारिक उद्देश्यों के लिए ठीक है। SHA-2 को अधिक सुरक्षित माना जाता है, लेकिन SHA-1 कोई समस्या नहीं है जब तक कि आपके पास वास्तव में पागल होने का कारण नहीं है।

यहाँ NIST कहते हैं :

SHA-1 पर अब तक प्रस्तुत परिणाम इसकी सुरक्षा को प्रश्न में नहीं कहते हैं। हालांकि, प्रौद्योगिकी में प्रगति के कारण, NIST ने 2010 तक SHA-1 को बड़े और मजबूत हैश कार्यों (SHA-224, SHA-256, SHA-384 और SHA-512) के पक्ष में चरणबद्ध करने की योजना बनाई है।


यही कारण है कि 2004 उनके से एक NIST टिप्पणी है 2010 मसौदा सिफारिश का कहना है SHA-1 से परे 2010 सभी गैर-डिजिटल हस्ताक्षर पीढ़ी अनुप्रयोगों के लिए मंजूरी दे दी है
TGR
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.