सामग्री पर जाएँ

रीप्ले अटैक, सरल भाषा में: एक ही हस्ताक्षर दो चेन पर आपके सिक्के कैसे खर्च कर सकता है

एक पाठक ने पूछा कि BLAKE2b फोर्क के लिए रीप्ले अटैक का क्या मतलब है। कोई आपकी चाबी नहीं लेता, पर एक चेन पर हस्ताक्षरित लेनदेन दूसरी चेन पर कॉपी हो सकता है, और फोर्क की सुरक्षा वैकल्पिक है और एक ही दिशा में काम करती है।

One transaction signature duplicates across two branches of a forked chain.
  • रीप्ले अटैक आपके ही हस्ताक्षरित लेनदेन को दूसरी चेन पर कॉपी कर देता है। कोई चाबी नहीं चुराई जाती: आपका हस्ताक्षर दो बार प्रसारित होता है।
  • BLAKE2b चेन का वैकल्पिक हस्ताक्षर प्रारूप रीप्ले को केवल एक दिशा में रोकता है। सामान्य हस्ताक्षर दोनों चेन पर मान्य रहते हैं।

पाठक हमें सवाल भेजते हैं, और पिछले हफ्ते उनमें से एक ने रीप्ले अटैक के बारे में और BLAKE2b चेन के लिए उनके मायनों के बारे में पूछा। विषय तकनीकी है, लेकिन यह हर उस व्यक्ति से जुड़ा है जो फोर्क के दौरान सिक्के रखता है, इसलिए इसे सरल शब्दों में खोलना उपयोगी है। शुरुआत इससे करें कि विभाजन अपने पीछे क्या छोड़ता है। मान लीजिए Bitcoin सचमुच दो चेन में बंट जाता है। बंटवारे से पहले आपके पास एक बिटकॉइन है; उसके बाद दोनों चेन फोर्क के बिंदु तक वही इतिहास साथ लाती हैं, इसलिए जो अनखर्च आउटपुट आपका था वह अब दोनों तरफ आपका है। अकेले इससे कोई दिक्कत नहीं होती। दिक्कत तब शुरू होती है जब दोनों नेटवर्क एक ही लेनदेन स्वीकार करते रहते हैं। आप पहली चेन पर अपना सिक्का बेचने का फैसला करते हैं, एक लेनदेन पर हस्ताक्षर करके उसे प्रसारित करते हैं, और जिस क्षण वह सार्वजनिक होता है कोई भी उसी लेनदेन को उठाकर दूसरे नेटवर्क पर दोबारा प्रसारित कर सकता है। अगर वह वहां भी मान्य है, तो वहां भी पुष्ट हो जाता है। यही रीप्ले अटैक है, और समझने की असली बात यह है कि यह क्या नहीं है: किसी ने आपकी निजी चाबी नहीं ली, और कोई यह नहीं बदल सकता कि पैसा कहां जाएगा। दूसरी चेन पर जो चलता है वह वही लेनदेन है जिस पर आपने खुद हस्ताक्षर किए, बाइट दर बाइट। आपको लगा कि आप सिक्के एक शाखा पर ले जा रहे हैं, और आपने उन्हें दोनों पर ले जाया।

इसीलिए कोई हार्ड फोर्क रीप्ले सुरक्षा शामिल कर सकता है, और विचार सीधा है: ऐसा करना कि एक चेन के लिए हस्ताक्षरित लेनदेन दूसरी चेन पर तकनीकी रूप से अमान्य हो। Bitcoin Cash ने 2017 में ठीक यही किया, फोर्क के अपने हस्ताक्षर डाइजेस्ट SIGHASH_FORKID के साथ, जो उस संदेश को बदल देता है जिससे हस्ताक्षर बंधता है, और जिसे फोर्क सक्रिय होने के बाद नई चेन ने हर लेनदेन से अनिवार्य कर दिया। इसलिए एक नेटवर्क के लिए बने लेनदेन दूसरे पर विफल होते थे, और अलगाव दोनों दिशाओं में काम करता था। दूसरा तरीका प्रोटोकॉल का नहीं बल्कि धारक का है, और वह है अपने सिक्कों को अलग करना: आप पहले ऐसा लेनदेन बनाते हैं जो दोनों में से केवल एक चेन पर ही मान्य हो सकता है। उस बिंदु से इतिहास अलग हो जाते हैं, अनखर्च आउटपुट दोनों तरफ एक जैसे नहीं रहते, और बाद के लेनदेन एक नेटवर्क से दूसरे पर यूं ही कॉपी नहीं किए जा सकते।

