2012-06-19 15 views
5

दिया:bmrypt hmac'd passphrase के साथ सुधार किया गया है?

$ नमक - पर्याप्त लंबाई एक छद्म यादृच्छिक रूप से जनरेट स्ट्रिंग

$ काली मिर्च - एक पर्याप्त मजबूत निजी कुंजी, केवल db के प्रशासकों जहां पासफ्रेज जमा हो जाती है के लिए जाना जाता

आप देखना होगा

$ हैश = bcrypt (HMAC ($ userpassphrase, $ मिर्च), $ नमक)

सार्थक

से बेहतर किया जा रहा है

$ हैश = bcrypt ($ userpassphrase, $ salt)

$ काली मिर्च के साथ-साथ $ नमक के प्रबंधन/भंडारण के अतिरिक्त बोझ को देखते हुए?

मेरी धारणा यह है कि एचएमएसी अर्थात् $ हैश को अर्थपूर्ण रूप से मजबूत नहीं करता है, और $ काली मिर्च भंडार करने का बोझ किसी भी लाभ से अधिक है ... लेकिन मुझे सूचित राय सुनना अच्छा लगेगा।

+0

"निजी पासफ्रेसे" से आपका क्या मतलब है? इसका उपयोग किसके पास है? आप इसे कैसे/कहां प्राप्त करते हैं? – Kaito

+0

क्षमा करें अगर यह स्पष्ट नहीं था - एचएमएसी के लिए निजी कुंजी। मैं उपरोक्त को स्पष्ट करने के लिए संपादित करूँगा, धन्यवाद! –

उत्तर

3

कुंजी वाले हैंश, या एचएमएक्स, डेटा के स्रोत की पुष्टि करने के लिए हैं, और पासवर्ड सुरक्षा के लिए नहीं हैं। उदाहरण के लिए, यदि आपके और मेरे पास साझा कुंजी थी, तो मैं कंप्यूटेड एचएमएसी के साथ आपको कुछ डेटा भेज सकता था, और आप यह जांचने के लिए उसी कुंजी का उपयोग कर सकते हैं कि एचएमएसी हैश मेल खाता है, और यदि ऐसा है, तो आप जानते हैं कि डेटा आया है मैं, और बदल नहीं गया है।

मशीन पर एक गुप्त पासफ्रेज को प्रभावी रूप से छिपाने का कोई तरीका नहीं है जिसे हमलावर नहीं मिल सका, आप जो भी कर रहे हैं वह अस्पष्टता की एक परत जोड़ रहा है। एक साझा गुप्त कुंजी के बिना, एचएमएसी का उपयोग करना अनिवार्य रूप से SHA ($ userpassphrase, $ salt) करने जैसा ही है, जो गणना करना बहुत आसान है, और इसलिए आपके पासवर्ड हैशिंग योजना में कोई सार्थक सुरक्षा नहीं होगी "पासफ्रेज ज्ञात है।

बीक्रिप्ट का पूरा बिंदु केवल हैशिंग प्रक्रिया को धीमा करना है, इसलिए यह आपके नमक के लिए इंद्रधनुष तालिका उत्पन्न करने के लिए एक लंबे समय तक हमलावर ले जाएगा। यदि आप अपना पासवर्ड हैशिंग योजना अधिक सुरक्षित बनाना चाहते हैं, तो बस मूल हैशिंग फ़ंक्शन की लागत बढ़ाएं। Bcrypt में, आप "logRounds" की संख्या निर्दिष्ट कर सकते हैं (मुझे लगता है कि यही वह है जिसे उन्होंने कहा है) हैश की संख्या कितनी बार की जाती है। यदि आप 15 (10 डिफ़ॉल्ट है) का लॉगराउंड निर्दिष्ट करते हैं, तो हैश 2^15 = 32768 बार किया जाएगा, जो इसे काफी धीमा कर देता है। हैश को करने में जितना समय लगता है, उतना ही लंबे समय तक हमलावर को तोड़ने के लिए ले जाएगा।

1

मुझे यकीन नहीं है कि आप इसका उपयोग कैसे करना चाहते हैं। मान लीजिए कि आप बाद में एक चुनौती-प्रतिक्रिया प्रमाणीकरण करने के लिए $ हैश स्टोर करते हैं तो आपको क्लाइंट को $ काली मिर्च प्राप्त करने की आवश्यकता होगी और यह सिर्फ एक और नमक होगा। बस एक एचएमएसी जोड़ना बहुत अधिक उपयोग नहीं होगा।

0

कोई पासवर्ड है जो एक अतिरिक्त हैश को bcrypt जैसे पासवर्ड खींचने पर कोई समस्या नहीं है; यह एक और दो बार इसे फिर से शुरू करने के लिए आसान और बेहतर होगा।

'काली मिर्च' आमतौर पर उपयोग किया जाने वाला लेकिन संदिग्ध अभ्यास है; व्यक्तिगत रूप से मेरा मानना ​​है कि हमले मॉडल जिनके तहत हमलावर आपके डेटाबेस को प्राप्त करता है लेकिन आपके पास गुप्त कुंजी तक पहुंच नहीं है, पर्याप्त रूप से योगदान दिया जाता है कि उनके खिलाफ सुरक्षा कार्यान्वयन जटिलता के लायक नहीं है।