सबसे पहले, कुछ शब्द जो महत्वपूर्ण हैं:
हैशिंग - एक स्ट्रिंग लेने और पात्रों के अनुक्रम का निर्माण करने का कार्य जो मूल स्ट्रिंग में वापस नहीं लाया जा सकता है।
सममित एन्क्रिप्शन - (आमतौर पर केवल 'एन्क्रिप्शन' के रूप में जाना जाता है) - एक स्ट्रिंग लेने और पात्रों के अनुक्रम का निर्माण करने के लिए जिसे उसी एन्क्रिप्शन कुंजी के उपयोग के माध्यम से मूल स्ट्रिंग में डिक्रिप्ट किया जा सकता है जिसने इसे एन्क्रिप्ट किया था।
रेनबो टेबल - एक लुकअप टेबल जिसमें एक विशिष्ट हैशिंग एल्गोरिथ्म में हैशेड के सभी प्रकार होते हैं।
नमक - एक ज्ञात यादृच्छिक स्ट्रिंग हैशेड से पहले मूल स्ट्रिंग में जोड़ा जाता है।
.NET फ्रेमवर्क के लिए, Bcrypt के पास अभी तक एक सत्यापित संदर्भ कार्यान्वयन नहीं है। यह महत्वपूर्ण है क्योंकि यह जानने का कोई तरीका नहीं है कि मौजूदा कार्यान्वयन में गंभीर खामियां हैं या नहीं। आप यहां .NET के लिए BCrypt का कार्यान्वयन प्राप्त कर सकते हैं । मुझे क्रिप्टोग्राफी के बारे में यह जानने के लिए पर्याप्त नहीं है कि यह एक अच्छा या बुरा कार्यान्वयन है। क्रिप्टोग्राफी एक बहुत गहरा क्षेत्र है। अपने स्वयं के एन्क्रिप्शन एल्गोरिथ्म के निर्माण का प्रयास न करें । गंभीरता से।
यदि आप अपनी स्वयं की पासवर्ड सुरक्षा (आह) को लागू करने जा रहे हैं, तो आपको कई काम करने होंगे:
- अपेक्षाकृत सुरक्षित हैश एल्गोरिथ्म का उपयोग करें ।
- हैशेड से पहले प्रत्येक पासवर्ड को नमक करें।
- प्रत्येक पासवर्ड के लिए एक अद्वितीय और लंबे नमक का उपयोग करें , और पासवर्ड के साथ नमक को स्टोर करें।
- मजबूत पासवर्ड की आवश्यकता है ।
दुर्भाग्य से, यदि आप यह सब करते हैं, तो भी एक निर्धारित हैकर अभी भी संभावित रूप से पासवर्ड का पता लगा सकता है, तो यह उसे वास्तव में लंबे समय तक ले जाएगा। वह आपका मुख्य शत्रु है: समय ।
Bcrypt एल्गोरिथ्म काम करता है क्योंकि यह लेता है पाँच आदेश परिमाण के लंबे समय तक हैश को MD5 की तुलना में एक पासवर्ड ; (और अभी भी एईएस या SHA-512 की तुलना में अधिक)। यह हैकर को आपके पासवर्ड को देखने के लिए इंद्रधनुष तालिका बनाने के लिए बहुत अधिक समय बिताने के लिए मजबूर करता है, जिससे यह संभावना कम हो जाती है कि आपका पासवर्ड हैक होने के खतरे में होगा।
यदि आप अपने पासवर्ड को नमस्कार कर रहे हैं, और प्रत्येक नमक अलग है, तो एक संभावित हैकर को नमक के प्रत्येक भिन्नता के लिए एक इंद्रधनुष तालिका बनानी होगी , बस एक नमकीन + हैशेड पासवर्ड के लिए एक इंद्रधनुष तालिका होनी चाहिए। इसका मतलब है कि यदि आपके 1 मिलियन उपयोगकर्ता हैं, तो एक हैकर को 1 मिलियन इंद्रधनुष सारणी तैयार करनी होगी। यदि आप प्रत्येक उपयोगकर्ता के लिए समान नमक का उपयोग कर रहे हैं, तो हैकर को आपके सिस्टम को सफलतापूर्वक हैक करने के लिए केवल 1 इंद्रधनुष तालिका उत्पन्न करनी होगी।
यदि आप अपने पासवर्ड को सलामी नहीं दे रहे हैं, तो सभी हमलावरों को वहाँ (एईएस, एसएचए -51, एमडी 5) को लागू करने के लिए एक मौजूदा इंद्रधनुष तालिका को खींचना होगा और यह देखना होगा कि क्या कोई हैश से मेल खाता है। यह पहले से ही किया गया है , एक हमलावर को इन इंद्रधनुष तालिकाओं की गणना करने की आवश्यकता नहीं है ।
इन सबके साथ भी, आपको अच्छी सुरक्षा प्रथाओं का उपयोग करना चाहिए । यदि वे सफलतापूर्वक आपकी साइट पर एक और हमला वेक्टर (एक्सएसएस, एसक्यूएल इंजेक्शन, सीएसआरएफ, एट अल। ) का उपयोग कर सकते हैं, तो पासवर्ड की अच्छी सुरक्षा सुनिश्चित करें। यह एक विवादास्पद बयान की तरह लगता है, लेकिन इसके बारे में सोचें: यदि मैं आपकी सभी उपयोगकर्ता जानकारी SQL इंजेक्शन हमले के माध्यम से प्राप्त कर सकता हूं, या मैं आपके उपयोगकर्ताओं को XSS के माध्यम से अपनी कुकीज़ देने के लिए प्राप्त कर सकता हूं, तो इससे कोई फर्क नहीं पड़ता कि आपका पासवर्ड कितना अच्छा है सुरक्षा है ।
अन्य संसाधन:
- जेफ एटवुड: .NET एन्क्रिप्शन सरलीकृत (हैशिंग के अवलोकन के लिए महान)
- जेफ एटवुड: मैंने अभी आपके रूप में लॉग इन किया है
- जेफ एटवुड: आप शायद गलत तरीके से पासवर्ड स्टोर कर रहे हैं
- जेफ एटवुड: स्पीड हैशिंग
नोट: कृपया अन्य अच्छे संसाधनों की सिफारिश करें। मैंने दर्जनों लेखकों द्वारा एक दर्जन लेख पढ़े होंगे, लेकिन कुछ इस विषय पर स्पष्ट रूप से लिखते हैं जैसा कि जेफ करता है। कृपया लेखों में संपादित करें क्योंकि आप उन्हें ढूंढते हैं।