नहीं, पासवर्ड सुरक्षा में सुधार के लिए ब्राउज़र जावास्क्रिप्ट का उपयोग करने का कोई तरीका नहीं है। मैं आपको इस लेख को पढ़ने की अत्यधिक सलाह देता हूं । आपके मामले में, सबसे बड़ी समस्या चिकन-अंडे की समस्या है:
जावास्क्रिप्ट क्रिप्टोग्राफी वितरित करने के साथ "चिकन-अंडे की समस्या" क्या है?
यदि आप पासवर्ड देने के लिए नेटवर्क पर भरोसा नहीं करते हैं, या इससे भी बदतर है, तो सर्वर पर उपयोगकर्ता रहस्यों को न रखने के लिए भरोसा नहीं करते हैं, आप सुरक्षा कोड देने के लिए उन पर भरोसा नहीं कर सकते। क्रिप्टो शुरू करने से पहले पासवर्ड या रीडिंग डायरी सूँघने वाला एक ही हमलावर आपके द्वारा किए जाने के बाद क्रिप्टो कोड का अपहरण कर रहा है।
[...]
मैं जावास्क्रिप्ट क्रिप्टो कोड देने के लिए टीएलएस / एसएसएल का उपयोग क्यों नहीं कर सकता हूं?
आप ऐसा कर सकते हैं। यह लगता है की तुलना में कठिन है, लेकिन आप SSL का उपयोग करके जावास्क्रिप्ट क्रिप्टो को एक ब्राउज़र में सुरक्षित रूप से संचारित करते हैं। समस्या यह है कि एसएसएल के साथ एक सुरक्षित चैनल स्थापित करने के बाद, आपको जावास्क्रिप्ट क्रिप्टोग्राफी की आवश्यकता नहीं है; आपके पास "वास्तविक" क्रिप्टोग्राफी है।
जो इस की ओर जाता है:
जावास्क्रिप्ट में क्रिप्टो कोड को चलाने के साथ समस्या यह है कि व्यावहारिक रूप से कोई भी फ़ंक्शन जो क्रिप्टो पर निर्भर करता है, उसे होस्टिंग पृष्ठ बनाने के लिए उपयोग की गई सामग्री के किसी भी टुकड़े से चुपचाप ओवरराइड किया जा सकता है। क्रिप्टो सुरक्षा प्रक्रिया में जल्द ही पूर्ववत किया जा सकता है (फर्जी यादृच्छिक संख्याओं को उत्पन्न करके, या एल्गोरिदम द्वारा उपयोग किए गए स्थिरांक और मापदंडों के साथ छेड़छाड़ करके), या बाद में (एक हमलावर पर महत्वपूर्ण सामग्री वापस लेने से), या --- सबसे अधिक संभावना परिदृश्य में --- पूरी तरह से क्रिप्टो को दरकिनार करके।
अपने निष्पादन पर्यावरण को सत्यापित करने के लिए जावास्क्रिप्ट कोड के किसी भी टुकड़े के लिए कोई विश्वसनीय तरीका नहीं है। जावास्क्रिप्ट क्रिप्टो कोड नहीं पूछ सकता है, "क्या मैं वास्तव में एक यादृच्छिक संख्या जनरेटर के साथ काम कर रहा हूं, या एक हमलावर द्वारा प्रदान किए गए कुछ के साथ क्या कर सकता हूं?" और यह निश्चित रूप से जोर नहीं दे सकता है "किसी को भी इस क्रिप्टो रहस्य के साथ कुछ भी करने की अनुमति नहीं है सिवाय इसके कि मैं, लेखक, अनुमोदित"। ये दो गुण हैं जो अक्सर अन्य वातावरण में प्रदान किए जाते हैं जो क्रिप्टो का उपयोग करते हैं, और वे जावास्क्रिप्ट में असंभव हैं।
मूल रूप से समस्या यह है:
- आपके ग्राहक आपके सर्वर पर भरोसा नहीं करते हैं, इसलिए वे अतिरिक्त सुरक्षा कोड जोड़ना चाहते हैं।
- वह सुरक्षा कोड आपके सर्वर (वे जिस पर भरोसा नहीं करते) द्वारा दिया जाता है।
या वैकल्पिक रूप से,
- आपके ग्राहक एसएसएल पर भरोसा नहीं करते हैं, इसलिए वे चाहते हैं कि आप अतिरिक्त सुरक्षा कोड का उपयोग करें।
- वह सुरक्षा कोड एसएसएल के माध्यम से दिया जाता है।
नोट: इसके अलावा, SHA-256 इसके लिए उपयुक्त नहीं है, क्योंकि यह असंगत गैर-पुनरावृत्त पासवर्ड को बल देना बहुत आसान है । यदि आप ऐसा करने का निर्णय लेते हैं, तो bcrypt , scrypt या PBKDF2 के कार्यान्वयन की तलाश करें ।