वर्ष के सबसे लोकप्रिय शब्द के लिए प्रतियोगिता में, "ब्लॉकचैन" शब्द संभवतः आईटी क्षेत्र का विजेता बन जाएगा। इस तथ्य के बावजूद कि चिकित्सा में कहीं भी इसे सक्रिय रूप से पेश करने की एक
अस्वास्थ्यकर प्रवृत्ति है - चिकित्सा में, अर्थव्यवस्था, चीजों का इंटरनेट, खरगोशों को उठाना और पीज़ बनाना, क्रिप्टोकरेंसी ब्लॉकचैन का मुख्य दायरा है। और हर कोई जानता है: हैकर्स के लिए आभासी पर्स - खट्टा क्रीम के साथ एक बिल्ली की तरह।
इस लेख में, हम "टाइमजैकिंग" हमले पर विचार करेंगे, जो बिटकॉइन क्रिप्टोकरेंसी सिस्टम में ब्लॉक के टाइमस्टैम्प प्रसंस्करण में भेद्यता पर आधारित है, और यह समझाने की कोशिश करें कि हमला क्यों होता है, और इसका सफल कार्यान्वयन नहीं है।
PS "समय" शब्द के कई व्युत्पन्न होंगे। बहुत कुछ।
संक्षेप में
पहली बार, एलेक्स बोवरमैन ने टाइमजैकिंग हमले के बारे में लिखा। आप इसके प्रकाशन से खुद को परिचित कर सकते
हैं । सार क्या है: हमले ब्लॉक की टाइमस्टैम्प और बिटकॉइन में समय काउंटर की जांच के लिए तंत्र की कमजोरियों का फायदा उठाते हैं। हमलावर पीड़ित नोड के समय काउंटरों में से एक में हेरफेर करता है और "जहर" ब्लॉक बनाता है। पीड़ित इस ब्लॉक को छोड़ देगा, और बाकी नेटवर्क सफलतापूर्वक स्वीकार कर लेंगे, और कृपया - हमने एक कांटा उकसाया है! संपूर्ण नेटवर्क "ज़हर" के बाद निर्मित ब्लॉकों की एक श्रृंखला का उपयोग करता है, और पीड़ित बार-बार टोकन खर्च (उर्फ डबल-खर्च) के साथ एक वैकल्पिक श्रृंखला पर विचार करता है, जिसमें "जहर" ब्लॉक दिखाई नहीं देता है, वैध होने के लिए।
हमला दो चरणों में किया जाता है। इसे स्पष्ट करने के लिए, आइए उनमें से प्रत्येक के बारे में अलग से बात करें।
अधिनियम 1. एक कांटा बनाना और पीड़ित को अलग करना
एक हमलावर को "विवाद का सेब" उत्पन्न करने की आवश्यकता होती है - बहुत "जहर" ब्लॉक कि पीड़ित उपेक्षा करेगा। उसी तरह, पीड़ित अन्य ब्लॉकों को छोड़ देगा जिन्हें "जहर" एक के बाद क्रमिक रूप से जोड़ा जाएगा।
एक पीड़ित को कैसे छलें और उसे सही ब्लॉक छोड़ने के लिए मजबूर करें?प्रत्येक ब्लॉक के हेडर में टाइम स्टैम्प होता है जो सत्यापन के दौरान नोड चेक करता है। यह मान एक निश्चित सीमा में गिरना चाहिए, हम इसे एक अस्थायी विंडो कहेंगे। टाइम विंडो रेंज को नीचे दिए गए चित्र में दिखाया गया है:
समय विंडो में दो सीमाएँ हैं:
- निचला टी मिनट , यह सत्यापित ब्लॉक से पहले 11 ब्लॉकों के समय टिकटों के मध्य के बराबर है
- ऊपरी - नेटवर्क समय टी 0 + 2 घंटे के मूल्य के बराबर
ब्लॉक के टाइमस्टैम्प के मूल्य को नोड के सिस्टम समय के संबंध में नहीं, बल्कि उसके पड़ोसियों के मध्य समय के संबंध में सत्यापित किया जाता है - नेटवर्क समय (उर्फ नेटवर्क-समायोजित समय)।
नेटवर्क समय कैसे माना जाता है:
- जब एक नया कनेक्शन स्थापित होता है, तो नोड्स अपने सिस्टम समय का आदान-प्रदान करते हैं
- प्रत्येक नोड अपने प्रत्येक पड़ोसी के सिस्टम समय से अपने स्वयं के सिस्टम समय के विचलन की गणना करता है
- गणना किए गए विचलन के लिए, औसत मूल्य का चयन किया जाता है।
- नेटिव सिस्टम टाइम + माध्य विचलन = नेटवर्क समय
यहाँ नेटवर्क समय की गणना का एक उदाहरण है:
इस प्रकार, एक हमलावर पीड़ित के नेटवर्क समय के मूल्य में हेरफेर कर सकता है, जो इसे पर्याप्त संख्या में पड़ोसियों से जोड़कर लैगिंग सिस्टम समय की घोषणा करता है। पीड़ित नेटवर्क समय का मूल्य कम हो जाता है - सत्यापित ब्लॉक की समय सीमा के स्वीकार्य मूल्यों की सीमा की ऊपरी सीमा घट जाती है। लेकिन अगर पड़ोसी के समय का विचलन
70 मिनट से अधिक है, तो नेटवर्क समय की गणना करते समय उसके समय को ध्यान में नहीं रखा जाएगा। इसलिए, अधिकतम मूल्य जिसके द्वारा पीड़ित का नेटवर्क समय कम किया जा सकता है 70 मिनट है।
तदनुसार, हमारा "ज़हर" ब्लॉक एक ब्लॉक है जिसका टाइमस्टैम्प पीड़ित को छोड़कर सभी नेटवर्क नोड्स के समय विंडो में गिरना चाहिए। इसके बाद ही पूरा नेटवर्क इसे सफलतापूर्वक स्वीकार करेगा, और जिस पीड़ित का नेटवर्क समय संशोधित होगा, वह इसे सफलतापूर्वक नहीं छोड़ सकता है। नीचे दिए गए आंकड़े में - पीड़ित की समय खिड़की बनाम शेष नोड्स की समय खिड़की।
ध्यान दें कि, एनटीपी प्रोटोकॉल के लिए धन्यवाद, हम मान सकते हैं कि अधिकांश नोड्स के लिए सिस्टम का समय लगभग समान है, अर्थात, प्रत्येक नोड का नेटवर्क समय उनके सिस्टम समय के मूल्य के करीब है।
नतीजतन, पीड़ित मुख्य नेटवर्क से अलग हो जाता है और ब्लॉक की मुख्य श्रृंखला को गलत मानता है, जिसे "जहर" ब्लॉक से बाकी नोड्स द्वारा बनाया जाएगा। एक ही समय में, पीड़ित अन्य ब्लॉकों को आत्मविश्वास से स्वीकार करेगा, वैकल्पिक रूप से वैकल्पिक श्रृंखला के लिए हमलावर द्वारा उत्पन्न।
अधिनियम 2. दोहरा खर्च
इस स्तर पर, हमलावर एक वैकल्पिक श्रृंखला बनाता है, जिसमें वह एक लेनदेन जोड़ता है जो पीड़ित के बटुए में टोकन स्थानांतरित करता है। वैकल्पिक चेन ब्लॉक पीड़ित को भेजे जाते हैं। नीचे दिए गए आंकड़े में - "जहर" ब्लॉक के समय टिकट के मूल्यों की श्रेणी।
पीड़ित इस श्रृंखला को स्वीकार करेगा, क्योंकि समय की मोहर का मूल्य घुसपैठिये द्वारा अपने समय खिड़की से चुना जाता है, और शेष नोड्स इसे ठीक से अनदेखा करेंगे - आखिरकार, वे पहले से ही "जहर" ब्लॉक से अपनी श्रृंखला का निर्माण कर रहे हैं, जो विकल्प से लंबा है। नतीजतन, पीड़ित का मानना है कि उसने टोकन प्राप्त किया और सामान भेजा। और मुख्य नेटवर्क यह सुनिश्चित करता है कि टोकन ने हमलावर के बटुए को नहीं छोड़ा, और वह "धन्यवाद" के लिए सामान प्राप्त करता है - आखिरकार, सबसे गलत नहीं किया जा सकता है। फाइनल, अंधेरे पक्ष की जीत के हीरो!
लेकिन इतना सरल नहीं है
गड्ढा नंबर 1बिटकॉइन माइनिंग में आज भारी कंप्यूटिंग शक्ति शामिल है। "ज़हर" ब्लॉक की सफल पीढ़ी की संभावना का अनुमान निम्नलिखित सूत्र द्वारा लगाया जा सकता है:
आज, बिटकॉइन नेटवर्क की
कुल हैशेट लगभग H = 34 has 10
18 हैश / एस के बराबर है। इस मामले में,
इस सूची के सबसे अधिक उत्पादक उपकरण का उपयोग करते हुए, घोषित हैश दर h = 18
12 10
12 हैश / s, 1 वर्ष में "जहर" ब्लॉक उत्पन्न करने की संभावना (t = 365 ∙ 24 ∙ 60) लगभग 3% है। और अगर हम
इन आँकड़ों को अपेक्षाकृत छोटे खनन पूल से लेते हैं जिसमें कुल हैशट्रेट का 0.3% है, तो 3 दिनों के भीतर सफल ब्लॉक पीढ़ी की संभावना 73% है।
गड्ढा नंबर 2पीड़ित के नेटवर्क के समय बीतने के साथ, "जहर" ब्लॉक का टाइमस्टैम्प आखिरकार पीड़ित के टाइम विंडो में आ जाएगा। तब पीड़ित वैकल्पिक श्रृंखला को मुख्य एक में बदल देगा, क्योंकि पूरा नेटवर्क इस पर काम करता है और इसकी ऊंचाई अधिक होगी। "जहर" ब्लॉक पीड़ित के समय खिड़की में 70 मिनट से अधिक नहीं गिरेगा - यह अधिकतम समय है जिसके लिए दूसरे चरण को पूरा करना आवश्यक है।
पीड़ित को दोहरे खर्च के साथ लेन-देन स्वीकार करने के लिए, इसके साथ ब्लॉक की पुष्टि अन्य 6 ब्लॉकों (एक मानक ग्राहक के लिए) से होनी चाहिए। उल्लंघनकर्ता को स्वतंत्र रूप से पुष्टि ब्लॉक उत्पन्न करना होगा, और इसके साथ ही उपरोक्त 70 मिनटों को पूरा करना आवश्यक है। बोरमैन
एक ऐसी स्थिति
पर विचार करता है, जहां एक हमलावर पूरे नेटवर्क की शक्ति का 10% का मालिक होता है। ऐसी स्थिति में, 6 ब्लॉक को 10% की सफलता दर के साथ उत्पन्न करने में ~ 5.5 घंटे का समय लगेगा। 3.3 घंटे के लिए, सफलता की संभावना 1% तक गिर जाती है, 140 मिनट के लिए - 0.147%। इन अनुमानों के अनुसार, 70 मिनट में 6 ब्लॉक सफलतापूर्वक उत्पन्न करना एक कल्पना है।
गड्ढा नंबर 3जब नोड नेटवर्क समय की गणना करता है, तो यह केवल
पहले 200 पड़ोसियों के सिस्टम समय को ध्यान में रखता
है - फिर मध्य विचलन का पुनर्गणना नहीं किया जाएगा। इसका मतलब यह है कि हमले को तब तक लागू किया जाना चाहिए जब तक कि पीड़ित से पहले से जुड़े पड़ोसियों की संख्या 99 से अधिक न हो - अन्यथा हमलावर द्वारा घोषित समय मंझला नहीं होगा। पड़ोसियों की यह संख्या लगभग 24 घंटों में चलेगी, और उसके बाद पीड़ित को रिबूट करने की आवश्यकता होगी - उदाहरण के लिए, DoS का उपयोग करना।
अंत
अंत में, हम कह सकते हैं कि "टाइमजैकिंग" हमला बहुत अच्छा है, लेकिन कठोर वास्तविकताओं में बिटकॉइन अनुचित हो रहा है। ब्लॉकचेन का उपयोग करने वाली अन्य प्रणालियों के बारे में क्या? हमें इस सवाल को अपने आगे के शोध के लिए छोड़ दें!