निष्कर्ष: SHA-1 प्रीइमेज हमलों के खिलाफ कुछ भी उतना ही सुरक्षित है, हालांकि यह गणना करना आसान है, जिसका अर्थ है कि ब्रूटफोर्स या शब्दकोश हमले को माउंट करना आसान है। (SHA-256 जैसे उत्तराधिकारियों के लिए भी यही सच है।) परिस्थितियों के आधार पर, एक हैश फ़ंक्शन जिसे कम्प्यूटेशनल रूप से महंगा होना चाहिए (जैसे कि bcrypt) एक बेहतर विकल्प हो सकता है।
कुछ लोग "SHA-1 टूटा हुआ है" जैसी टिप्पणियों के आसपास फेंक देते हैं, इसलिए मैं समझने का प्रयास कर रहा हूं कि वास्तव में इसका क्या मतलब है। मान लेते हैं कि मेरे पास SHA-1 पासवर्ड हैश का एक डेटाबेस है, और एक हमलावर ने SHA-1 ब्रेकिंग एल्गोरिथ्म की एक अवस्था को सचेत किया है और 100,000 मशीनों के साथ एक बोटनेट इसे एक्सेस करता है। (100k होम कंप्यूटर पर नियंत्रण होने का मतलब होगा कि वे प्रति सेकंड लगभग 10 ^ 15 ऑपरेशन कर सकते हैं।) उन्हें कितने समय की आवश्यकता होगी
- किसी एक उपयोगकर्ता का पासवर्ड ज्ञात करें?
- किसी दिए गए उपयोगकर्ता का पासवर्ड पता करें?
- सभी उपयोगकर्ताओं के पासवर्ड का पता लगाएं?
- उपयोगकर्ताओं में से एक के रूप में लॉग इन करने का एक तरीका खोजें?
- विशिष्ट उपयोगकर्ता के रूप में लॉग इन करने का एक तरीका खोजें?
यदि पासवर्ड नमकीन हैं, तो यह कैसे बदलता है? क्या नमकीन बनाने की विधि (उपसर्ग, उपसर्ग, दोनों, या कुछ और अधिक जटिल है जैसे कि 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 के उपयोग के लिए एक महत्वपूर्ण व्युत्पन्न कार्य के रूप में खतरे को कैसे बढ़ाता है। क्या आम तौर पर यह सोचने के लिए अच्छे कारण हैं कि टकराव का हमला या दूसरे प्राइमेज हमले को अंततः पहले प्रिमिज हमले में बदल दिया जा सकता है?