encryption वेब एप पासवर्ड: बीक्रिप्ट और SHA256(और स्क्रीप्ट)




passwords hash (2)

हाल ही में सभी (जैसे लिंक्डइन) पासवर्डों की चर्चाओं के साथ मैं पासवर्ड हैशिंग लागूकरण देख रहा हूं। कॉफी के दो कप और सुबह पढ़ने के बाद मैं एक क्रिप्टोग्राफर नहीं हूँ जब मैंने शुरू किया था। और मैं वास्तव में बहाना नहीं चाहता कि मैं हूं।

विशिष्ट प्रश्न

  1. क्या एक पूर्णांक अद्वितीय यूजर आईडी का प्रयोग एक प्रभावी नमक के रूप में विफल हो जाता है? (क्रिप्ट () केवल 16 बिट्स का उपयोग करता है?)

  2. यदि मैं बस एक हैश पर sha256 () को चलाने के लिए और एक दूसरा उपयोग किया जाता है, तो क्या यह जंगम बल के हमलों को नुकसान पहुँचाता है?

  3. अगर मुझे ये सवाल पूछना है तो मुझे बीक्रीप का इस्तेमाल करना चाहिए?

चर्चा / स्पष्टीकरण:

लक्ष्य केवल अगर मेरे उपयोगकर्ता के हैश किए गए पासवर्ड लीक होते हैं:

  1. दरार करने के लिए "आसान" नहीं होगा,
  2. एक पासवर्ड को क्रैकिंग करने वाले अन्य प्रयोक्ता को एक ही पासवर्ड का उपयोग न करें)

मैंने # 1 के लिए जो पढ़ा है वह हैश गणना को महंगा होना चाहिए - लेना, कहते हैं, एक दूसरे या दो की गणना करने के लिए और शायद थोड़ा या स्मृति (हार्डवेयर डिक्रिप्शन को विफल करने के लिए) की आवश्यकता होती है

bcrypt में बनाया है, और scrypt, अगर मैं सही ढंग से समझता हूँ, भविष्य भविष्य के सबूत है और एक न्यूनतम स्मृति उपयोग की आवश्यकता भी शामिल है

लेकिन, क्या यह शाश 256 के परिणाम को "पुनः आकार देने" द्वारा कुछ समय तक उपयोग करने के लिए कई बार उपयोग करने के लिए एक समान रूप से प्रभावी तरीका है और फिर अंतिम लूप गिनती को हैश के साथ बाद में एक प्रदान किए गए पासवर्ड की जांच करने के लिए संग्रहीत करता है?

# 2 के लिए, प्रत्येक पासवर्ड के लिए एक अद्वितीय नमक का उपयोग करना महत्वपूर्ण है। क्या साफ नहीं किया गया है कि कैसे यादृच्छिक (या बड़े) नमक होना चाहिए यदि लक्ष्य हर किसी से बचने के लिए है जो कि "mypassword" का उपयोग उसी पासवर्ड के रूप में अपने पासवर्ड के रूप में करता है, ऐसा करने के लिए पर्याप्त नहीं है ?:

hash = sha256_hex( unique_user_id + user_supplied_password );

या यह भी, हालांकि मुझे यकीन नहीं है कि यह मुझे कुछ भी खरीदता है:

hash = sha256_hex( sha256( unique_user_id ) + user_supplied_password );

केवल यूजर आईडी का उपयोग करने से मैं देख सकता हूं कि एकमात्र लाभ है, इसके अलावा मुझे पता है कि यह अनोखा है, नमक को हैश के साथ सहेजने से बच रहा है। एक लाभ का अधिक नहीं है नमक के रूप में उपयोगकर्ता की आईडी का उपयोग करने में कोई वास्तविक समस्या है? क्या यह # 2 पूरा नहीं करता है?

मुझे लगता है कि अगर कोई मेरे उपयोगकर्ता के हैश किए गए पासवर्ड को चोरी कर सकता है तो मुझे लगता है कि वह जो चाहें प्राप्त कर सकते हैं - जिसमें सोशल कोड हैश उत्पन्न करता है तो, हैशिंग से पहले पासवर्ड के लिए अतिरिक्त यादृच्छिक स्ट्रिंग (एक ही स्ट्रिंग) जोड़ने का कोई लाभ है? अर्थात्:

# app_wide_string = one-time generated, random 64 7-bit *character* string.
hash = sha256_hex( unique_user_id + app_wide_string + user_supplied_password );

मैंने देखा है कि सुझाव दिया है, लेकिन मुझे समझ में नहीं आ रहा है कि प्रति-उपयोगकर्ता नमक के ऊपर से मुझे क्या लाभ मिलता है यदि कोई क्रूरता से हमला करना चाहता है तो उन्हें पता होगा कि "app_wide_string" और इसका इस्तेमाल करते समय अपने शब्दकोश हमले चलाते हैं, है ना?

