2009-05-06 43 views
18

एक article कि मैं other articles जो बारी में evenmorearticles आदिपासवर्ड कैसे व्यवस्थित करें * सही *?

करने और में अंत मैं पूरी तरह से स्टम्प्ड छोड़ दिया गया था लिंक प्रदान करने के लिए यहाँ अतः दिए गए लिंक में पर ठोकर खाई - तो क्या है सबसे अच्छा तरह से स्टोर करने के लिए डीबी में पासवर्ड? से मैं क्या एक साथ रख सकते हैं आप चाहिए:

  • एक लंबे (कम से कम 128 पूरी तरह से यादृच्छिक बिट्स) नमक है, जो पासवर्ड के बगल में प्लेन में संग्रहीत किया जाता का उपयोग करें;
  • नमकीन पासवर्ड पर SHA-256 (या यहां तक ​​कि अधिक SHA स्तर) के कई पुनरावृत्तियों का उपयोग करें।

लेकिन ... जितना अधिक मैंने क्रिप्टोग्राफी के बारे में पढ़ा है, उतना ही मैं समझता हूं कि मैं वास्तव में कुछ भी नहीं समझता हूं, और जिन चीजों को मैंने वर्षों से सच माना है, वास्तव में गलत हैं। क्या इस विषय पर कोई विशेषज्ञ हैं?

जोड़ा गया: लगता है कि कुछ लोग बिंदु खो रहे हैं। मैं ऊपर दिया गया अंतिम लिंक दोहराता हूं। यह मेरी चिंताओं को स्पष्ट करना चाहिए।

https://www.nccgroup.trust/us/about-us/newsroom-and-events/blog/2007/july/enough-with-the-rainbow-tables-what-you-need-to-know-about-secure-password-schemes/

+0

आपको यह बिल्कुल सही मिला है। पासवर्ड स्टोर न करें - पासवर्ड के स्टोर हैंश। आपका असली सवाल क्या है? नमकीन और हैशिंग का क्या हिस्सा भ्रमित है? या आप सिर्फ नाखुश हैं क्योंकि यह आपके लिए नया है? आपको क्या विरोधाभासी सलाह मिली? –

+0

यह आपके अपने प्रोग्राम में उपयोगकर्ता सत्यापन के लिए है, या आप एक पासवर्ड प्रबंधक बनाना चाहते हैं जहां आपको पासवर्ड वापस करने की आवश्यकता है? – Audioillity

+2

कोई 'सही' उत्तर नहीं है। सुरक्षा का स्तर आवेदन के संदर्भ पर बहुत निर्भर करता है। एक पृथक मशीन (भौतिक रूप से किसी नेटवर्क से कनेक्ट नहीं) वेब-फेस डेटाबेस से पासवर्ड की कम हैशिंग हो सकती है। फिर फिर, आपका डेटाबेस नेटवर्क के लिए सीधे पहुंच योग्य नहीं होना चाहिए, हमेशा उपयोगकर्ता और डेटाबेस के बीच एक एक्सेस परत होना चाहिए। और यदि पासवर्ड को सादे पाठ प्रारूप में डेटाबेस/एक्सेस लेयर में भेजा जाता है तो पासवर्ड की हैशिंग/लवण बेकार है। – Skizz

उत्तर

12

लिखा है आप इसे अधिकार मिल गया। केवल दो सुझाव: एक दिन SHA1 भी कमजोर हो जाता है और आप कुछ और उपयोग करना चाहते हैं

  1. है, यह वर्ष पासवर्ड unhash और उन्हें नई योजना के साथ मिला देना असंभव है। इस कारण से, मेरा सुझाव है कि प्रत्येक पासवर्ड से "संस्करण" संख्या संलग्न होती है जो आपको बताती है कि आपने किस योजना का उपयोग किया था (नमक की लंबाई, कौन सा हैश, कितनी बार)। यदि एक दिन आपको SHA से कुछ मजबूत करने की आवश्यकता है, तो आप डेटाबेस में पुरानी शैली के पासवर्ड होने के दौरान नए स्टाइल पासवर्ड बना सकते हैं और अभी भी उन्हें अलग बता सकते हैं। उपयोगकर्ताओं को नई योजना में माइग्रेट करना आसान होगा।

  2. पासवर्ड अभी भी उपयोगकर्ता से एन्क्रिप्शन के बिना सिस्टम में जाते हैं। यदि यह कोई समस्या है तो SRP पर देखें। एसआरपी इतना नया है कि आपको इसे लागू करने के बारे में थोड़ा सा भयावह होना चाहिए, लेकिन अब तक यह आशाजनक दिखता है।

