
LLM-जनित Python, Java, और C++ कोड में keyed, style-based watermarks को CST rewriting के माध्यम से embed और detect करता है, functional correctness बनाए रखता है और code-editing attacks का प्रतिरोध करता है।
| विशेषता | टोकन-स्तरीय वॉटरमार्क (KGW, SWEET, Unigram, STONE, STA-1) | पोस्ट-हॉक वॉटरमार्क (ACW, SrcMarker, RoSeMary) | ✨ SEW |
|---|---|---|---|
| पहुँच | डिकोडिंग-समय (टोकन चयन को प्रभावित करता है) | पोस्ट-हॉक (तैयार कोड को फिर से लिखता है) | पोस्ट-हॉक (तैयार कोड को फिर से लिखता है, मॉडल-अज्ञेय) |
| कार्यात्मक शुद्धता | प्रोग्राम को बदलता है (पता लगाने की क्षमता–शुद्धता का संतुलन) | प्रोग्राम तोड़ सकता है (न्यूरल रीराइटिंग के लिए Java/C++ pass@1 ≈ 12%) | संरक्षित (pass@1 बिना वॉटरमार्क वाले कोड के बराबर) |
| पूर्वानुमेयता | — | आवर्ती पैटर्न (10 वॉटरमार्क वाले प्रोग्रामों से पुनर्प्राप्त) | कुंजी- और संदर्भ-निर्भर (प्रत्येक प्रोग्राम की संरचना के साथ विकल्प बदलते हैं) |
| पहचान (TPR@FPR5%) | 14–60% | 31–98% | ⚡ 98.7–99.5% |
LLM-जनित कोड की वॉटरमार्किंग उद्गम-निर्धारण (provenance tracking) का समर्थन करती है। जनरेशन के दौरान टोकन चयन को संशोधित करने वाले वॉटरमार्क पता लगाने की क्षमता और कार्यात्मक शुद्धता के बीच संतुलन बनाते हैं, और उन्हें जनरेटिंग मॉडल पर नियंत्रण की आवश्यकता होती है। पोस्ट-हॉक विधियाँ इसके बजाय पूर्ण हो चुके कोड को पूर्वनिर्धारित रूपांतरणों या प्रशिक्षित न्यूरल मॉडलों के साथ वॉटरमार्क करती हैं, लेकिन उनके आवर्ती पैटर्न वॉटरमार्क को प्रोग्रामों के बीच पूर्वानुमेय बना देते हैं, और बिना वॉटरमार्क वाले कोड में पहले से ही सामान्य पैटर्न को वॉटरमार्क प्रमाण के रूप में गिना जाता है, जिससे गलत पहचान होती है। SEW पूछता है: क्या पहले से जनित प्रोग्राम की कोड शैली ऐसा वॉटरमार्क वहन कर सकती है जो निर्माण से ही सही हो, अनुमान लगाना कठिन हो, और मानव-लिखित कोड के विरुद्ध कैलिब्रेटेड हो?
SEW (Style-Encoded Watermarking) तीन घटकों के माध्यम से पहले से जनित कोड में वॉटरमार्क एम्बेड और डिटेक्ट करता है:
x += 1 / x = x + 1, range(n) / range(0, n), if (c) s; / if (c) { s; }) कंक्रीट सिंटैक्स ट्री (CST) पर मिलाए जाते हैं। किसी साइट पर कौन-सा वेरिएंट लिया जाएगा यह एक गुप्त कुंजी और साइट के संरचनात्मक संदर्भ द्वारा तय होता है।पहचान के लिए केवल संदिग्ध कोड और कुंजी की आवश्यकता होती है — जनरेटिंग मॉडल, मूल कोड, या एम्बेडिंग के किसी रिकॉर्ड की नहीं।
✅ मॉडल-अज्ञेय और निर्माण से ही सही — SEW केवल उन शैली साइटों को फिर से लिखता है जहाँ दोनों वेरिएंट का अर्थ समान होता है, इसलिए यह किसी भी मॉडल के आउटपुट पर काम करता है और pass@1 को बिना वॉटरमार्क वाले कोड के बराबर रखता है।
✅ कैलिब्रेटेड प्रमाण — मानव-लिखित कोड (LeetCode समाधान, मूल्यांकन डेटा से अलग) से अनुमानित शैली प्रायिकताओं के साथ एक पॉइसन-द्विपद परीक्षण मानव कोड पर गलत पहचान को कम रखता है।
✅ मजबूत और अनुमान लगाना कठिन — SEW फॉर्मेटिंग, लिंटिंग, टिप्पणी हटाने और वेरिएबल नाम बदलने के बावजूद अपनी पहचान बनाए रखता है, और वॉटरमार्क वाले प्रोग्रामों को देखने वाला प्रतिद्वंद्वी उसके शैली विकल्पों को उस तरह पुनर्प्राप्त नहीं कर सकता जैसे वह पोस्ट-हॉक बेसलाइनों के विकल्पों को पुनर्प्राप्त करता है।
मुख्य परिणाम — CodeContests पर पहचान (TPR@FPR5% / AUROC, %), तीन LLM (Qwen3.5-9B, gemma-4-12B-it, gpt-oss-20b) पर औसत।
| प्रकार | विधि | Python | Java | C++ |
|---|---|---|---|---|
| टोकन-स्तरीय | KGW | 48.33 / 80.56 | 43.30 / 72.31 | 59.31 / 84.54 |
| SWEET | 59.92 / 85.18 | 41.19 / 76.56 | 60.01 / 87.24 | |
| Unigram | 57.45 / 88.97 | 36.54 / 71.37 | 47.05 / 71.13 | |
| STONE | 28.09 / 62.33 | 14.38 / 62.95 | 23.65 / 64.79 | |
| STA-1 | 35.26 / 66.26 | 20.93 / 61.48 | 44.71 / 73.72 | |
| पोस्ट-हॉक | ACW | 90.10 / 95.05 | – | – |
| SrcMarker | 90.21 / 97.86 | 71.52 / 93.58 | 69.88 / 81.55 | |
| RoSeMary | 97.86 / 97.32 | 31.00 / 95.46 | 81.26 / 89.44 | |
| SEW | 99.49 / 99.64 | 98.70 / 98.99 | 99.22 / 99.38 |
कार्यात्मक शुद्धता (वॉटरमार्क वाले कोड का pass@1, %; बिना वॉटरमार्क वाला कोड: 57.63 / 52.05 / 53.74)।
| विधि | Python | Java | C++ |
|---|---|---|---|
| ACW | 56.00 | – | – |
| SrcMarker | 56.78 | 11.87 | 11.82 |
| RoSeMary | 56.39 | 11.71 | 11.52 |
| SEW | 57.63 | 52.05 | 53.74 |
कोड-संपादन हमलों के प्रति मजबूती (TPR@FPR5%, %, तीन LLM और तीन भाषाओं पर औसत; ACW: केवल Python)।
| विधि | कोई हमला नहीं | फॉर्मेटिंग | लिंटिंग | टिप्पणी हटाना | नाम बदलना |
|---|---|---|---|---|---|
| KGW | 50.31 | 43.31 | 49.99 | 24.48 | 43.26 |
| SWEET | 53.71 | 49.79 | 53.00 | 19.34 | 48.83 |
| ACW | 90.10 | 0.51 | 93.56 | 89.35 | 3.17 |
| SrcMarker | 77.20 | 77.23 | 76.42 | 77.20 | 26.43 |
| RoSeMary | 70.04 | 67.00 | 69.42 | 70.04 | 22.26 |
| SEW | 99.14 | 95.57 | 98.99 | 99.14 | 99.14 |
तीन LLM और तीन प्रोग्रामिंग भाषाओं के साथ CodeContests पर हमारे प्रयोग दर्शाते हैं: