एक इंद्रधनुष तालिका हमले के खिलाफ पासवर्ड नमक कैसे मदद करता है?


220

मुझे एक पासवर्ड के लिए नमक के उद्देश्य को समझने में थोड़ी परेशानी हो रही है। यह मेरी समझ है कि प्राथमिक उपयोग एक इंद्रधनुष तालिका हमले में बाधा है। हालाँकि, जिन तरीकों को मैंने इसे लागू करने के लिए देखा है, वे वास्तव में समस्या को कठिन नहीं बनाते हैं।

मैंने कई ट्यूटोरियल सुझाए हैं कि नमक को निम्नलिखित के रूप में इस्तेमाल किया जाए:

$hash =  md5($salt.$password)

तर्क यह है कि हैश अब मूल पासवर्ड के लिए नहीं, बल्कि पासवर्ड और नमक के संयोजन से बनता है। लेकिन कहते हैं कि $salt=fooऔर $password=barऔर $hash=3858f62230ac3c915f300c664312c63f। अब एक इंद्रधनुष तालिका वाला कोई व्यक्ति हैश को उलट सकता है और इनपुट "फोब्बर" के साथ आ सकता है। वे तब पासवर्डों के सभी संयोजनों (f, fo, foo, ... oobar, obar, bar, ar, ar) की कोशिश कर सकते थे। पासवर्ड प्राप्त करने में कुछ और मिलीसेकंड लग सकते हैं, लेकिन बहुत अधिक नहीं।

अन्य उपयोग जो मैंने देखा है वह मेरे लिनक्स सिस्टम पर है। / Etc / छाया में हैशेड पासवर्ड वास्तव में नमक के साथ जमा होते हैं । उदाहरण के लिए, "फू" का नमक और "बार" का पासवर्ड इस पर हैश होगा $1$foo$te5SBM.7C25fFDu6bIRbX1:। यदि कोई हैकर किसी तरह इस फाइल पर अपना हाथ पा सकता है, तो मैं नहीं देखता कि नमक किस उद्देश्य से काम करता है, क्योंकि रिवर्स हैश को te5SBM.7C25fFDu6bIRbX"फू" कहा जाता है।

किसी भी प्रकाश के लिए धन्यवाद कोई भी इस पर बहा सकता है।

संपादित करें : मदद के लिए धन्यवाद। यह समझने के लिए कि मैं क्या समझता हूं, नमक हैशेड पासवर्ड को और अधिक जटिल बना देता है, इस प्रकार यह एक पूर्वनिर्मित इंद्रधनुष तालिका में मौजूद होने की संभावना को बहुत कम कर देता है। इससे पहले कि मैं क्या गलत समझा था कि मैं सभी हैश के लिए एक इंद्रधनुष तालिका मान रहा था।


यह भी देखें stackoverflow.com/questions/213380/…
erickson

और यह भी देखें: stackoverflow.com/questions/1645161/…
Jacco

इसके अलावा, यहां अपडेट किया गया - md5 हैशिंग का उपयोग अब सबसे अच्छा अभ्यास नहीं है। stackoverflow.com/questions/12724935/salt-and-passwords
स्टुअर्टएलसी

संपादन के लिए धन्यवाद। मुझे वही संदेह था जो अब स्पष्ट है। इसलिए 'सॉल्ट' की बात यह है कि पहली बार मिलावटी (नमकीन) पासवर्ड के हैश को समाहित करने के लिए रेनबो टेबल की अत्यधिक संभावना नहीं है। : डी
वैभव

जवाबों:


237

एक सार्वजनिक नमक एक पासवर्ड को क्रैक करते समय शब्दकोश के हमलों को कठिन नहीं बनायेगा। जैसा कि आपने बताया है, हमलावर के पास हैशेड पासवर्ड और नमक दोनों तक पहुंच है, इसलिए शब्दकोश हमले को चलाते समय, वह पासवर्ड को क्रैक करने का प्रयास करते समय केवल ज्ञात नमक का उपयोग कर सकता है।

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

पहले को समझने के लिए, एक एकल पासवर्ड फ़ाइल की कल्पना करें जिसमें सैकड़ों उपयोगकर्ता नाम और पासवर्ड हों। नमक के बिना, मैं "md5 (प्रयास [0])" की गणना कर सकता था, और फिर फाइल के माध्यम से स्कैन करके देख सकता था कि कहीं यह हैश तो नहीं दिखा रहा है। यदि लवण मौजूद हैं, तो मुझे "md5 (नमक [a। Try [0])" की गणना करनी होगी, प्रविष्टि A से तुलना करनी होगी, फिर "md5 (नमक [b]। प्रयास [0])", प्रविष्टि B से तुलना करें। , आदि अब मेरे पास nकाम करने के लिए कई बार है, जहां nफ़ाइल में उपयोगकर्ता नाम और पासवर्ड की संख्या है।

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

