security SHA512 बनाम Blowfish और Bcrypt




encryption passwords (5)

मैं बस इस पर आया:

codahale.com/how-to-safely-store-a-password

क्या इस लेख का लेखक गलत हो सकता है?

मैं हैशिंग एल्गोरिदम देख रहा हूं, लेकिन एक जवाब नहीं मिला।

  • Bcrypt Blowfish का उपयोग करता है
  • एमडी 5 से ब्लोफिश बेहतर है
  • प्रश्न: लेकिन एसएचए 512 से ब्लोफिश बेहतर है?

धन्यवाद..

अद्यतन करें:

मैं यह स्पष्ट करना चाहता हूं कि मैं हैशिंग और एन्क्रिप्शन के बीच अंतर को समझता हूं। इस सवाल को मुझसे पूछने के लिए मुझे क्या प्रेरित किया गया, इस लेखक को "अनुकूली हैशिंग" के रूप में bcrypt को संदर्भित किया गया है https://www.nccgroup.trust/us/about-us/newsroom-and-events/blog/2007/july/enough-with-the-rainbow-tables-what-you-need-to-know-about-secure-password-schemes/

चूंकि bcrypt Blowfish पर आधारित है, इसलिए मुझे लगता है कि ब्लोफिश एक हैशिंग एल्गोरिदम है। अगर यह एन्क्रिप्शन है क्योंकि उत्तरों ने इंगित किया है, तो मुझे लगता है कि इस लेख में इसकी जगह नहीं होनी चाहिए। इससे भी बदतर यह है कि वह निष्कर्ष निकाला है कि बीक्रिप्ट सबसे अच्छा है। अब मुझे भ्रमित करने वाला यह भी है कि phpass class (पासवर्ड हैशिंग के लिए उपयोग किया जाता है) bcrypt (यानी blowfish, यानी एन्क्रिप्शन) का उपयोग करता है। इस नई जानकारी के आधार पर आप लोग मुझे बता रहे हैं (blowfish एन्क्रिप्शन है), यह वर्ग गलत लगता है। क्या मैं कुछ भूल रहा हूँ?


मैं एरिक्सन के जवाब से सहमत हूं, एक चेतावनी के साथ: पासवर्ड प्रमाणीकरण उद्देश्यों के लिए, बीसीआरपीटी एसएचए -512 के एक ही पुनरावृत्ति से काफी बेहतर है - बस क्योंकि यह बहुत धीमी है। यदि आपको यह नहीं मिलता है कि इस विशेष गेम में धीमी गति का लाभ क्यों है, तो आपने जो लेख फिर से लिंक किया है उसे पढ़ें (" स्पीड वही है जो आप पासवर्ड हैश फ़ंक्शन में नहीं चाहते हैं। ")।

आप निश्चित रूप से पीएचके के एमडी 5 एल्गोरिदम काम करने के तरीके के साथ हजारों बार इसे पुन: स्थापित करके SHA-512 के आस-पास एक सुरक्षित पासवर्ड हैशिंग एल्गोरिदम बना सकते हैं। ग्लिब के क्रिप्ट () के लिए, Ulrich Drepper वास्तव में यह किया था । ऐसा करने के लिए कोई विशेष कारण नहीं है, हालांकि, यदि आपके पास पहले से ही एक परीक्षण बीसीआरपीटी कार्यान्वयन उपलब्ध है।


Blowfish MD5 या SHA512 से बेहतर नहीं है, क्योंकि वे विभिन्न उद्देश्यों को पूरा करते हैं। एमडी 5 और एसएचए 512 हैंशिंग एल्गोरिदम हैं, ब्लोफिश एक एन्क्रिप्शन एल्गोरिदम है। दो पूरी तरह से अलग क्रिप्टोग्राफिक कार्यों।


Blowfish एक हैशिंग एल्गोरिदम नहीं है। यह एक एन्क्रिप्शन एल्गोरिदम है। इसका मतलब यह है कि आप blowfish का उपयोग करके कुछ एन्क्रिप्ट कर सकते हैं, और उसके बाद आप इसे सादे पाठ में वापस डिक्रिप्ट कर सकते हैं।

SHA512 एक हैशिंग एल्गोरिदम है। इसका मतलब है कि (सिद्धांत में) एक बार जब आप इनपुट करते हैं तो आपको फिर से मूल इनपुट नहीं मिल सकता है।

