यह कहना पर्याप्त होगा कि bcrypt या SHA-512 (PBKDF2 जैसे उपयुक्त एल्गोरिथम के संदर्भ में) काफी अच्छा है । और जवाब हां है, या तो एल्गोरिथ्म पर्याप्त सुरक्षित है कि एक उल्लंघन एक कार्यान्वयन दोष के माध्यम से होगा, क्रिप्टोनालिसिस नहीं।
यदि आप यह जानने पर जोर देते हैं कि कौन सा "बेहतर" है, तो SHA-512 को NIST और अन्य द्वारा गहराई से समीक्षा की गई है। यह अच्छा है, लेकिन खामियों को मान्यता दी गई है, जबकि अब शोषक नहीं है, नए हैश एल्गोरिदम के लिए SHA-3 प्रतियोगिता का नेतृत्व किया है। इसके अलावा, ध्यान रखें कि हैश एल्गोरिदम का अध्ययन सिफर की तुलना में "नया" है, और क्रिप्टोग्राफर अभी भी उनके बारे में सीख रहे हैं।
भले ही एक पूरी के रूप में bcrypt को ब्लोफिश के रूप में उतनी जांच नहीं हुई है, मेरा मानना है कि एक अच्छी तरह से समझी गई संरचना के साथ एक सिफर पर आधारित होने के कारण इसे कुछ अंतर्निहित सुरक्षा मिलती है जिसमें हैश-आधारित प्रमाणीकरण का अभाव है। इसके अलावा, SHA-2- आधारित हैश पर हमला करने के लिए एक उपकरण के रूप में आम GPU का उपयोग करना आसान है; इसकी स्मृति आवश्यकताओं के कारण, bcrypt के अनुकूलन के लिए कुछ ऑन-बोर्ड रैम के साथ FPGA जैसे अधिक विशिष्ट हार्डवेयर की आवश्यकता होती है।
नोट: bcrypt एक एल्गोरिथ्म है जो आंतरिक रूप से ब्लोफिश का उपयोग करता है। यह स्वयं एक एन्क्रिप्शन एल्गोरिथ्म नहीं है। यह अपरिवर्तनीय रूप से अस्पष्ट पासवर्ड के लिए उपयोग किया जाता है, जैसे कि हैश फ़ंक्शन का उपयोग "वन-वे हैश" करने के लिए किया जाता है।
क्रिप्टोग्राफिक हैश एल्गोरिदम को रिवर्स करने के लिए असंभव होने के लिए डिज़ाइन किया गया है। दूसरे शब्दों में, एक हैश फ़ंक्शन के केवल आउटपुट को देखते हुए, यह "हमेशा के लिए" एक संदेश ढूंढना चाहिए जो समान हैश आउटपुट का उत्पादन करेगा। वास्तव में, किसी भी दो संदेशों को खोजने के लिए कम्प्यूटेशनल रूप से संक्रामक होना चाहिए जो एक ही हैश मान का उत्पादन करते हैं। एक सिफर के विपरीत, हैश फ़ंक्शंस को एक कुंजी के साथ परिचालित नहीं किया जाता है; एक ही इनपुट हमेशा एक ही आउटपुट का उत्पादन करेगा।
यदि कोई व्यक्ति पासवर्ड प्रदान करता है जो पासवर्ड तालिका में संग्रहीत मूल्य पर हैश करता है, तो वे प्रमाणित होते हैं। विशेष रूप से, हैश फ़ंक्शन की अपरिवर्तनीयता के कारण, यह माना जाता है कि उपयोगकर्ता कोई हमलावर नहीं है, जिसने हैश को पकड़ लिया है और काम करने वाले पासवर्ड को खोजने के लिए इसे उलट दिया है।
अब bcrypt पर विचार करें। यह पासवर्ड से एक कुंजी "व्युत्पन्न" का उपयोग करके, एक जादुई स्ट्रिंग को एन्क्रिप्ट करने के लिए ब्लोफिश का उपयोग करता है। बाद में, जब कोई उपयोगकर्ता किसी पासवर्ड में प्रवेश करता है, तो कुंजी को फिर से प्राप्त किया जाता है, और यदि उस कुंजी के साथ एन्क्रिप्ट करके उत्पादित सिफरटेक्स्ट संग्रहीत सिफरटेक्स्ट से मेल खाता है, तो उपयोगकर्ता प्रमाणित होता है। सिफरटेक्स्ट "पासवर्ड" तालिका में संग्रहीत किया जाता है, लेकिन व्युत्पन्न कुंजी कभी संग्रहीत नहीं होती है।
यहां क्रिप्टोग्राफी को तोड़ने के लिए, एक हमलावर को सिफरटेक्स्ट से कुंजी को पुनर्प्राप्त करना होगा। इसे एक "ज्ञात-प्लेटेक्स्ट" हमला कहा जाता है, क्योंकि हमले से पता चलता है कि जादुई स्ट्रिंग को एन्क्रिप्ट किया गया है, लेकिन उपयोग की गई कुंजी नहीं। ब्लोफिश का बड़े पैमाने पर अध्ययन किया गया है, और अभी तक किसी भी हमले का पता नहीं चला है जो एक हमलावर को एक ज्ञात प्लेटेक्स्ट के साथ कुंजी खोजने की अनुमति देगा।
तो, अपरिवर्तनीय एल्गोरिदम आधारित क्रिप्टोग्राफिक डाइजेस्ट की तरह, bcrypt एक पासवर्ड, नमक और लागत कारक से अपरिवर्तनीय आउटपुट का उत्पादन करता है। इसकी ताकत ब्लोफिश के ज्ञात प्लेटेक्स्ट हमलों के प्रतिरोध में निहित है, जो पाचन एल्गोरिथम पर "पहले प्री-इमेज अटैक" के अनुरूप है। चूंकि यह पासवर्ड की सुरक्षा के लिए हैश एल्गोरिथम के स्थान पर उपयोग किया जा सकता है , इसलिए bcrypt को "हैश" एल्गोरिथम के रूप में भ्रमित किया जाता है।
यह मानते हुए कि इंद्रधनुष की तालिकाओं को नमक के उचित उपयोग से विफल कर दिया गया है, कोई भी अपरिवर्तनीय कार्य हमलावर को परीक्षण-और-त्रुटि में कम करता है। और जिस दर से हमलावर परीक्षण कर सकता है वह उस अपरिवर्तनीय "हैश" एल्गोरिथम की गति से निर्धारित होता है। यदि किसी हैश फ़ंक्शन के एकल पुनरावृत्ति का उपयोग किया जाता है, तो एक हमलावर उपकरण का उपयोग करके प्रति सेकंड लाखों परीक्षण कर सकता है, जिसकी लागत $ 1000 के आदेश पर होती है, कुछ महीनों में 8 वर्णों तक के सभी पासवर्ड का परीक्षण करते हैं।
यदि फिर भी, हज़ारों आउटपुट को हजारों बार "फीड बैक" किया जाता है, तो उस हार्डवेयर पर समान सेट के परीक्षण में सैकड़ों वर्ष लगेंगे। Bcrypt अपनी मुख्य व्युत्पत्ति दिनचर्या के अंदर पुनरावृत्ति करके समान "प्रमुख सुदृढ़ीकरण" प्रभाव को प्राप्त करता है, और PBKDF2 की तरह एक उचित हैश-आधारित पद्धति भी यही काम करती है; इस संबंध में, दो विधियां समान हैं।
तो, bcrypt के मेरी सिफारिश 1 मान्यताओं से उपजी है) कि एक ब्लोफिश हैश कार्यों के SHA-2 परिवार के समान है, और 2) है कि cipanalytic तरीके cipaners के लिए हैश कार्यों के लिए की तुलना में बेहतर विकसित कर रहे हैं।