लेकिन अगर पासवर्ड फ़ाइल नमकीन है, तो इंद्रधनुष तालिका में "नमक। पासवर्ड" पूर्व-हैशेड होना चाहिए। यदि नमक पर्याप्त रूप से यादृच्छिक है, तो यह बहुत कम संभावना है। मेरे पास आमतौर पर इस्तेमाल होने वाली, प्री-हैशेड पासवर्ड (इंद्रधनुष तालिका) की सूची में "हैलो" और "फोब्बर" और "क्वर्टी" जैसी चीजें होंगी, लेकिन मैं "jX95psDZhlo" जैसी चीजें नहीं करूंगा। "LPgB0sdgxfoobar" या "dZVUABJtqwerty" पूर्व-संगणित। इससे इंद्रधनुष तालिका निषेधात्मक रूप से बड़ी हो जाएगी।

इसलिए, नमक हमलावर को वापस एक-गणना-प्रति-पंक्ति-प्रति-प्रयास में कम कर देता है, जो कि जब पर्याप्त रूप से लंबे, पर्याप्त रूप से यादृच्छिक पासवर्ड के साथ युग्मित होता है, (आम तौर पर बोलना) नायाब होता है।


15
मुझे यकीन नहीं है कि मैंने अपने जवाब में क्या कहा कि वे थे?
रॉस

2
एरिकसन, मुझे लगता है कि संपादन भ्रामक था - मुझे नहीं लगता कि ज्यादातर लोग एक इंद्रधनुष तालिका हमले को एक तरह का शब्दकोश हमला मानते हैं। मुझे बताएं कि क्या कुछ विशिष्ट है जो आपको लगता है कि मेरे उत्तर में भ्रमित है, और मैं इसे सही करने की कोशिश करूंगा।
रॉस

काश एक और अधिक दे सकता है! खासकर पहले पैराग्राफ के लिए। उस एक ने इसे सभी IMHO
सीजर

5
मुझे पता है कि यह पुराना है, लेकिन इंद्रधनुषी तालिकाओं का आपका वर्णन गलत है। आप इसके बजाय हैश टेबल का वर्णन कर रहे हैं। इंद्रधनुष की तालिका के लिए सुरक्षा देखें ।stackexchange.com/questions/379/… । हैश तालिका में हैश करने के लिए पासवर्ड की 1 से 1 मैपिंग होती है (जैसा कि आप वर्णन करते हैं), लेकिन इंद्रधनुष तालिकाओं को एक कम करने वाले फ़ंक्शन की आवश्यकता होती है जो हैश को प्लेनटेक्स्ट में बदल देती है, फिर हजारों बार रिहा किया जाता है, केवल प्रारंभिक प्लेनटेक्स्ट और अंतिम हैश का भंडारण। खोज करना हैश तालिकाओं की तुलना में अधिक लंबे समय तक होता है, लेकिन प्रति हैश कई प्लेनटेक्स्ट 'कैप्चर' करता है।
मार्क फिशर

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

119

अन्य उत्तर विषय की गलतफहमी को दूर करने के लिए प्रतीत नहीं होते हैं, इसलिए यहां दिया गया है:

नमक के दो अलग-अलग उपयोग

मैंने कई ट्यूटोरियल सुझाए हैं कि नमक को निम्नलिखित के रूप में इस्तेमाल किया जाए:

$hash = md5($salt.$password)

[...]

अन्य उपयोग जो मैंने देखा है वह मेरे लिनक्स सिस्टम पर है। / Etc / छाया में हैशेड पासवर्ड वास्तव में नमक के साथ जमा होते हैं।

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

हैश की सुरक्षा

अब एक इंद्रधनुष तालिका वाला कोई व्यक्ति हैश को उलट सकता है और इनपुट "फोब्बर" के साथ आ सकता है।

[...]

चूंकि te5SBM.7C25fFDu6bIRbX के रिवर्स हैश में "फू" शामिल है।

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

इसका मतलब है कि आप सामान्य पासवर्ड के साथ इंद्रधनुष तालिका नहीं बना सकते हैं और बाद में इसे कुछ नमक के साथ "अपडेट" कर सकते हैं। आपको शुरुआत से नमक को ध्यान में रखना होगा।

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

नमक की गुणवत्ता

लेकिन कहते हैं $salt=foo

