इष्टतम bcrypt कार्य कारक



(1)

याद रखें कि मान पासवर्ड में संग्रहीत है: $2a$(2 chars work)$(22 chars salt)(31 chars hash) । यह एक निश्चित मूल्य नहीं है।

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

यह चाल मूर के कानून के साथ-साथ भविष्य में लगभग हमेशा के लिए समान समय लेना है। संख्या लॉग 2 है, इसलिए प्रत्येक बार जब कंप्यूटर गति में दोगुना हो जाता है, तो डिफ़ॉल्ट संख्या में 1 जोड़ें।

तय करें कि आप उपयोगकर्ता के पासवर्ड को ब्रूट फोर्स को कितना समय लेना चाहते हैं। उदाहरण के लिए, कुछ सामान्य शब्दकोश शब्द के लिए, आपके खाता निर्माण ने शायद ही उन्हें चेतावनी दी है कि उनका पासवर्ड कमजोर था। यदि यह 1000 सामान्य शब्दों में से एक है, तो कहें, और प्रत्येक का परीक्षण करने के लिए हमलावर 0.1s लेता है, जो उन्हें 100s खरीदता है (ठीक है, कुछ शब्द अधिक आम हैं ...)। यदि किसी उपयोगकर्ता ने 'सामान्य शब्द शब्द' + 2 संख्याओं को चुना है, तो यह दो घंटे से अधिक है। यदि आपके पासवर्ड डेटाबेस से समझौता किया गया है, और हमलावर केवल दिन में कुछ सौ पासवर्ड प्राप्त कर सकता है, तो आपने अपने अधिकांश उपयोगकर्ताओं को अपने पासवर्ड को सुरक्षित रूप से बदलने के लिए घंटे या दिन खरीदे हैं। यह उन्हें समय खरीदने का मामला है।

http://www.postgresql.org/docs/8.3/static/pgcrypto.html पर विचार करने के लिए पासवर्ड क्रैक करने के लिए कुछ बार है। बेशक, उनके द्वारा सूचीबद्ध पासवर्ड यादृच्छिक पत्र हैं। शब्दकोश शब्द ... व्यावहारिक रूप से आप उस व्यक्ति को सहेज नहीं सकते जिसकी पासवर्ड 12345 है।

पासवर्ड हैशिंग के लिए एक आदर्श bcrypt कार्य कारक क्या होगा।

अगर मैं 10 के कारक का उपयोग करता हूं, तो मेरे लैपटॉप पर हैश पासवर्ड के लिए लगभग 1s लगता है। यदि हम एक बहुत ही व्यस्त साइट के साथ समाप्त होते हैं, तो यह लोगों के पासवर्ड की जांच करने के लिए काम का एक अच्छा सौदा बन जाता है।

शायद 7 के वर्क फैक्टर का उपयोग करना बेहतर होगा, कुल पासवर्ड हैश काम को .01s प्रति लैपटॉप-लॉगिन में कम करना होगा?

आप ब्रूट फोर्स सुरक्षा और परिचालन लागत के बीच व्यापार का निर्णय कैसे लेते हैं?