संपादित करें: बाहर कर देता है bcrypt विचार नंबर 1. संग्रहीत जानकारी है (लागत, नमक, हैश), जहां लागत कितनी बार हैशिंग किया गया है पर यह करने के लिए मुझे हराया। ऐसा लगता है कि bcrypt कुछ सही किया था। उपयोगकर्ता हस्तक्षेप के बिना आपके पास हैश की संख्या को बढ़ाया जा सकता है।

+1

+1। मैं देख सकता हूं कि भविष्य में उपयोगी हो रहा है .... – Matt

+1

यह वास्तव में एक बुरा विचार है क्योंकि यह अनावश्यक रूप से एक समस्या के लिए लेखांकन द्वारा समाधान को जटिल बनाता है जो अभी तक मौजूद नहीं है। YAGNI सिद्धांत का क्लासिक उल्लंघन। वास्तविक समस्या से निपटने के लिए –

+1

+1। किफ के व्यापक अस्वीकार को एसओ पर यहां पूछे जाने वाले समस्या के उदाहरणों के साथ आसानी से अस्वीकार कर दिया गया है। किसी ऐसे व्यक्ति के रूप में जिसने हजारों उपयोगकर्ताओं से थोड़े समय में नए पासवर्ड चुनने के लिए कहा है, मेरी इच्छा है कि मेरे पास एक आसान माइग्रेशन पथ हो। – erickson

0

मैं वहाँ लगता है पासवर्ड की आवश्यकता पर कोई अतिरिक्त यात्रा, जस्ट यकीन है कि एक नमक, और एक Complexe एक है बनाने;) मैं personnaly का उपयोग SHA-1 2 नमक कीफ़्रेज़ के साथ संयुक्त।

+0

एआरएम ... http://www.schneier.com/blog/archives/2005/02/sha1_broken.html – chaos

+1

1-पास हैशिंग में भेद्यता है।आप उम्मीदवारों के एक बहुत ही संभावित सेट की गणना कर सकते हैं जो हैश की ओर ले जाते हैं। एकाधिक पास इंद्रधनुष तालिकाओं को तेजी से बढ़ने का कारण बनते हैं, इसलिए 256x हैशिंग। http://en.wikipedia.org/wiki/Rainbow_table –

+0

मैं एसएचए -512 का उपयोग करता हूं, क्योंकि स्पेस (और एल्गोरिदम समय) कोई मुद्दा नहीं है, और SHA-1 में टकराव दिखाने वाला एक पेपर है ... हालांकि मैं हूं बस पागल। – MichaelICE

2

सच में यह इस बात पर निर्भर करता है कि पासवर्ड क्या हैं। आपको देखभाल के साथ कोई पासवर्ड संग्रहित करना चाहिए, लेकिन कभी-कभी दूसरों की तुलना में बहुत अधिक देखभाल की आवश्यकता होती है। एक सामान्य नियम के रूप में सभी पासवर्ड धोया जाना चाहिए और प्रत्येक पासवर्ड में एक अद्वितीय नमक होना चाहिए।

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

लवण से संबंधित एक और चीज। पासवर्ड बनाने की कुंजी + हैशिंग करते समय नमक का काम दोनों के संयोजन की जटिलता है। यदि आपके पास 12 वर्ण पासवर्ड है और इसमें 1 वर्ण नमक जोड़ें, तो नमक ज्यादा नहीं करता है, लेकिन पासवर्ड को क्रैक करना अभी भी एक शानदार काम है। विपरीत भी सही है।

0

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

+3

इससे कोई फर्क नहीं पड़ता। आपका नमक प्रभावी ढंग से क्या कर रहा है इंद्रधनुष तालिका का आकार बढ़ रहा है जिसका उपयोग आपके हैंश को क्रैक करने के लिए किया जाना चाहिए। एक छोटा सा नमक इस तरह से बहुत कुछ नहीं करता है। (मुख्य समस्या लवणों में से एक यह है कि उपयोगकर्ता कम पासवर्ड चुनते हैं।) – chaos

+0

