AST-Level Semantic Watermarking Framework for AI-Generated Code: Robust Provenance Attribution via Structural Invariants
यह शोध पत्र एक नवीन, मॉडल-अज्ञेय (model-agnostic) AST-स्तरीय वॉटरमार्किंग फ्रेमवर्क का प्रस्ताव करता है जो अर्थ-संरक्षण करने वाले संरचनात्मक उत्परिवर्तनों (semantics-preserving structural mutations) के माध्यम से AI-जनित कोड की वाक्यात्मक टोपोलॉजी (syntactic topology) में क्रिप्टोग्राफिक रूप से सत्यापन योग्य हस्ताक्षरों को एम्बेड करता है, जिससे सुदृढ़ उत्पत्ति संबंधी आरोपण (provenance attribution) प्राप्त होता है और यह फॉर्मेटिंग, रीनेमिंग और डेड-कोड इंजेक्शन जैसे सामान्य कोड रूपांतरणों के विरुद्ध मौजूदा टेक्स्ट-स्तरीय विधियों से काफी बेहतर प्रदर्शन करता है।
मूल पेपर CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/) के तहत लाइसेंस किया गया है। नीचे दिए गए पेपर की यह व्याख्या AI से तैयार की गई है। इसे लेखकों ने न तो लिखा है, न इसका समर्थन किया है। तकनीकी सटीकता के लिए मूल पेपर देखें। पूरा डिस्क्लेमर पढ़ें
सॉफ्टवेयर निर्माण के आधुनिक युग में, एक शांत क्रांति चल रही है। बड़े भाषा मॉडल (Large language models), जो कंप्यूटर कोड लिखने में सक्षम शक्तिशाली कृत्रिम बुद्धिमत्ता (AI) प्रणालियाँ हैं, डेवलपर्स के लिए मानक उपकरण बन गए हैं, जो डिजिटल अनुप्रयोगों के निर्माण की गति को बढ़ाने का वादा करते हैं। हालाँकि, यह सुविधा एक महत्वपूर्ण चुनौती भी लाती है: जब कोई मशीन प्रोग्राम लिखती है, तो यह बताना लगभग असंभव हो जाता है कि वास्तव में इसे किसने बनाया है। मानवीय प्रयास और मशीन द्वारा जनरेट किए गए कोड के बीच की रेखाएं धुंधली हो जाती हैं, जिससे सॉफ्टवेयर कंपनियाँ और शोधकर्ता चोरी, साहित्यिक चोरी (plagiarism) और अपुष्ट कोड के प्रसार के प्रति असुरक्षित हो जाते हैं। इसे हल करने के लिए, विशेषज्ञों ने लंबे समय से कोड के टेक्स्ट के भीतर डिजिटल हस्ताक्षर, या वॉटरमार्क छिपाने की कोशिश की है। लेकिन पारंपरिक तरीके नाजुक हैं; वे शब्दों के बीच के स्पेसिंग में एक गुप्त संदेश लिखने के समान हैं, जो दस्तावेज़ को फिर से टाइप करने या फ़ॉन्ट बदलने पर तुरंत नष्ट हो जाता है। कोड वही रहता है, लेकिन छिपा हुआ संदेश गायब हो जाता है।
एक नया दृष्टिकोण, जो हालिया शोध में विस्तृत है, रणनीति को टेक्स्ट की सतह से हटाकर प्रोग्राम के अंतर्निहित तर्क (logic) की ओर स्थानांतरित करता है। कोड के शब्दों में संदेश छिपाने के बजाय, यह विधि इसे कोड की संरचना के आर्किटेक्चर में छिपाती है। शोधकर्ताओं ने एक ऐसी प्रणाली विकसित की है जो कंप्यूटर प्रोग्राम को केवल टेक्स्ट की एक पंक्ति के रूप में नहीं, बल्कि उसके अपने तर्क के एक पदानुक्रमित मानचित्र (hierarchical map) के रूप में देखती है, जिसे 'एब्स्ट्रैक्ट सिंटैक्स ट्री' (abstract syntax tree) कहा जाता है। यह मानचित्र दिखाता है कि कोड के विभिन्न भाग कैसे जुड़ते हैं और परस्पर क्रिया करते हैं, चाहे उनका फॉर्मेटिंग या नाम कुछ भी हो। कोड की इस संरचना में गणितीय रूप से गारंटीकृत सूक्ष्म परिवर्तन करके—जैसे कि एक गणना में दो संख्याओं का क्रम बदलना जिसका कोई महत्व नहीं है, या एक विशिष्ट प्रकार के लूप को दूसरे समान प्रकार के लूप में बदलना—यह प्रणाली प्रोग्राम के डीएनए में सीधे एक क्रिप्टोग्राफिक हस्ताक्षर को एम्बेड करती है। ये परिवर्तन कंप्यूटर द्वारा चलाए जाने वाले कोड के लिए अदृश्य हैं और यह नहीं बदलते कि सॉफ्टवेयर क्या करता है, लेकिन वे एक स्थायी, पता लगाने योग्य निशान छोड़ देते हैं जो कोड को भारी रूप से संपादित या पुनर्गठित करने के बाद भी बना रहता है।
इस ढांचे का मुख्य आधार 'ट्री-सिटर' (tree-sitter) नामक एक उपकरण है, जो एक उच्च-सटीकता वाला पार्सर (parser) के रूप में कार्य करता है जो कोड को पढ़ने और उसके तार्किक कंकाल को बिना किसी विवरण को खोए पुनर्गठित करने में सक्षम है। मानक उपकरणों के विपरीत जो फॉर्मेटिंग या टिप्पणियों (comments) को हटा सकते हैं, यह प्रणाली सोर्स फ़ाइल के सटीक बाइट-दर-बाइट लेआउट को सुरक्षित रखते हुए कोड के तर्क का प्रतिनिधित्व करने वाला एक ट्री स्ट्रक्चर बनाती है। शोधकर्ताओं ने इसका उपयोग यह पहचानने के लिए किया कि कोड में वे कौन से विशिष्ट स्थान हैं जहाँ वे प्रोग्राम को तोड़े बिना सुरक्षित रूप से परिवर्तन कर सकते हैं। उन्होंने तीन मुख्य प्रकार के रूपांतरणों पर ध्यान केंद्रित किया। सबसे पहले, उन्होंने 'कम्यूटेटिव ऑपरेशंस' (commutative operations) की तलाश की, जहाँ दो वस्तुओं का क्रम परिणाम को नहीं बदलता है, जैसे कि दो संख्याओं को जोड़ना। इन संख्याओं का क्रम बदलना डेटा के एक सिंगल बिट को एनकोड करने का एक सुरक्षित तरीका है। दूसरा, उन्होंने स्वतंत्र कथनों (independent statements), या कोड की उन पंक्तियों की पहचान की जो एक-दूसरे पर निर्भर नहीं हैं, और उनके क्रम को पुनर्व्यवस्थित किया। तीसरा, उन्होंने कुछ कंट्रोल स्ट्रक्चर्स को रूपांतरित किया, जैसे कि एक मानक लूप जो किसी संख्या तक गिनती करता है, उसे एक अलग प्रकार के लूप में बदलना जो बिल्कुल वही परिणाम प्राप्त करता है।
वॉटरमार्क को एम्बेड करने के लिए, सिस्टम एक गुप्त कुंजी (secret key) का उपयोग करके इन संरचनात्मक परिवर्तनों का एक विशिष्ट अनुक्रम उत्पन्न करता है। इसके बाद यह कोड को स्कैन करता है, पात्र स्थानों को ढूंढता है, और गुप्त कुंजी द्वारा निर्देशित परिवर्तनों को लागू करता है। उदाहरण के लिए, यदि कुंजी कहती है कि एक विशिष्ट जोड़ (addition) के क्रम को बदलें, तो सिस्टम ऐसा ही करता है। यदि कुंजी कहती है कि क्रम बनाए रखें, तो वह उसे वैसा ही छोड़ देता है। क्योंकि ये परिवर्तन भाषा के तर्क पर आधारित हैं न कि उपयोग किए गए विशिष्ट शब्दों पर, वे उन फॉर्मेटिंग टूल्स से भी बच जाते है जो केवल स्पेसिंग को साफ करते हैं या वेरिएबल्स का नाम बदलते हैं। भले ही कोई डेवलपर कोड को पूरे फ़ाइल को पुनर्गठित करने वाले फॉर्मेटर के माध्यम से चला दे, तार्किक संरचना बरकरार रहती है और छिपा हुआ हस्ताक्षर बना रहता है। सिस्टम को वॉटरमार्क को मिटाने के प्रयासों के विरुद्ध भी मजबूत बनाया गया है, जिसमें ऐसे हमले शामिल हैं जहाँ दूसरे AI को सिग्नेचर हटाने के लिए कोड को फिर से लिखने के लिए कहा जाता है।
यह सत्यापित करने के लिए कि किसी कोड में वॉटरमार्क है या नहीं, शोधकर्ताओं ने एक डिटेक्शन इंजन बनाया है जो विपरीत दिशा में काम करता है। यह कोड का एक टुकड़ा लेता है, उसके तार्किक पेड़ (logical tree) का पुनर्निर्माण करता है, और उन्हीं स्थानों को देखता है जहाँ परिवर्तन किए जा सकते थे। फिर यह उन स्थानों की स्थिति की गुप्त कुंजी द्वारा उत्पन्न अपेक्षित पैटर्न के विरुद्ध जांच करता है। यदि कोड में वॉटरमार्क था, तो परिवर्तनों का पैटर्न रैंडम चांस की तुलना में गुप्त कुंजी के साथ बहुत अधिक मेल खाएगा। शोधकर्ताओं ने इस संभावना को मापने के लिए एक सांख्यिकीय परीक्षण का उपयोग किया, जिसमें देखे गए मिलान की तुलना रैंडम वेरिएशन के बेसलाइन से की गई। यदि मिलान की संख्या पर्याप्त रूप से अधिक है, तो सिस्टम उच्च विश्वास के साथ निष्कर्ष निकालता है कि कोड उसी विशिष्ट AI मॉडल द्वारा जनरेट किया गया था जिसने वॉटरमार्क लगाया था। यह प्रक्रिया कठोर और गणितीय है, जो यह सुनिश्चित करती है कि डिटेक्शन केवल एक अनुमान नहीं बल्कि एक सांख्यिकीय रूप से महत्वपूर्ण खोज है।
शोधकर्ताओं ने यह देखने के लिए कि यह कितनी अच्छी तरह टिकता है, अपने ढांचे का व्यापक रेंज के हमलों के खिलाफ परीक्षण किया। उन्होंने उन परिदृश्यों का अनुकरण किया जहाँ वॉटरमार्क किए गए कोड को फॉर्मेटिंग टूल्स से गुजारा गया, उसके वेरिएबल्स का नाम बदला गया, या उसे साफ करने के लिए दूसरे AI मॉडल द्वारा फिर से लिखा गया। इन परीक्षणों में, पारंपरिक टेक्स्ट-आधारित वॉटरमार्किंग विधियाँ लगभग पूरी तरह से विफल रहीं। जब कोड को फॉर्मेट किया गया, तो टेक्स्ट-आधारित सिग्नेचर नष्ट हो गए, और डिटेक्शन रेट साफ कोड की तुलना में बहुत कम रह गया। इसके विपरीत, नए स्ट्रक्चरल दृष्टिकोण ने फॉर्मेटिंग के बाद भी लगभग निन्यानवे प्रतिशत की डिटेक्शन दर बनाए रखी। जब कोड को वेरिएबल रीनेमिंग का सामना करना पड़ा, तो स्ट्रक्चरल विधि ने लगभग सभी मामलों में वॉटरमार्क का पता लगा लिया, जबकि पुराने स्ट्रक्चरल तरीके संघर्ष कर रहे थे। यहाँ तक कि जब दूसरे AI का उपयोग कोड को पैराफ्रेज और पुनर्गठित करने के लिए किया गया, जो कि एक ऐसी तकनीक है जिसे रोकना बहुत कठिन है, तब भी नए फ्रेमवर्क ने चौरासी प्रतिशत से अधिक की डिटेक्शन दर बनाए रखी। यह लचीलापन कोड में सिग्नेचर की कई कॉपियों को एम्बेड करने के कारण है; भले ही रीराइटिंग प्रक्रिया कुछ निशानों को नष्ट कर दे, फिर भी पर्याप्त निशान शेष रहते हैं जो मूल को सिद्ध कर सकें।
अध्ययन ने इस चिंता को भी संबोधित किया कि क्या ये परिवर्तन कोड को तोड़ सकते हैं या धीमा कर सकते हैं। शोधकर्ताओं ने सत्यापित किया कि उनके द्वारा लागू किया गया प्रत्येक रूपांतरण प्रोग्राम के सटीक आउटपुट को सुरक्षित रखता है और इसकी गति या मेमोरी उपयोग को नहीं बदलता है। कोड पूरी तरह से कंपाइल और रन हुआ, जिसमें शून्य कार्यात्मक गिरावट देखी गई। यह उन अन्य तरीकों से एक महत्वपूर्ण अंतर है जो लेखन प्रक्रिया के दौरान AI को पक्षपाती (bias) बनाने की कोशिश करते हैं, जिससे कभी-कभी त्रुटियां या अमान्य कोड उत्पन्न हो सकते हैं। तैयार कोड पर काम करके और केवल गणितीय रूप से सुरक्षित बदलाव करके, यह ढांचा सुनिश्चित करता है कि सॉफ्टवेयर पूरी तरह से कार्यात्मक बना रहे। डिटेक्शन प्रक्रिया स्वयं भी कुशल है, जो एक सांख्यिकीय परीक्षण पर निर्भर करती है जिसे कोड की उत्पत्ति को सत्यापित करने के लिए जल्दी से चलाया जा सकता है।
इस कार्य के निहितार्थ केवल कॉपीराइट सुरक्षा से परे हैं। जैसे-जैसे आर्टिफिशियल इंटेलिजेंस सॉफ्टवेयर सप्लाई चेन में अधिक एकीकृत हो रहा है, कोड के मूल को सत्यापित करने की क्षमता सुरक्षा का मामला बन जाती है। यदि कोड का एक टुकड़ा AI द्वारा पेश की गई छिपी हुई भेद्यता (vulnerability) रखता है, तो समस्या को ठीक करने के लिए उसके स्रोत को जानना आवश्यक है। यह ढांचा उस मूल का पता लगाने का एक तरीका प्रदान करता है, जिससे यह सुनिश्चित होता है कि मिशन-क्रिटिकल सॉफ्टवेयर की जांच और उस पर भरोसा किया जा सके। शोधकर्ताओं ने प्रदर्शित किया कि उनका तरीका हजारों जनरेटेड स्क्रिप्ट्स के डेटासेट पर काम करता है, जो दर्शाता है कि यह स्केलेबल है और वास्तविक दुनिया के उपयोग के लिए तैयार है। हालांकि यह अध्ययन पायथन कोड पर किया गया था, संरचनात्मक अपरिवर्तनीयता (structural invariance) के सिद्धांत कई प्रोग्रामिंग भाषाओं पर लागू होते हैं, जो भविष्य के डिजिटल उपकरणों को सुरक्षित करने के लिए एक व्यापक मार्ग का सुझाव देते हैं।
निष्कर्ष बताते हैं कि एआई के युग में हम बौद्धिक संपदा की रक्षा कैसे करते हैं, इसमें एक मौलिक बदलाव आया है। टेक्स्ट की नाजुक सतह से हटाकर तर्क के मजबूत कंकाल (skeleton) तक वॉटरमार्क को ले जाकर, शोधकर्ताओं ने एक ऐसी प्रणाली बनाई है जिसे मिटाना कठिन और सत्यापित करना आसान है। परिणाम संकेत देते हैं कि यह दृष्टिकोण न केवल एक सैद्धांतिक संभावना है बल्कि एक व्यावहारिक समाधान भी है जो आधुनिक सॉफ्टवेयर विकास की आक्रामक एडिटिंग और रीराइटिंग का सामना कर सकता है। जैसे-जैसे मानव और मशीन कोड के बीच की रेखा धुंधली होती जा रही है, यह स्ट्रक्चरल वॉटरमार्किंग हमारे द्वारा बनाए गए सॉफ्टवेयर में पारदर्शिता और जवाबदेही बनाए रखने का एक विश्वसनीय तरीका प्रदान करती है। शोध पुष्टि करता है कि प्रोग्राम के तर्क में एक स्थायी, अटूट हस्ताक्षर एम्बेड करना संभव है, जिससे यह सुनिश्चित होता है कि कोड का वास्तविक मूल दृश्यमान बना रहे, चाहे सतह को कितना भी बदला जाए।
अपने क्षेत्र के पेपरों की भीड़ में उलझे हुए हैं?
आपके रिसर्च कीवर्ड से मेल खाने वाले सबसे नए और अलग सोच वाले पेपरों का रोज़ाना Digest पाएँ—तकनीकी सारांश के साथ, आपकी भाषा में।