एलेक्स वेट

प्रकाशित तिथि: 19/04/2018
इसे शेयर करें!
By प्रकाशित तिथि: 19/04/2018

जावास्क्रिप्ट वर्ग SecureRandom() इसमें एक बग है और यह वास्तव में सुरक्षित कुंजी उत्पन्न नहीं करता है।

इसका क्रिप्टोकरेंसी से क्या संबंध है?

ऐसे कई ब्राउज़र-आधारित क्रिप्टोकरेंसी उत्पाद हैं जो अभी भी उपयोग करें लोकप्रिय SecureRandom() JS क्लास। जावास्क्रिप्ट ब्राउज़र-आधारित उत्पाद बनाने के लिए बहुत लोकप्रिय है, लेकिन क्रिप्टोग्राफी उद्देश्यों के लिए इसका उपयोग करना वास्तव में अच्छी बात नहीं है। मुख्य समस्या यह है कि JS एक प्रकार-सुरक्षित भाषा नहीं है।

प्रकार सुरक्षा यह एक जटिल विषय है और इस बात की कोई सर्वमान्य परिभाषा नहीं है कि वास्तव में "टाइप-सेफ" भाषा क्या है, लेकिन इसकी लगभग किसी भी परिभाषा के अनुसार, जावास्क्रिप्ट टाइप-सेफ नहीं है। इसका मतलब है कि JS वास्तव में उन टाइप त्रुटियों को हतोत्साहित या रोकता नहीं है जो क्रिप्टोग्राफी में अस्वीकार्य हैं।

निष्कर्ष यह है कि ब्राउज़र के अंदर JS टूल द्वारा जेनरेट किए गए सभी क्रिप्टो वॉलेट में ऐसी कुंजियाँ थीं (और कुछ में – अभी भी हैं!) जो ब्रूट-फोर्स अटैक द्वारा क्रैक करने के लिए पर्याप्त रूप से पूर्वानुमानित हैं। हाँ, ऐसी कुंजियों की उचित लंबाई (क्रिप्टोग्राफी के अनुसार) होती है, लेकिन जावास्क्रिप्ट क्लास में बग के कारण एन्ट्रॉपी के 48 बिट से कम होती है।

गहरा तकनीकी स्पष्टीकरण.

अब क्या करे?

दरअसल, इसके बारे में ज़्यादा कुछ नहीं किया जा सकता। सभी अच्छी क्रिप्टोकरेंसी बग की तरह, यह भी कोई नई बात नहीं है - यहाँ ग्रेग मैक्सवेल इसके बारे में बात कर रहे हैं तीन साल पहले (51:00 पर):

यह समस्या आपको प्रभावित करती है यदि आप:

  • पुराने क्रिप्टोकरेंसी पते का उपयोग करें
  • वे जावास्क्रिप्ट के साथ उत्पन्न किए गए थे, यानी, वेब ब्राउज़र में

संभवतः प्रभावित:

  • बिटएड्रेस २०१३ से पूर्व;
  • 2014 से पहले bitcoinjs;
  • वर्तमान सॉफ्टवेयर जो गिटहब से पुराने रिपॉजिटरी का उपयोग करता है।

क्या करें:

  • अपने धन को उन पतों से बाहर ले जाएं
  • इन्हें दोबारा इस्तेमाल न करें

इससे आपकी कुंजियों के टूटने का जोखिम कम हो जाएगा, लेकिन, सामान्य तौर पर, इस जानकारी से आपको यह सोचना बंद कर देना चाहिए कि आधुनिक क्रिप्टो कुंजियों को टूटने में बहुत समय लगेगा। पता चला है कि इसे एक सप्ताह में ही टूटा जा सकता है।

 

कुछ रोचक तथ्य:

जावास्क्रिप्ट इसे मूल रूप से लाइवस्क्रिप्ट कहा जाता था। इसे सन माइक्रोसिस्टम्स (जैसा कि जावा) और लाइवस्क्रिप्ट का नाम बदलकर जावास्क्रिप्ट करने का कोई अच्छा कारण नहीं था। इससे यह भ्रम पैदा हुआ कि जावास्क्रिप्ट किसी तरह जावा से संबंधित है, लेकिन जावास्क्रिप्ट एक अलग भाषा है, यह जावा की तुलना में लिस्प या स्कीम जैसी कार्यात्मक भाषाओं के साथ अधिक समान है।

जावास्क्रिप्ट एक वास्तविक उच्च-स्तरीय, व्याख्या की गई प्रोग्रामिंग भाषा है, न कि स्क्रिप्ट, जैसा कि कहा गया है। -लिखी हुई कहानी प्रत्यय से पता चलता है.