Malicious Code Detection in Smart Contracts via Opcode Vectorization
यह शोध पत्र स्मार्ट कॉन्ट्रैक्ट्स में दुर्भावनापूर्ण कोड का पता लगाने के लिए ओपकोड (opcodes) को वर्गीकृत और सरल बनाने के माध्यम से एक मशीन लर्निंग-आधारित दृष्टिकोण प्रस्तावित करता है, और फिर क्लासिफायर प्रशिक्षण के लिए फीचर निष्कर्षण (feature extraction) को अनुकूलित करने हेतु कच्चे (raw) और संसाधित (processed) ओपकोड्स पर N-Gram और TF-IDF वेक्टराइजेशन विधियों की प्रभावशीलता की तुलना करता है।
मूल पेपर CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) के तहत लाइसेंस किया गया है। नीचे दिए गए पेपर की यह व्याख्या AI से तैयार की गई है। इसे लेखकों ने न तो लिखा है, न इसका समर्थन किया है। तकनीकी सटीकता के लिए मूल पेपर देखें। पूरा डिस्क्लेमर पढ़ें
ब्लॉकचेन की कल्पना एक विशाल, सार्वजनिक डिजिटल लेजर के रूप में करें जहाँ लोग "स्मार्ट कॉन्ट्रैक्ट्स" लिखते हैं। इन कॉन्ट्रैक्ट्स को कानूनी दस्तावेजों के रूप में नहीं, बल्कि स्व-चालित वेंडिंग मशीनों (self-running vending machines) के रूप में सोचें। आप पैसे डालते हैं, मशीन नियमों की जाँच करती है, और यदि सब कुछ सही है, तो वह आपको एक स्नैक देती है। यदि मशीन के अंदर का कोड टूटा हुआ है या उसमें कोई छिपा हुआ जाल (दुर्भावनापूर्ण कोड/malicious code) है, तो आप अपने पैसे खो सकते हैं, या मशीन पूरी तरह से क्रैश हो सकती है।
यह शोध पत्र सुरक्षा गार्डों की एक टीम की तरह है जो यह पता लगाने की कोशिश कर रहे हैं कि किसी को नुकसान पहुँचाने से पहले टूटी हुई या धोखाधड़ी वाली वेंडिंग मशीन को कैसे पहचाना जाए। उन्होंने इसे कैसे किया, इसे सरल भाषा में यहाँ समझाया गया है:
1. समस्या: बहुत सारी भाषाएँ
स्मार्ट कॉन्ट्रैक्ट्स कोड में लिखे जाते हैं, लेकिन ब्लॉकचेन उस "अंग्रेजी" संस्करण (सोर्स कोड) को नहीं पढ़ता जिसे इंसान लिखते हैं। यह केवल एक बहुत ही विशिष्ट, रोबोटिक भाषा समझता है जिसे ओपकोड्स (Opcodes) कहा जाता है।
- उपमा (Analogy): कल्पना करें कि कॉन्ट्रैक्ट एक रेसिपी है। इंसान रेसिपी को अंग्रेजी में पढ़ते हैं ("दो कप आटा डालें")। हालाँकि, ब्लॉकचेन केवल रासायनिक कमांड की एक सूची समझता है ("सामग्री A को सामग्री B के साथ मिलाएं")।
- समस्या: इन सैकड़ों रासायनिक कमांड्स में से कई हैं। यदि आप उन्हें बस बेतरतीब ढंग से सूचीबद्ध करते हैं, तो कंप्यूटर के लिए एक सुरक्षित रेसिपी और एक जहरीली रेसिपी के बीच अंतर करना कठिन हो जाता है।
2. समाधान: समूहीकरण और गणना (Grouping and Counting)
लेखकों ने कंप्यूटर को इन रोबोटिक कमांड्स को पढ़ने का तरीका सिखाने का निर्णय लिया, उन्हें संख्याओं की एक सरल सूची (वेक्टर्स) में बदलकर। उन्होंने यह तीन चरणों में किया:
चरण A: कमांड्स का समूहीकरण (सरलीकरण)
हर एक कमांड को अलग मानने के बजाय, उन्होंने समान कमांड्स को एक साथ समूहबद्ध किया।- उपमा: कल्पना करें कि आपके पास 32 अलग-अलग प्रकार के "पुश" (Push) बटन हैं (Push1, Push2... Push32)। 32 अलग-अलग बटन याद रखने के बजाय, लेखकों ने निर्णय लिया कि वे उन सभी को केवल "पुश" कहेंगे। उन्होंने "जंप" (Jump) या "मैथ" (Math) जैसे अन्य समूहों के लिए भी ऐसा ही किया। इससे शोर (noise) कम हो गया और सूची छोटी और अध्ययन करने में आसान हो गई।
चरण B: जोड़ों को देखना (N-Gram)
उन्होंने केवल एकल कमांड्स को नहीं देखा; उन्होंने कमांड्स के उन जोड़ों (pairs) को देखा जो एक दूसरे के बगल में होते हैं।- उपमा: यदि आप रेसिपी में "नमक" शब्द देखते हैं, तो यह सामान्य है। लेकिन यदि आप देखते हैं कि "नमक" के तुरंत बाद "जहर" आता है, तो यह एक रेड फ्लैग (खतरे का संकेत) है। उन्होंने इन जोड़ों (जैसे "पुश" फिर "जंप") को देखा ताकि कॉन्ट्रैक्ट के प्रवाह को समझा जा सके।
चरण C: महत्व को तौलना (TF-IDF)
उन्होंने यह पता लगाने के लिए एक गणितीय ट्रिक का उपयोग किया कि कौन से जोड़े वास्तव में महत्वपूर्ण थे।- उपमा: यदि लगभग हर सुरक्षित रेसिपी "मिक्स फिर पोर" (Mix then Pour) के जोड़े का उपयोग करती है, तो वह जोड़ा बहुत विशेष नहीं है। लेकिन यदि कमांड का एक विशिष्ट जोड़ा केवल "जहरीली" रेसिपी में दिखाई देता है, तो वह जोड़ा एक बड़ा सुराग है। उन्होंने दुर्लभ, संदिग्ध जोड़ों को उच्च स्कोर दिया और सामान्य जोड़ों को कम स्कोर दिया।
3. प्रयोग: जासूसों को प्रशिक्षित करना
एक बार जब उन्होंने कॉन्ट्रैक्ट्स को इन संख्यात्मक सूचियों में बदल दिया, तो उन्होंने उन्हें पांच अलग-अलग "जासूस" कंप्यूटरों (मशीन लर्निंग मॉडल जैसे डिसीजन ट्री और रैंडम फॉरेस्ट) में डाला यह देखने के लिए कि क्या वे खराब कॉन्ट्रैक्ट्स को पहचान सकते हैं।
- परिणाम: उन्होंने इसे दो तरीकों से आजमाया।
- विधि 1: केवल कमांड्स की कच्ची सूची को देखना।
- विधि 2: सरल बनाए गए जोड़ों और उनके महत्व के स्कोर को देखना (ऊपर वर्णित विधि)।
- परिणाम (Outcome): दूसरी विधि (जोड़ों को देखना) एक विशिष्ट जासूस (डिसीजन ट्री) के लिए थोड़ा बेहतर काम करती थी, लेकिन कुल मिलाकर, परिणाम मिले-जुले रहे।
4. बड़ी बाधा: खराब उदाहरणों की कमी
लेखकों द्वारा सामना की गई सबसे बड़ी समस्या गणित नहीं थी; बल्कि डेटा था।
- उपमा: कल्पना करें कि आप एक कुत्ते को भेड़ को पहचानने के लिए सिखा रहे हैं। आप कुत्ते को 500 भेड़ों की तस्वीरें दिखाते हैं, लेकिन आपके पास केवल 80 भेड़ियों की तस्वीरें हैं।
- वास्तविकता: वास्तविक दुनिया में, अधिकांश स्मार्ट कॉन्ट्रैक्ट्स सुरक्षित होते हैं। दुर्भावनापूर्ण (malicious) वाले दुर्लभ हैं। क्योंकि उनके पास अध्ययन करने के लिए बहुत कम "बुरे" कॉन्ट्रैक्ट्स थे, इसलिए कंप्यूटर मॉडल भ्रमित हो गए। वे "भेड़िया" के पैटर्न को नहीं सीख सके क्योंकि उनके पास भेड़ों की तुलना करने के लिए भेड़ियों की पर्याप्त तस्वीरें नहीं थीं।
5. भविष्य: एक बड़ा पुस्तकालय बनाना
लेखक निष्कर्ष निकालते हैं कि हालांकि उनके द्वारा रोबोटिक कोड को संख्याओं में अनुवाद करने का तरीका एक अच्छा विचार है, उन्हें यह साबित करने के लिए कि यह पूरी तरह से काम करता है, अधिक डेटा की आवश्यकता है।
- वे आगे क्या करने की योजना बना रहे हैं: वे एक रोबोट (वेब क्रॉलर) बनाना चाहते हैं जो इंटरनेट से हजारों कॉन्ट्रैक्ट्स को स्वचालित रूप से इकट्ठा करके एक बहुत बड़ा पुस्तकालय बना सके। वे कंप्यूटर को "अनलेबल" (unlabeled) कॉन्ट्रैक्ट्स का उपयोग करके भी सिखाना चाहते हैं (जहाँ कंप्यूटर को खुद अंदाज़ा लगाना होता है कि कौन से खराब हैं) क्योंकि ज्ञात "बुरे" कॉन्ट्रैक्ट्स को खोजना बहुत कठिन है।
सारांश:
यह शोध पत्र स्मार्ट कॉन्ट्रैक्ट्स की रोबोटिक भाषा को एक ऐसे प्रारूप में अनुवाद करने का एक चतुर तरीका प्रस्तावित करता है जिसे कंप्यूटर आसानी से तुलना कर सकें। उन्होंने पाया कि कमांड के जोड़ों को देखना मदद करता है, लेकिन वे एक दीवार से टकरा गए क्योंकि दुनिया में "बुरे" कॉन्ट्रैक्ट्स के उदाहरण इतने कम हैं कि उनके सिस्टम को प्रभावी ढंग से प्रशिक्षित किया जा सके। उनके सुरक्षा गार्ड पर पूरी तरह से भरोसा करने से पहले उन्हें और अधिक डेटा की आवश्यकता है।
अपने क्षेत्र के पेपरों की भीड़ में उलझे हुए हैं?
आपके रिसर्च कीवर्ड से मेल खाने वाले सबसे नए और अलग सोच वाले पेपरों का रोज़ाना Digest पाएँ—तकनीकी सारांश के साथ, आपकी भाषा में।