काम पर हमारे पास लवण के लिए दो प्रतिस्पर्धी सिद्धांत हैं। जिन उत्पादों पर मैं काम करता हूं, वे हैश को नमक करने के लिए उपयोगकर्ता नाम या फोन नंबर जैसी किसी चीज़ का उपयोग करते हैं। अनिवार्य रूप से कुछ ऐसा है जो प्रत्येक उपयोगकर्ता के लिए अलग है, लेकिन हमारे लिए आसानी से उपलब्ध है। अन्य उत्पाद बेतरतीब ढंग से प्रत्येक उपयोगकर्ता के लिए एक नमक उत्पन्न करता है और हर बार उपयोगकर्ता पासवर्ड बदलने के लिए बदलता है। फिर डेटाबेस में नमक को एन्क्रिप्ट किया जाता है।
मेरा प्रश्न है कि क्या दूसरा दृष्टिकोण वास्तव में आवश्यक है? मैं विशुद्ध रूप से सैद्धांतिक दृष्टिकोण से समझ सकता हूं कि यह पहले दृष्टिकोण की तुलना में अधिक सुरक्षित है, लेकिन व्यावहारिक दृष्टिकोण से क्या होगा। उपयोगकर्ता को प्रमाणित करने के लिए अभी नमक को अनइंक्रिप्टेड करके लॉगिन जानकारी पर लागू किया जाना चाहिए।
इसके बारे में सोचने के बाद, मुझे इस दृष्टिकोण से वास्तविक सुरक्षा लाभ नहीं दिखता है। खाते से खाते में नमक बदलना, फिर भी किसी के लिए हैशिंग एल्गोरिथ्म को बल देने का प्रयास करना बहुत मुश्किल होता है, भले ही हमलावर को यह पता चले कि प्रत्येक खाते के लिए यह कैसे निर्धारित किया जाए। यह इस धारणा पर चल रहा है कि पासवर्ड पर्याप्त रूप से मजबूत हैं। (स्पष्ट रूप से पासवर्ड के एक सेट के लिए सही हैश ढूंढना जहां वे सभी दो अंक हैं पासवर्ड के सही हैश को खोजने की तुलना में काफी आसान है जो 8 अंक हैं)। क्या मैं अपने तर्क में गलत हूं, या कुछ ऐसा है जो मुझे याद आ रहा है?
संपादित करें: ठीक है, इसलिए यहां मुझे लगता है कि नमक को एन्क्रिप्ट करने के लिए यह वास्तव में लूट का कारण है। (lemme पता है कि मैं सही रास्ते पर हूँ)।
निम्नलिखित स्पष्टीकरण के लिए, हम मानेंगे कि पासवर्ड हमेशा 8 वर्ण के होते हैं और नमक 5 होता है और सभी पासवर्ड लोअरकेस अक्षरों से युक्त होते हैं (यह सिर्फ गणित को आसान बनाता है)।
प्रत्येक प्रविष्टि के लिए एक अलग नमक होने का मतलब है कि मैं एक ही इंद्रधनुष तालिका का उपयोग नहीं कर सकता (वास्तव में तकनीकी रूप से मैं कर सकता था अगर मेरे पास पर्याप्त आकार में से एक था, लेकिन आइए इसे अनदेखा करें)। यह नमक की असली कुंजी है जो मुझे समझ में आता है, क्योंकि हर खाते को क्रैक करने के लिए मुझे पहिया को सुदृढ़ करना होगा ताकि प्रत्येक के लिए बोल सकें। अब अगर मुझे पता है कि हैश उत्पन्न करने के लिए पासवर्ड पर सही नमक कैसे लगाया जाता है, तो मैं ऐसा करूँगा क्योंकि एक नमक वास्तव में हैश वाक्यांश की लंबाई / जटिलता का विस्तार करता है। इसलिए मैं उन संभावित संयोजनों की संख्या में कटौती कर रहा हूं जिन्हें मुझे "पता" करने के लिए उत्पन्न करने की आवश्यकता होगी मेरे पास 13 ^ 26 से 8 ^ 26 तक पासवर्ड + नमक है क्योंकि मुझे पता है कि नमक क्या है। अब यह आसान है, लेकिन अभी भी वास्तव में कठिन है।
तो नमक को एन्क्रिप्ट करने पर। अगर मुझे पता है कि नमक एन्क्रिप्टेड है, तो मैं कोशिश नहीं करूंगा और डिक्रिप्ट (यह मानते हुए कि यह एन्क्रिप्शन का एक पर्याप्त स्तर है) इसे पहले। मैं इसे नजरअंदाज कर दूंगा। इसके बजाय यह समझने की कोशिश करें कि इसे कैसे डिक्रिप्ट किया जाए, पिछले उदाहरण पर वापस जाते हुए मैं सिर्फ 13 ^ 26 के लिए सभी कुंजियों वाली एक बड़ी इंद्रधनुष तालिका उत्पन्न करूंगा। नमक न जानने से मुझे निश्चित रूप से धीमा हो जाएगा, लेकिन मुझे नहीं लगता कि यह पहले नमक एन्क्रिप्शन को क्रैक करने के स्मारकीय कार्य को जोड़ देगा। इसलिए मुझे नहीं लगता कि यह इसके लायक है। विचार?
यहाँ एक लिंक बताया गया है कि ब्रूट फ़ोर्स अटैक के तहत कब तक पासवर्ड पकड़े रहेंगे: http://www.lockdown.co.uk/?pg=combi