"फू" नमक का एक बेहद घटिया विकल्प होगा । आम तौर पर आप ASCII में एन्कोडेड एक यादृच्छिक मूल्य का उपयोग करेंगे।

इसके अलावा, प्रत्येक पासवर्ड में स्वयं नमक होता है, सिस्टम पर अन्य सभी लवणों से अलग (उम्मीद)। इसका मतलब यह है कि हमलावर को प्रत्येक पासवर्ड पर व्यक्तिगत रूप से इस उम्मीद के बजाय हमला करना पड़ता है कि कोई हैश उसके डेटाबेस में मौजूद किसी एक मान से मेल खाता है।

हमला

यदि कोई हैकर किसी तरह इस फाइल पर अपना हाथ जमा सके, तो मुझे नहीं लगता कि नमक किस उद्देश्य से काम करता है,

एक इंद्रधनुष तालिका हमले की हमेशा आवश्यकता होती है /etc/passwd(या जो भी पासवर्ड डेटाबेस का उपयोग किया जाता है), या फिर आप इंद्रधनुष के टेबल में हैश की तुलना वास्तविक पासवर्ड के हैश से कैसे करेंगे?

इस उद्देश्य के लिए: मान लें कि हमलावर 100,000 शब्द आमतौर पर इस्तेमाल किए जाने वाले अंग्रेजी शब्दों और ठेठ पासवर्ड ("गुप्त") के लिए एक इंद्रधनुष तालिका बनाना चाहता है। नमक के बिना उसे 100,000 हैश का शिकार करना होगा। यहां तक ​​कि 2 पात्रों के पारंपरिक यूनिक्स नमक के साथ (प्रत्येक 64 विकल्पों में से एक है [a–zA–Z0–9./]:) उसे 4,096,000,000 हैश की गणना और भंडारण करना होगा ... काफी सुधार।


2
वास्तव में अच्छा जवाब। इसने मुझे चीजों को इतना बेहतर समझने में मदद की। +1
wcm

यदि किसी हैकर के पास नमक का उपयोग होता है और उसका उपयोग हैशिंग फ़ंक्शन में कैसे किया जाता है, तो क्या वे सिर्फ नमकीन हैश की तालिका बनाने और इंद्रधनुष तालिका के साथ उन हैश की तुलना करने के लिए उपयोग नहीं कर सकते हैं?
जॉनी

5
@ जॉनी "नमक" नहीं है। पूरे बिंदु यह है कि नमक हर पासवर्ड प्रविष्टि के लिए अलग है।

86

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

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


1
+1: नमक यादृच्छिक संख्या जनरेटर द्वारा निर्मित कुछ यादृच्छिक स्ट्रिंग के हेक्स डाइजेस्ट का एक हिस्सा हो सकता है। प्रत्येक बिट यादृच्छिक है।
एस.लॉट

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

2
सहमत - @erickson, मुझे लगता है कि आपका संपादन गलत है। इंद्रधनुष तालिका में भारी मात्रा में भंडारण की आवश्यकता होती है , लेकिन यह हैश के पीछे संदेश प्राप्त करने के लिए तेजी से बनाता है।
कार्ल सेलेबर्ग

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

... हमलों, लेकिन आप शब्दकोश हमलों के लिए इंद्रधनुष तालिकाओं की जरूरत नहीं है।
रासमस फेबर

35

फिर भी एक और बढ़िया सवाल, कई विचारशील जवाबों के साथ - +1 से लेकर एसओ तक!

एक छोटा बिंदु जिसे मैंने स्पष्ट रूप से उल्लेख नहीं किया है, वह यह है कि, प्रत्येक पासवर्ड में एक यादृच्छिक नमक जोड़कर, आप वस्तुतः गारंटी दे रहे हैं कि एक ही पासवर्ड चुनने के लिए दो उपयोगकर्ता अलग-अलग हैश का उत्पादन करेंगे।

यह महत्वपूर्ण क्यों है?

उत्तर पश्चिमी अमेरिका में एक बड़ी सॉफ्टवेयर कंपनी में पासवर्ड डेटाबेस की कल्पना करें। मान लीजिए कि इसमें 30,000 प्रविष्टियाँ हैं, जिनमें से 500 में पासवर्ड ब्लूस्क्रीन है । आगे मान लीजिए कि एक हैकर इस पासवर्ड को प्राप्त करने का प्रबंधन करता है, इसे उपयोगकर्ता से आईटी विभाग में ईमेल में पढ़कर कहें। यदि पासवर्ड अनसाल्टेड हैं, हैकर डेटाबेस में हैशेड वैल्यू पा सकता है, तो अन्य 499 खातों तक पहुंच प्राप्त करने के लिए इसे केवल पैटर्न-मैच करें।

