दिलचस्प पोस्ट
ब्राउज़र का आकार बदलना (उत्तरदायी) पर Google मानचित्र (V3) केंद्र फेसबुक एंड्रॉइड एसडीके के लिए की हैश Arc4random मॉड्यूलो पक्षपाती मॉलोक () और मॉलोकैंकोलिकेट () में सेगफाल्ट्स जावा में फ़ोकस किए बिना इनपुट के लिए सुनना अजगर में एक सूची को बदलने के लिए कुशल तरीके से jqGrid Reposition पुष्टिकरण बॉक्स को हटा दें स्विफ्ट में, सरणी टुकड़ा करने की क्रिया वापसी प्रकार ऐसा नहीं लगता Google मानचित्र एपीआई वी 3 में कैसे लैट लाँगटॉडीपिक्सेल से कॉल करें? एक HTML तालिका में कॉलम छिपाएं / दिखाएं मुझे कैसे मिलता है – काम करने के लिए? MongoDB संग्रहीत प्रक्रिया समतुल्य मैं संख्याओं को वैज्ञानिक संकेतन में कैसे परिवर्तित कर सकता हूं? इसका क्या अर्थ है: विफलता ? क्या सिस्टम के लिए एक टास्क आधारित प्रतिस्थापन है। थ्रेडिंग। टिमर?

आप अपने नमक तारों को स्टोर करते हैं?

मैंने हमेशा एक उचित प्रति प्रविष्टि नमक स्ट्रिंग का उपयोग किया है, जब डेटाबेस संग्रहण के लिए हैशिंग पासवर्ड। हैड्सड पासवर्ड के पास डीबी में नमक को संचय करने की मेरी ज़रूरतों के लिए, हमेशा ठीक काम किया है।

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

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

क्या इस पर कोई अनुशंसित समाधान है?

Solutions Collecting From Web of "आप अपने नमक तारों को स्टोर करते हैं?"

इंद्रधनुष तालिकाओं का मुद्दा यह है कि उन्हें अग्रिम में बनाया गया है और दूसरों के लिए गणना के समय को बचाने के लिए सामूहिक रूप से वितरित किया जाता है – यह मक्खी पर इंद्रधनुष तालिकाओं को उत्पन्न करने के लिए बहुत समय लगता है क्योंकि यह सिर्फ पासवर्ड + नमक संयोजन सीधे (क्योंकि इंद्रधनुष तालिकाओं का निर्माण करते समय क्या किया जा रहा है, यह प्रभावी ढंग से किया जा रहा है), इस प्रकार तर्क है कि नमक को जानने से "इंद्रधनुष तालिका उत्पन्न हो सकती है" नकली है।

नमक को अलग-अलग फाइल में संग्रहीत करने का कोई वास्तविक मुद्दा नहीं है, जब तक वे प्रति-उपयोगकर्ता आधार पर होते हैं – नमक का मतलब सिर्फ इतना है कि एक इंद्रधनुष तालिका डीबी में हर पासवर्ड नहीं तोड़ सकती।

मैं इस पर थोड़ा अलग ले जाएगा।

मैं हमेशा नमक-पासवर्ड हैश के साथ नमक मिश्रित करता हूं।

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

इस दृष्टिकोण के लिए मेरा तर्क:

अगर पासवर्ड / हैश डेटा से समझौता किया जाता है और हमलावर के हाथों में पड़ जाता है, तो हमलावर को यह नहीं पता होगा कि नमक डेटा को कैसे देख रहा है। इस तरह एक हमलावर व्यावहारिक रूप से एक हथियार से मेल खाता पासवर्ड प्राप्त करने के लिए एक जानवर-बल के हमले का प्रदर्शन नहीं कर सकता, क्योंकि वह हैश को शुरू करने से नहीं जानता है और यह जानने का कोई तरीका नहीं है कि डेटा के कौन से हिस्से नमक के हिस्से हैं, या नमक-पासवर्ड हैश के कुछ हिस्सों ( जब तक कि वह आपके एप्लिकेशन के प्रमाणीकरण तर्क को नहीं जानता )।

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

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

इस निष्कर्ष ..

1) उस डेटा को कभी भी संग्रहीत न करें जो आपके प्रमाणीकरण एप्लिकेशन का सटीक रूप में उपयोग करता है।

2) यदि संभव हो, तो अतिरिक्त सुरक्षा के लिए अपना प्रमाणीकरण तर्क रहस्य रखें।

एक कदम आगे जाओ ..

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

यादृच्छिक नमक उत्पन्न करते समय, आप यह भी बेतरतीब ढंग से तय कर सकते हैं कि नमक-पासवर्ड हैश के बाद / इससे पहले आप अपने नमक का क्या अनुपात रखेंगे

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

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