इससे कोई फर्क नहीं पड़ता, लेकिन केवल एक बिंदु पर। आपके द्वारा जोड़े गए प्रत्येक नमक के लिए, आप एक शब्दकोश हमले के लिए आवश्यक स्पेस आवश्यकताएं दोगुना करते हैं (या हमलावर को अपना शब्दकोश आधा में कटौती करना पड़ता है)। यदि कोई अच्छी पासवर्ड चयन नीति है (न्यूनतम लंबाई, मिश्रित मामले, अंक, विराम चिह्न के लिए आवश्यकता), तो आप शायद पुराने 12-बिट लवण से सुरक्षित रहेंगे। हालांकि, 64 बिट्स का भी उपयोग कर सकते हैं और हर जगह सुरक्षित रह सकते हैं। किसी के पास वास्तव में 10^1 9 शब्दकोशों के लिए जगह नहीं है, भले ही वे वास्तव में छोटे हों। – erickson

0

बस कहा, एक क्रिप्टोग्राफ़िक रूप से सुरक्षित हैश एल्गोरिदम और पासवर्ड के लिए कुछ नमक का उपयोग करें, जो सभी उपयोग मामलों के 99.99% के लिए पर्याप्त होना चाहिए। कमजोर लिंक वह कोड होगा जो पासवर्ड और साथ ही पासवर्ड इनपुट की जांच करता है।

+0

जब तक एक बेहतर सुरक्षा देने के लिए कोड की 5 और छोटी रेखाओं के रूप में जटिल है, मैं सभी उपयोग मामलों में बेहतर विकल्प के लिए जाना चाहता हूं। –

+0

मुझे नहीं लगता कि आप इसे "कोड की 5 और छोटी रेखाओं" में प्राप्त कर रहे हैं ... लेकिन मैं यहां अन्य उत्तरों और टिप्पणियां भी पढ़ूंगा, शायद वे मुझे गलत साबित करने जा रहे हैं। – Lucero

+0

कोड और डेटाबेस कॉलम की पांच और पंक्तियां। – chaos

1

उपयोग:

  1. हैश्ड पासवर्ड भंडारण
  2. एक 128+ बिट उपयोगकर्ता के स्तर नमक, यादृच्छिक, पुनर्जीवित (अर्थातआप लगातार किसी विशेष उपयोगकर्ता के लिए एक ही नमक नहीं रखते)
  3. एक मजबूत, computationally महंगा हैशिंग विधि
  4. क्रियाविधि कि कुछ अलग है (हैश एल्गोरिथ्म, कितने हैशिंग जब आप नया पासवर्ड हैश बनाने के नए लवण बनाने पुनरावृत्तियों आप उपयोग करते हैं, क्या लवण आदेश इस तरह दोनों किसी भी 'मानक कार्यान्वयन गाइड' से, में concatenated रहे हैं कुछ) और किसी भी अन्य पासवर्ड भंडारण कार्यान्वयन से आप
+1

128 बिट्स ओवरकिल है। यहां तक ​​कि 64-बिट्स भी अधिक है, इसलिए मैं इसका उपयोग करता हूं। "सिस्टम लेवल नमक" की कोई आवश्यकता नहीं है जब तक कि "उपयोगकर्ता स्तर नमक" किसी उपयोगकर्ता के लिए किसी भी तरह अनुमानित नहीं है (जैसे उनका नाम उपयोग करना)। नमक के लिए एक क्रिप्टोग्राफिक आरएनजी का उपयोग करने के लिए यह आसान और अधिक सुरक्षित है। – erickson

+0

ओवरकिल? मुझे ओवरकिल पसंद है। सिस्टम-स्तरीय नमक इस घटना के लिए रक्षा-गहराई से है कि आपके स्रोत कोड के साथ समझौता किए जाने के बिना आपकी डेटाबेस सामग्री से समझौता किया गया है। सहमत हैं कि नमक शोर होना चाहिए, उपयोगकर्ता की जानकारी नहीं। – chaos

+0

मुझे यह नहीं मिला। ठीक से हो गया, पाचन, नमक, और स्रोत कोड का खुलासा किया जा सकता है, यह अभी भी हमलावर के लिए पासवर्ड खोजने के लिए अक्षम होगा। जब आप कहते हैं कि डेटाबेस से समझौता किया जा सकता है, तो आपका क्या मतलब है? समझौता करके आपका क्या मतलब है? – erickson

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