WebCrypto
क्लाइंट-साइड (ब्राउज़र) जावास्क्रिप्ट में क्रिप्टोग्राफी के साथ चिंताएं नीचे दी गई हैं। इन सभी चिंताओं में से एक WebCrypto API पर लागू नहीं होती है , जो अब यथोचित समर्थित है ।
एक ऑफ़लाइन ऐप के लिए, आपको अभी भी एक सुरक्षित कीस्टोर को डिज़ाइन और कार्यान्वित करना होगा।
एक तरफ: यदि आप Node.js का उपयोग कर रहे हैं, तो अंतर्निहित क्रिप्टो एपीआई का उपयोग करें ।
देशी-जावास्क्रिप्ट क्रिप्टोग्राफी (प्री-वेबक्रिप्ट)
मुझे लगता है कि प्राथमिक चिंता यह है कि localStorage
आपकी साइट के लिए पढ़ने वाले कंप्यूटर पर भौतिक पहुंच वाले व्यक्ति हैं , और आप चाहते हैं कि क्रिप्टोग्राफी उस पहुंच को रोकने में मदद करे।
अगर किसी की शारीरिक पहुंच है तो आप दूसरे पर हमला करने और पढ़ने से भी बदतर हैं। इनमें शामिल हैं (लेकिन यह सीमित नहीं हैं): कीलॉगर्स, ऑफ़लाइन स्क्रिप्ट संशोधन, स्थानीय स्क्रिप्ट इंजेक्शन, ब्राउज़र कैश पॉइज़निंग, और डीएनएस अप्रत्यक्ष। वे हमले केवल तभी काम करते हैं यदि उपयोगकर्ता मशीन का उपयोग करने के बाद समझौता कर लेता है। फिर भी, ऐसे परिदृश्य में भौतिक पहुंच का मतलब है कि आपको बड़ी समस्याएं हैं।
तो ध्यान रखें कि स्थानीय परिदृश्य जहां स्थानीय क्रिप्टो मूल्यवान है अगर मशीन चोरी हो जाती है।
पुस्तकालय हैं जो वांछित कार्यक्षमता को लागू करते हैं, जैसे स्टैनफोर्ड जावास्क्रिप्ट क्रिप्टो लाइब्रेरी । हालाँकि, अंतर्निहित कमज़ोरियाँ हैं, (जैसा कि @ ircmaxell के उत्तर से लिंक में उल्लिखित है):
- एन्ट्रापी / यादृच्छिक संख्या पीढ़ी का अभाव;
- सुरक्षित कीस्टोर का अभाव यानी निजी कुंजी को पासवर्ड-सुरक्षित होना चाहिए यदि स्थानीय रूप से संग्रहीत किया जाता है, या सर्वर पर संग्रहीत किया जाता है (जो ऑफ़लाइन पहुंच को बार करता है);
- सुरक्षित-मिटा का अभाव;
- समय की विशेषताओं का अभाव।
इन कमजोरियों में से प्रत्येक क्रिप्टोग्राफिक समझौता की श्रेणी से मेल खाती है। दूसरे शब्दों में, जबकि आपके पास नाम से "क्रिप्टो" हो सकता है, यह व्यवहार में एक इच्छा के विपरीत अच्छा होगा।
कहा जा रहा है कि सभी, मूल्यांकन मूल्यांकन उतना तुच्छ नहीं है जितना "जावास्क्रिप्ट क्रिप्टो कमजोर है, इसका उपयोग न करें"। यह एक समर्थन नहीं है, सख्ती से एक चेतावनी है और इसके लिए आपको उपरोक्त कमजोरियों के जोखिम, आपके द्वारा सामना किए जाने वाले वैक्टर की आवृत्ति और लागत और विफलता की स्थिति में शमन या बीमा के लिए आपकी क्षमता: जावास्क्रिप्ट क्रिप्टो, को समझने की आवश्यकता है। अपनी कमजोरियों के बावजूद, आपके जोखिम को कम कर सकता है लेकिन केवल सीमित तकनीकी क्षमता वाले चोरों के खिलाफ। हालाँकि, आपको यह मान लेना चाहिए कि जावास्क्रिप्ट क्रिप्टो में एक निर्धारित और सक्षम हमलावर के खिलाफ कोई मूल्य नहीं है जो उस जानकारी को लक्षित कर रहा है। कुछ लोग इसे डेटा को "एन्क्रिप्टेड" कहने के लिए भ्रामक मानते हैं जब कार्यान्वयन के लिए कई कमजोरियों को अंतर्निहित माना जाता है। दूसरे शब्दों में, आप अपने तकनीकी प्रदर्शन को थोड़ा कम कर सकते हैं लेकिन आप अपने वित्तीय जोखिम को प्रकटीकरण से बढ़ा सकते हैं। प्रत्येक स्थिति अलग है, ज़ाहिर है - और वित्तीय जोखिम के लिए तकनीकी जोखिम को कम करने का विश्लेषण गैर-तुच्छ है। यहाँ एक दृष्टांत सादृश्य है:कुछ बैंकों को अंतर्निहित जोखिम के बावजूद, कमजोर पासवर्ड की आवश्यकता होती है , क्योंकि कमजोर पासवर्ड से नुकसान का जोखिम मजबूत पासवर्ड का समर्थन करने के अंत-उपयोगकर्ता की लागत से कम है।
Guy यदि आपने अंतिम पैराग्राफ पढ़ा और सोचा "ब्रायन नाम के इंटरनेट पर कोई लड़का कहता है कि मैं जावास्क्रिप्ट क्रिप्टो का उपयोग कर सकता हूं", जावास्क्रिप्ट क्रिप्टो का उपयोग न करें।
प्रश्न में वर्णित उपयोग के मामले के लिए यह उपयोगकर्ताओं के लिए अपने स्थानीय विभाजन या होम निर्देशिका को एन्क्रिप्ट करने और एक मजबूत पासवर्ड का उपयोग करने के लिए अधिक समझ में आता है। उस प्रकार की सुरक्षा आमतौर पर अच्छी तरह से जांच की जाती है, व्यापक रूप से विश्वसनीय और आमतौर पर उपलब्ध है।