इस दृष्टिकोण के पेशेवर:

सुरक्षा में वृद्धि – भले ही आपका प्रमाणीकरण तर्क ज्ञात हो, सटीक तर्क संकलन समय पर अज्ञात है। सटीक तर्क के ज्ञान के साथ-साथ, यह एक जानवर-बल के हमले को करना असंभव है। नमक की बढ़ती लंबाई सुरक्षा में वृद्धि होगी

इस दृष्टिकोण का विचार:

चूंकि सटीक तर्क रन-टाइम पर अनुमानित है, इसलिए यह दृष्टिकोण बहुत सीपीयू-गहन है। अब नमक की लंबाई, अधिक सीपीयू-गहन इस दृष्टिकोण बन जाता है।

गलत पासवर्ड को प्रमाणीकृत करने में उच्चतम CPU लागत शामिल होगी। यह वैध अनुरोधों के मुकाबले उत्पादक हो सकता है, लेकिन हमलावरों के प्रति सुरक्षा बढ़ जाती है।

यह दृष्टिकोण विभिन्न तरीकों से लागू किया जा सकता है, और वे चर-चौड़ा लवण और / या नमकीन-पासवर्ड हैश का उपयोग करके और भी अधिक सुरक्षित बनाया जा सकता है।

अक्सर, वे हैश के लिए तैयार हैं और उसी क्षेत्र में संग्रहीत हैं

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

यदि आपके पास एक अधिक सुरक्षित भंडारण स्थान था, तो वहां केवल वहां हैशों को स्टोर करने का मतलब होगा।

एएसपी.नेट एमवीसी 4 वेब एप्लीकेशन डेवलपिंग के आधार पर विलियम पेनबेर्थी द्वारा बुक किया गया:

  1. एक अलग डेटाबेस में संग्रहित लवण तक पहुंच प्राप्त करने के लिए हैकर्स को नमक और नमकीन पासवर्ड तक पहुंचने के लिए दो अलग-अलग डेटाबेस हैक करने की ज़रूरत है पासवर्ड, या एक ही डेटाबेस की एक और मेज के रूप में उन्हें एक ही तालिका में संग्रहीत करने का मतलब यह होगा कि जब हैकर्स डेटाबेस तक पहुंच प्राप्त करेंगे, तो उनके पास नमक और पासवर्ड हैश दोनों तक पहुंच होगी। क्योंकि सुरक्षा में सिस्टम में हैकिंग बनाने की प्रक्रिया बहुत महंगी या समय-उपभोक्ता होने की प्रक्रिया भी शामिल है, एक हैकर तक पहुंचने की मात्रा दोहरीकरण से सिस्टम को अधिक सुरक्षित बनाना चाहिए।
  2. प्रयोग में आसानी हैशर्ड पासवर्ड के रूप में एक ही डेटाबेस में नमक रखने के लिए प्राथमिक कारण है। आपको यह सुनिश्चित करने की आवश्यकता नहीं होगी कि दो डेटाबेस हमेशा एक ही समय में उपलब्ध रहें, और हमेशा सिंक में। नमक रखने का लाभ कम होता है, यदि प्रत्येक उपयोगकर्ता को यादृच्छिक नमक होता है, हालांकि यद्यपि यह किसी व्यक्ति के पासवर्ड की खोज करना आसान हो जाता है, सिस्टम की पासवर्ड को दरकिनार करने के लिए जरूरी बल की मात्रा अधिक होगी। चर्चा के इस स्तर में, यह वास्तव में क्या उम्मीद है: पासवर्ड की सुरक्षा के लिए अगर हैकर्स ने डेटाबेस की एक प्रति प्राप्त कर ली है, तो आपका एप्लिकेशन डेटा पहले से समझौता कर रहा है। इस बिंदु पर, यह मुद्दा उपयोगकर्ताओं के जोखिम को कम करना है क्योंकि साझा पासवर्ड की संभावना है।
  3. दो अलग-अलग जुड़े, डाटाबेस बनाए रखने की आवश्यकता व्यापक है। यह सच है, यह सुरक्षा की धारणा को जोड़ता है, लेकिन इसका एकमात्र फायदा यह है कि वह पासवर्ड की रक्षा करता है, डेटा का एक तत्व। यदि डेटाबेस में प्रत्येक क्षेत्र अलग-अलग एन्क्रिप्ट किया जाता है, और इसके लिए यह एक ही नमक इस्तेमाल किया गया था, तो यह डेटा से अलग से स्टोर करने के लिए अधिक समझदारी पैदा करेगा क्योंकि आपके सिस्टम की बुनियादी सुरक्षा को बढ़ाया गया है।