इससे हम फिर उसी BLAKE2b चेन पर लौटते हैं, जो 30 अगस्त को ब्लॉक 961,640 पर सक्रिय हुई। उसमें इस तरह की व्यवस्था है भी, एक वैकल्पिक हस्ताक्षर प्रारूप जिसे SIGHASH_UNIFIED कहते हैं और जो Knots की पुल रिक्वेस्ट 357 में तय किया गया है, जिसका हस्ताक्षरित संदेश आज प्रचलित तीन हस्ताक्षर हैश से अलग है, इसलिए इसे चुनने वाला हस्ताक्षर उस चेन पर सत्यापित नहीं होगा जो इसे लागू नहीं करती। परियोजना का अपना दस्तावेज सीमाओं के बारे में असामान्य रूप से स्पष्ट है: वह इस सुरक्षा को नए संदेश का आनुषंगिक परिणाम, एकतरफा और प्रति हस्ताक्षर बताता है, और साफ कहता है कि सामान्य हस्ताक्षर मान्य बने रहते हैं और उन्हें अब भी दोहराया जा सकता है। यही वाक्य पूरी कहानी है: सुरक्षा तभी लागू होती है जब खर्च करने वाला उसे मांगे, केवल उसी खर्च पर जिस पर उसका इस्तेमाल हुआ, और केवल एक दिशा में। जो भी आज के वॉलेट की तरह हस्ताक्षर करता है उसे इसका कोई लाभ नहीं मिलता। यह भी याद रखने योग्य है कि इस फोर्क ने प्रूफ ऑफ वर्क एल्गोरिदम बदला है, पते, चाबी या हस्ताक्षर के प्रारूप नहीं, और ठीक इसीलिए एक ही अनुमति दोनों नेटवर्क पर मायने रख सकती है।

तो बात यह नहीं है कि रीप्ले अटैक से कोई आपके बिटकॉइन हैक कर लेगा, क्योंकि ऐसा नहीं होता। असली जोखिम यह है कि फोर्क के आसपास एक ही क्रिप्टोग्राफिक अनुमति अनजाने में आपके सिक्के दो अलग नेटवर्क पर खर्च कर सकती है। व्यावहारिक रूप इसे समझना आसान है। एक नया फोर्क आता है, और उसके बाद आपके पास Bitcoin पर एक बिटकॉइन होता है और फोर्क के सिक्के का उतना ही बराबर बकाया। तभी कोई सार्वजनिक रूप से पेशकश करता है कि वह आपके फोर्क वाले सिक्के कुछ डॉलर में खरीद लेगा, और चूंकि वे आपको लगभग बेकार लगते हैं, क्यों नहीं। अगर आपके सिक्के कभी अलग नहीं किए गए और आप उस हस्तांतरण पर सामान्य तरीके से हस्ताक्षर करते हैं, तो वही लेनदेन Bitcoin पर कॉपी किया जा सकता है, जहां वह ठीक उसी फोर्क से पहले वाले आउटपुट को खर्च करता है। तब आपके वॉलेट से जो निकलता है वह फोर्क का सिक्का नहीं होता। वह आपके बिटकॉइन होते हैं। फोर्क का अपना दस्तावेज बचाव भी बताता है, और वह ऊपर बताया गया अलगाव ही है: दूसरी चेन पर खर्च करने से पहले, वैकल्पिक प्रारूप का इस्तेमाल करते हुए BLAKE2b चेन पर अपने सिक्के खुद को भेजें और उस भुगतान की पुष्टि का इंतजार करें।

बाजार की बात करें तो Bitcoin ने पिछले हफ्ते हासिल जमीन बचाए रखी है। 3 सितंबर को $82,283 के इंट्राडे उच्च तक की तेजी के बाद, जो $81,000 से $84,000 बैंड से उसका पहला संपर्क था, उसने 6 सितंबर को $80,339 पर फिर $80,000 के ऊपर बंद किया और प्रकाशन के समय $79,200 के आसपास कारोबार कर रहा है। $75,600 की रेखा तब से नहीं परखी गई है, और हमारे तीनों क्षितिज दृष्टिकोण अपरिवर्तित हैं।

यह सामान्य बाजार विश्लेषण है, खरीदने या बेचने की सलाह नहीं।

स्रोत