पासवर्डों को नमन करना सुनिश्चित करता है कि 500 ​​खातों में से प्रत्येक में एक अद्वितीय (नमक + पासवर्ड) है, जिससे उनमें से प्रत्येक के लिए एक अलग हैश उत्पन्न होता है, और इस तरह एक खाते में उल्लंघन को कम किया जाता है। और चलो आशा करते हैं, सभी संभावना के खिलाफ, कि किसी भी उपयोगकर्ता को ईमेल संदेश में एक सादा पासवर्ड लिखने के लिए पर्याप्त अनुभव होता है, अगले ओएस के लिए अनिर्दिष्ट एपीआई तक पहुंच नहीं है।


दो उपयोगकर्ताओं के लिए समान है जो एक अलग पासवर्ड चुनते हैं, और यह संभावना है कि उनके पास एक ही हैशेड पासवर्ड है जो db में संग्रहीत है। (बेकार ... मुझे पता है)
चींटी

15

मैं नमक लगाने के लिए एक अच्छी विधि की खोज कर रहा था और इस उत्कृष्ट लेख को नमूना कोड के साथ पाया:

http://crackstation.net/hashing-security.htm

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

पासवर्ड स्टोर करने के लिए:

  • CSPRNG का उपयोग करके एक लंबा यादृच्छिक नमक बनाएं।
  • पासवर्ड के लिए नमक को रोकें और इसे SHA256 जैसे मानक क्रिप्टोग्राफिक हैश फ़ंक्शन के साथ हैश करें।
  • उपयोगकर्ता के डेटाबेस रिकॉर्ड में नमक और हैश दोनों को बचाएं।

पासवर्ड मान्य करने के लिए:

  • डेटाबेस से उपयोगकर्ता का नमक और हैश प्राप्त करें।
  • दिए गए पासवर्ड के लिए नमक को रोकें और उसी हैश फ़ंक्शन का उपयोग करके हैश करें।
  • डेटाबेस से हैश के साथ दिए गए पासवर्ड के हैश की तुलना करें। यदि वे मेल खाते हैं, तो पासवर्ड सही है। अन्यथा, पासवर्ड गलत है।

3
Hashcat एक पीसी का उपयोग करके लगभग 17 बिलियन प्रति सेकंड SHA256 हैश की कोशिश कर सकता है। लिंक किए गए लेख के लेखक "मेकिंग पासवर्ड क्रैकिंग हार्डर: स्लो हैश फंक्शंस" शीर्षक के तहत इस बारे में बात करते हैं। scrypt, bcrypt और PBKDF2 अच्छे विकल्प हैं और सर्वर IMHO पर अतिरिक्त सीपीयू चक्रों की तुलना में अधिक हैं। आर्गन 2 वर्तमान में कला की स्थिति है, लेकिन अन्य की तरह युद्ध-परीक्षण नहीं।
kgriffs

12

नमक एक इंद्रधनुष-टेबल हमले को विफल कर सकता है क्योंकि नमक के एन-बिट्स के लिए, इंद्रधनुष तालिका को नमक के बिना तालिका आकार से 2 ^ n गुना बड़ा होना चाहिए।

नमक के रूप में 'फू' का उपयोग करने का आपका उदाहरण इंद्रधनुष-तालिका को 16 मिलियन गुना बड़ा बना सकता है।

कार्ल के 128-बिट नमक के उदाहरण को देखते हुए, यह तालिका 2 ^ 128 गुना बड़ा बनाता है - अब यह बड़ा है - या कोई अन्य तरीका है, इससे पहले कि किसी के पास पोर्टेबल भंडारण कितना बड़ा है?


8
यहां तक ​​कि अगर आप किसी एकल इलेक्ट्रॉन का उपयोग थोड़ा स्टोर करने के लिए करते हैं, तो यह काफी समय पहले होगा जब कोई भी उस क्षमता के साथ पोर्टेबल भंडारण का उत्पादन करता है ... जब तक कि आप सौर प्रणाली को आकाशगंगा पोर्टेबल के माध्यम से आगे बढ़ने पर विचार नहीं करते।
इरिकसन

10

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