क्या ऊपर वर्णित के रूप में अपने खुद के रोलिंग पर bcrypt का उपयोग करने के लिए एक अच्छा कारण है? शायद यह तथ्य कि मैं इन सवालों से पूछ रहा हूँ पर्याप्त कारण है?

बीटीडब्लू - मैंने अपने पास एक मौजूदा हैशिंग फ़ंक्शन का समय दिया है और मेरे लैपटॉप पर और मैं लगभग 7000 हैश उत्पन्न कर सकता हूं। काफी एक या दो सेकंड्स का सुझाव नहीं दिया जाता है।

कुछ संबंधित लिंक:

sha256 का प्रयोग करके उपयोगकर्ता आईडी के साथ हैशिंग और सैलिंग

SHA512 बनाम ब्लॉफ़िश और बीक्रिप्ट

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


बीक्रिप्ट महान है क्योंकि आप 4 से 31 तक काम करने वाले कारक को ट्यून कर सकते हैं, प्रत्येक वेतन वृद्धि एक आवश्यक समय बनाता है, मैंने इसे वास्तव में ग्रिफ़ किया है, 14 का एक काम का पहलू यह पहले से ही एक सेकंड पर ले रहा है, इसलिए कंप्यूटर तेजी से और तेज हो जाते हैं आपको केवल एक पैरामीटर बदलने की ज़रूरत है, और निश्चित रूप से अपना पासवर्ड अपडेट करें ...

Bcrypt के साथ मेरी मुख्य चिंता यह है कि अगर काम का पहलू ऊंचे स्तर पर है, तो यह आपके सिस्टम को अधिभार कर सकता है क्योंकि कई उपयोगकर्ता लॉग इन करने का प्रयास कर रहे हैं ताकि आपके पास समवर्ती लॉग इन और आपके सिस्टम के संसाधनों की संख्या के आधार पर आपके पास ट्यून हो। ..

नमक अभी भी आवश्यक हैं, इसका मुख्य उद्देश्य ऑफलाइन हमलों को विचलित करना है, यदि नमक स्थान बड़ा हो, तो प्रतिद्वंद्वी लुक अप तालिका उत्पन्न करने में सक्षम नहीं होगा, 64 बिट नमक थोड़ा कम लगता है, बीसीआरपीटी 128 काम के पहलुओं के साथ मिलकर थोड़ा सा नमक ऑफ़लाइन हमलों के लिए काफी चुनौती देता है ... और नमस्ते प्रत्येक पासवर्ड के लिए यादृच्छिक होना चाहिए, यदि आप प्रत्येक पासवर्ड के लिए एक ही नमक का उपयोग करते हैं, तो बीसीआरप्प्ट आपके लिए एक उत्पन्न करेगा, तो आपने इसे बनाया है एक ऑनलाइन हमले का उपयोग करते हुए सभी पासवर्डों को कसमिक करने के लिए विरोधी के लिए ईसियर

बीआरक्रिप्ट वास्तव में ऑनलाइन हमलों के लिए चमकता है, अगर आपने काम का पहलू ठीक से निर्धारित किया है, क्योंकि अगर मुझे हैश मिलता है, तो यह कहने का मतलब है कि 'विरोधी' को हॅश हो जाता है, काम का पहलू यह एक संपूर्ण शब्दकोश के माध्यम से जाने के लिए वास्तव में दर्दनाक बनाता है, कई दिन लेना और यदि शब्दकोष में कोई शब्द नहीं है, तो मैं वास्तव में मुसीबत में हूँ क्योंकि एक जानवर बल का दौरा महाकाव्य होगा, बीक्रीप्ट के लिए पासवर्ड बिट स्पेस काफी सीमित है हालांकि परिमित :)

Sha256 थोड़ा समय ले सकता है, लेकिन अंततः कंप्यूटर तेजी से और तेज हो जाएगा और यह हमलों के लिए काफी आसान होगा, यूनिक्स लोग सोचते हैं कि क्रिप्ट इतना धीमा था कि यह कभी भी एक मुद्दा नहीं होगा, और आज मैंने किया है सेकंड में ऑनलाइन हमले, दिनों में ऑफ़लाइन हमले, कुछ दिनों में एक क्रूर बल आक्रमण (पूरे पासवर्ड बिट स्पेस से गुजर रहा है) ...

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

क्या एक पूर्णांक अद्वितीय यूजर आईडी का प्रयोग एक प्रभावी नमक के रूप में विफल हो जाता है? (क्रिप्ट () केवल 16 बिट्स का उपयोग करता है?)

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

crypt सिर्फ नमक और हैश को एक स्ट्रिंग में संग्रहीत करता है, साथ ही इसका उपयोग करने के लिए एल्गोरिदम भी।





bcrypt