security पासवर्ड हैशिंग, नमक और धोया मूल्यों का भंडारण




encryption hash (4)

मुझे लगता है कि आप समस्या को अधिक जटिल बना रहे हैं।

समस्या से शुरू करें:

  1. क्या आप कमजोर पासवर्ड की रक्षा करने की कोशिश कर रहे हैं?
  2. क्या आप इंद्रधनुष के हमलों के खिलाफ कम करने की कोशिश कर रहे हैं?

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

  • क्या होता है जब आप डीबी को दूसरे सर्वर पर माइग्रेट करते हैं?
    • क्या आप अद्वितीय, प्रति डीबी मान बदल सकते हैं, यदि ऐसा है तो वैश्विक इंद्रधनुष तालिका उत्पन्न की जा सकती है, यदि नहीं तो आप अपने डीबी को पुनर्स्थापित नहीं कर सकते हैं।

इसके बजाय मैं अतिरिक्त कॉलम जोड़ूंगा और एक उचित यादृच्छिक नमक स्टोर करूंगा। यह किसी भी तरह के इंद्रधनुष हमले के खिलाफ रक्षा करेगा। कई तैनाती में।

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

मान लीजिए कि आप डीबीएमएस में कितने पासवर्ड धोए गए थे, यह तय करने की स्वतंत्रता थी। क्या इस तरह की योजना में स्पष्ट कमजोरियां हैं?

डीबीएमएस में संग्रहीत हैश मान बनाने के लिए, लें:

  • एक मूल्य जो नमक के हिस्से के रूप में डीबीएमएस सर्वर उदाहरण के लिए अद्वितीय है,
  • और नमक के दूसरे भाग के रूप में उपयोगकर्ता नाम,
  • और वास्तविक पासवर्ड के साथ नमक के संयोजन को बनाते हैं,
  • और SHA-256 एल्गोरिदम का उपयोग कर पूरी स्ट्रिंग हैश,
  • और परिणाम डीबीएमएस में स्टोर करें।

इसका मतलब यह होगा कि टक्कर से आने वाले किसी भी व्यक्ति को प्रत्येक उपयोगकर्ता नाम और प्रत्येक डीबीएमएस सर्वर इंस्टेंस के लिए अलग से काम करना होगा। मैं नए NIST मानक हैश एल्गोरिदम ( SHA-3 ) के उपयोग की अनुमति देने के लिए वास्तविक हैश तंत्र को कुछ हद तक लचीला रखने की योजना बना रहा हूं जो अभी भी काम कर रहा है।

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

पासवर्ड पहले और उपयोगकर्ता नाम और 'अद्वितीय मूल्य' दूसरा, या डेटा के तीन स्रोतों के किसी अन्य क्रमपरिवर्तन के लिए कोई फायदा होगा? या तारों को interleaving के बारे में क्या?

क्या मुझे यादृच्छिक नमक मूल्य (प्रति पासवर्ड) के साथ-साथ उपर्युक्त जानकारी जोड़ने (और रिकॉर्ड) करने की आवश्यकता है? (लाभ: उपयोगकर्ता पासवर्ड का पुनः उपयोग कर सकता है और फिर भी, डेटाबेस में दर्ज एक अलग हैश प्राप्त कर सकता है। नुकसान: नमक दर्ज किया जाना चाहिए। मुझे संदेह है कि लाभ काफी नुकसान से अधिक है।)

बहुत से संबंधित SO प्रश्न हैं - यह सूची व्यापक होने की संभावना नहीं है:

मुझे लगता है कि इन सवालों के जवाब मेरे एल्गोरिदम का समर्थन करते हैं (हालांकि यदि आप बस यादृच्छिक नमक का उपयोग करते हैं, तो 'प्रति अद्वितीय मूल्य' और उपयोगकर्ता नाम घटक कम महत्वपूर्ण हैं)।


नमक को यादृच्छिक और अद्वितीय होना चाहिए। इसे स्वतंत्र रूप से जाना जा सकता है क्योंकि यह हमलावर की मदद नहीं करता है। कई सिस्टम डेटाबेस में सादा पाठ नमक को हैशर्ड पासवर्ड के बगल में कॉलम में संग्रहीत करेंगे।

नमक यह सुनिश्चित करने में मदद करता है कि यदि दो लोग (उपयोगकर्ता ए और उपयोगकर्ता बी) एक ही पासवर्ड साझा करते हैं तो यह स्पष्ट नहीं है। प्रत्येक पासवर्ड के लिए यादृच्छिक और अद्वितीय नमक के बिना हैश मान समान होंगे और स्पष्ट रूप से यदि उपयोगकर्ता ए के लिए पासवर्ड क्रैक किया गया है तो उपयोगकर्ता बी के पास एक ही पासवर्ड होना चाहिए।

यह हमलों से बचाने में भी मदद करता है जहां ज्ञात पासवर्ड के खिलाफ हैश का एक शब्दकोश मिलान किया जा सकता है। उदाहरण के लिए इंद्रधनुष टेबल।

इसके अलावा "वर्क फैक्टर" के साथ एक एल्गोरिदम का उपयोग करने का अर्थ यह भी है कि कम्प्यूटेशनल पावर काम को बढ़ाता है क्योंकि हैश बनाने के लिए एल्गोरिदम को भी जाना पड़ सकता है। उदाहरण के लिए, bcrypt । इसका मतलब है कि ब्रूट फोर्स हमलों के अर्थशास्त्र अस्थिर हो जाते हैं। संभवतः ज्ञात हैश की सारणी बनाना मुश्किल हो जाता है क्योंकि उन्हें बनाने में अधिक समय लगता है; "कार्य कारक" में भिन्नता का अर्थ यह होगा कि अधिक तालिकाओं का निर्माण करना होगा।


पासवर्ड में यादृच्छिक नमक क्यों न जोड़ें और संयोजन हैश। इसके बाद हैश और नमक को एक बाइट [] में संयोजित करें और डीबी में स्टोर करें?

यादृच्छिक नमक का लाभ यह है कि उपयोगकर्ता इसका उपयोगकर्ता नाम बदलने के लिए स्वतंत्र है। नमक को गुप्त होना जरूरी नहीं है, क्योंकि इसका उपयोग शब्दकोश हमलों को रोकने के लिए किया जाता है।


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





salt