वे 2 अलग-अलग चीजें हैं, जिन्हें विभिन्न कार्यों के लिए उपयोग करने के लिए डिज़ाइन किया गया है। SHA512 से बेहतर झटका मछली का कोई 'सही' जवाब नहीं है? " आप यह भी पूछ सकते हैं कि "कंगारुओं से सेब बेहतर हैं?"

यदि आप इस विषय पर कुछ और पढ़ना चाहते हैं तो यहां कुछ लिंक हैं:


यह कहना पर्याप्त होना चाहिए कि क्या बीक्रिप्ट या SHA-512 (पीबीकेडीएफ 2 जैसे उचित एल्गोरिदम के संदर्भ में) पर्याप्त है । और जवाब हां है, या तो एल्गोरिदम पर्याप्त सुरक्षित है कि एक उल्लंघन कार्यान्वयन दोष के माध्यम से होता है, क्रिप्टैनालिसिस नहीं।

यदि आप यह जानने का आग्रह करते हैं कि "बेहतर" कौन सा है, तो SHA-512 में एनआईएसटी और अन्य लोगों की गहराई से समीक्षा हुई है। यह अच्छा है, लेकिन त्रुटियों को मान्यता मिली है कि, अब शोषक नहीं होने के कारण, नए हैश एल्गोरिदम के लिए SHA-3 प्रतियोगिता का कारण बन गया है। साथ ही, ध्यान रखें कि हैश एल्गोरिदम का अध्ययन सिफर की तुलना में "नया" है, और क्रिप्टोग्राफर्स अभी भी उनके बारे में सीख रहे हैं।

भले ही पूरी तरह से ब्रिकेट ने ब्लॉफिश के रूप में ज्यादा जांच नहीं की है, मेरा मानना ​​है कि एक अच्छी तरह से समझी गई संरचना के साथ एक सिफर पर आधारित होने से यह कुछ अंतर्निहित सुरक्षा देता है कि हैश-आधारित प्रमाणीकरण की कमी है। साथ ही, SHA-2-आधारित हैंश पर हमला करने के लिए एक उपकरण के रूप में सामान्य जीपीयू का उपयोग करना आसान है; इसकी स्मृति आवश्यकताओं के कारण, bcrypt को अनुकूलित करने के लिए कुछ ऑन-बोर्ड रैम के साथ एफपीजीए जैसे अधिक विशिष्ट हार्डवेयर की आवश्यकता होती है।

नोट: bcrypt एक एल्गोरिदम है जो आंतरिक रूप से Blowfish का उपयोग करता है। यह एक एन्क्रिप्शन एल्गोरिदम स्वयं नहीं है। इसका उपयोग पासवर्ड को अपरिवर्तनीय रूप से अस्पष्ट करने के लिए किया जाता है, जैसे हैश फ़ंक्शन का उपयोग "एक तरफा हैश" करने के लिए किया जाता है।

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

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

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

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

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

यह मानते हुए कि नमक के उचित उपयोग से इंद्रधनुष तालिकाओं को विफल कर दिया गया है, किसी भी वास्तव में अपरिवर्तनीय कार्य हमलावर को परीक्षण-और-त्रुटि में कम कर देता है। और हमलावर जो परीक्षण कर सकता है वह दर उस अपरिवर्तनीय "हैश" एल्गोरिदम की गति से निर्धारित होती है। यदि हैश फ़ंक्शन का एक एकल पुनरावृत्ति उपयोग किया जाता है, तो हमलावर $ 1000 के आदेश पर खर्च होने वाले उपकरणों का उपयोग करके प्रति सेकंड लाखों परीक्षण कर सकता है, कुछ महीनों में 8 अक्षरों तक सभी पासवर्ड का परीक्षण कर सकता है।

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

तो, बीक्रिप्ट की मेरी सिफारिश धारणाओं से उत्पन्न होती है 1) कि ब्लोफिश के पास हैश फ़ंक्शन के SHA-2 परिवार के रूप में समान स्तर की जांच होती है, और 2) हैश फ़ंक्शन के लिए सिफर के लिए क्रिप्टैनालिटिक तरीके बेहतर विकसित होते हैं।





hash