मुझे एक चर्चा मिली, जिसमें मुझे पता चला कि मैं जो कर रहा था वह वास्तव में पासवर्ड को नमस्कार नहीं कर रहा था, लेकिन उन्हें लागू कर रहा था, और मैंने तब से दोनों को एक समारोह के साथ करना शुरू कर दिया है:
hash_function($salt.hash_function($pepper.$password)) [multiple iterations]
चुने गए हैश एल्गोरिथ्म को अनदेखा करना (मैं चाहता हूं कि यह लवण और मिर्च की चर्चा हो और विशिष्ट एल्गोरिदम नहीं, लेकिन मैं एक सुरक्षित उपयोग कर रहा हूं), क्या यह एक सुरक्षित विकल्प है या मुझे कुछ अलग करना चाहिए? शर्तों से अपरिचित लोगों के लिए:
एक नमक एक बेतरतीब ढंग से उत्पन्न मूल्य है जिसे आमतौर पर डेटाबेस में स्ट्रिंग के साथ संग्रहीत किया जाता है ताकि पासवर्ड को क्रैक करने के लिए हैश टेबल का उपयोग करना असंभव हो। जैसा कि प्रत्येक पासवर्ड का अपना नमक होता है, उन्हें क्रैक करने के लिए सभी को व्यक्तिगत रूप से क्रूर होना चाहिए; हालाँकि, जैसा कि नमक को पासवर्ड हैश के साथ डेटाबेस में संग्रहीत किया जाता है, डेटाबेस समझौता का मतलब दोनों को खोना है।
एक काली मिर्च एक साइट चौड़ा स्थिर डेटाबेस (आमतौर पर आवेदन के स्रोत कोड में हार्ड-कोडेड) जो गुप्त में किया जाता है से अलग से संग्रहीत मूल्य है। इसका उपयोग इसलिए किया जाता है ताकि डेटाबेस का एक समझौता पूरे एप्लिकेशन की पासवर्ड तालिका को ब्रूट-फॉरसेबल न बना दे।
क्या ऐसा कुछ है जो मुझे याद आ रहा है और मेरे उपयोगकर्ता की सुरक्षा की रक्षा करने के लिए मेरे पासवर्ड को सबसे अच्छा विकल्प नमस्कार और पेप्परिंग कर रहा है? क्या इस तरह से करने के लिए कोई संभावित सुरक्षा दोष है?
नोट: चर्चा के उद्देश्य के लिए मान लें कि एप्लिकेशन और डेटाबेस अलग-अलग मशीनों पर संग्रहीत हैं, पासवर्ड आदि साझा न करें, इसलिए डेटाबेस सर्वर का उल्लंघन स्वचालित रूप से एप्लिकेशन सर्वर का उल्लंघन नहीं करता है।