encryption उपयोगकर्ता पासवर्ड नमक के लिए इष्टतम लंबाई क्या है?




hash salt (4)

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


संपादित करें: मेरा नीचे उत्तर पूछे गए प्रश्न का उत्तर देता है, लेकिन "वास्तविक" उत्तर है: बस bcrypt , scrypt , या Argon2 । यदि आप इस तरह के प्रश्न पूछ रहे हैं, तो आप निश्चित रूप से बहुत कम स्तर पर औजारों का उपयोग कर रहे हैं।

ईमानदारी से, कोई बचाव योग्य कारण नहीं है कि नमक को धोने वाले पासवर्ड के समान सटीक लंबाई न हो। यदि आप SHA-256 का उपयोग कर रहे हैं, तो आपके पास 256-बिट हैश है। 256-बिट नमक का उपयोग न करने का कोई कारण नहीं है।

256 से अधिक बिट्स आपको गणितीय रूप से सुरक्षा में कोई सुधार नहीं करेंगे। लेकिन एक छोटे से नमक के साथ जाने से हमेशा ऐसी परिस्थिति खत्म हो सकती है जहां इंद्रधनुष की मेज आपकी नमक की लंबाई तक पहुंच जाती है - खासकर छोटे लवण के साथ।


हैशिंग पासवर्ड के लिए वर्तमान में स्वीकार किए गए मानक प्रत्येक पासवर्ड के लिए एक नया 16 वर्ण लंबा नमक बनाते हैं और नमक को पासवर्ड हैश के साथ स्टोर करते हैं।

वास्तव में यादृच्छिक नमक बनाने के लिए उचित क्रिप्टोग्राफिक देखभाल की जानी चाहिए।


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

नमक केवल इतना लंबा होना चाहिए ताकि प्रत्येक उपयोगकर्ता का नमक अद्वितीय हो। यादृच्छिक 64-बिट लवण एक बिलियन पंजीकृत उपयोगकर्ताओं के साथ भी दोहराने की संभावना नहीं है, इसलिए यह ठीक होना चाहिए। एक बार दोहराया नमक अपेक्षाकृत मामूली सुरक्षा चिंता है, यह एक हमलावर को एक बार में दो खातों की खोज करने की अनुमति देता है लेकिन कुल मिलाकर पूरे डेटाबेस पर खोज को तेज नहीं करेगा। यहां तक ​​कि 32-बिट लवण भी अधिकांश उद्देश्यों के लिए स्वीकार्य हैं, यह सबसे बुरी स्थिति में हमलावर की खोज लगभग 58% की गति होगी। 64 बिट्स से अधिक बढ़ते लवण की लागत अधिक नहीं है लेकिन ऐसा करने के लिए कोई सुरक्षा कारण नहीं है।

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

यहां तक ​​कि सरल और डेवलपर्स हमेशा इसे अनदेखा करते हैं- यदि आपके पास अद्वितीय उपयोगकर्ता आईडी या लॉगिन नाम हैं, तो वे नमक के रूप में पूरी तरह से ठीक काम करते हैं। यदि आप ऐसा करते हैं, तो आपको यह सुनिश्चित करने के लिए एक साइट-व्यापी नमक जोड़ना चाहिए कि आप किसी अन्य सिस्टम के उपयोगकर्ताओं के साथ ओवरलैप न करें, जो एक ही उज्ज्वल विचार था।


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

उदाहरण के लिए यदि आप SHA-512 का उपयोग करने के लिए 256 बिट नमक का उपयोग करने जा रहे हैं, इसलिए SHA-512 द्वारा प्रदान की गई सुरक्षा 256 बिट है।





salt