इस तरह के हमले उस मामले में अप्रभावी होते हैं जहां पासवर्ड में कई और चरित्र होते हैं और आम शब्द आधारित स्वरूपों के अनुरूप नहीं होते हैं। एक मजबूत पासवर्ड के साथ शुरू करने वाला उपयोगकर्ता हमले की इस शैली के प्रति संवेदनशील नहीं होगा। दुर्भाग्य से, बहुत से लोग अच्छे पासवर्ड नहीं चुनते हैं। लेकिन एक समझौता है, आप इसमें यादृच्छिक रद्दी जोड़कर उपयोगकर्ता के पासवर्ड को बेहतर बना सकते हैं। इसलिए अब, "hunter2" के बजाय उनका पासवर्ड प्रभावी रूप से "hunter2908" बन सकता है! Fld2R75 {R7 /! 508PEzoz ^ U430 ", जो कि अधिक मजबूत पासवर्ड है। हालाँकि, क्योंकि अब आपको इस अतिरिक्त पासवर्ड घटक को संग्रहीत करना होगा, जो कि मजबूत समग्र पासवर्ड की प्रभावशीलता को कम करता है। जैसा कि यह पता चला है, अभी भी ऐसी योजना का शुद्ध लाभ है क्योंकि अब तक प्रत्येक पासवर्ड, यहां तक ​​कि कमजोर लोगों को भी, अब पूर्व-संकलित हैश / इंद्रधनुष तालिका के लिए असुरक्षित नहीं हैं। इसके बजाय, प्रत्येक पासवर्ड हैश प्रविष्टि केवल एक अद्वितीय हैश तालिका के लिए असुरक्षित है।

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

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

जो ठीक स्थिति में है। आप कभी भी उपयोगकर्ताओं को खराब पासवर्ड पसंद से पूरी तरह से सुरक्षित नहीं रख सकते हैं, लेकिन आप अपने उपयोगकर्ताओं के पासवर्ड से छेड़छाड़ करने की लागत को एक स्तर तक बढ़ा सकते हैं जो एक उपयोगकर्ता के पासवर्ड को बेहद महंगा बना देता है।


3

नमस्कार करने का एक उद्देश्य पूर्व-निर्मित हैश तालिकाओं को पराजित करना है। यदि किसी के पास लाखों पूर्व-संकलित हैश की सूची है, तो वे अपनी मेज में $ 1 $ $ $ $ 55SBM.7C25fFu6bIRbX1 देखने में सक्षम नहीं होने जा रहे हैं, भले ही वे हैश और नमक जानते हों। वे अभी भी इसे बल देना होगा।

कार्ल एस उल्लेख के रूप में एक अन्य उद्देश्य, ब्रूट को हैश की सूची को अधिक महंगा बनाना है। (उन्हें सभी अलग-अलग लवण दें)

ये दोनों उद्देश्य अभी भी पूरे हैं भले ही नमक सार्वजनिक हो।


1

जहाँ तक मुझे पता है, नमक शब्दकोश के हमलों को कठिन बनाने का इरादा है।

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

इसलिए, एक हैकर सिर्फ ब्रूट बल का उपयोग करने के बजाय अपने लाभ के लिए इसका उपयोग कर सकता है। वह आआआ, आब, एएसी ... जैसे पासवर्ड की तलाश नहीं करेगा, बल्कि शब्दों और सामान्य पासवर्ड (जैसे रिंग्स नामों के स्वामी!) का उपयोग करें।

तो अगर मेरा पासवर्ड लेगोलस हैकर एक कोशिश कर सकता है और यह अनुमान लगा सकता है कि "कुछ" कोशिश करता है। हालांकि अगर हम पासवर्ड को नमक करते हैं और यह fooLegolas हैश अलग हो जाएगा, तो शब्दकोश हमले असफल होंगे।

उम्मीद है की वो मदद करदे!


-2

मुझे लगता है कि आप PHP --- md5 () फ़ंक्शन और $ पूर्ववर्ती चर का उपयोग कर रहे हैं --- फिर, आप इस लेख को देखने की कोशिश कर सकते हैं शैडो पासवर्ड HOWTO विशेष रूप से 11 वें पैराग्राफ।

इसके अलावा, आप संदेश डाइजेस्ट एल्गोरिदम का उपयोग करने से डरते हैं, आप वास्तविक सिफर एल्गोरिदम की कोशिश कर सकते हैं, जैसे कि mcrypt मॉड्यूल द्वारा प्रदान किए गए , या अधिक मजबूत संदेश डाइजेस्ट एल्गोरिदम, जैसे कि mhash मॉड्यूल प्रदान करते हैं (sha1, sha256 , और) अन्य)।

मुझे लगता है कि मजबूत संदेश डाइजेस्ट एल्गोरिथ्म एक जरूरी है। यह ज्ञात है कि एमडी 5 और एसएचए 1 को टक्कर की समस्या है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.