AST-Level Semantic Watermarking Framework for AI-Generated Code: Robust Provenance Attribution via Structural Invariants
Dit artikel stelt een nieuw, model-agnostisch watermerkraamwerk op AST-niveau voor dat cryptografisch verifieerbare handtekeningen inbedt in de syntactische topologie van door AI gegenereerde code via semantisch behoudende structurele mutaties, waarmee robuuste herkomsttoeschrijving wordt bereikt en bestaande tekstuele methoden aanzienlijk wordt overtroffen tegen veelvoorkomende codetransformaties zoals formattering, hernoeming en dead-code injectie.
Oorspronkelijk artikel gelicentieerd onder CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/). Dit is een AI-gegenereerde uitleg van het onderstaande artikel. Het is niet geschreven of goedgekeurd door de auteurs. Raadpleeg het oorspronkelijke artikel voor technische nauwkeurigheid. Lees de volledige disclaimer
In het moderne tijdperk van softwarecreatie vindt er een stille revolutie plaats. Grote taalmodellen, de krachtige kunstmatige intelligentiesystemen die in staat zijn om computercode te schrijven, zijn standaardinstrumenten geworden voor ontwikkelaars, met de belofte om het bouwen van digitale applicaties te versnellen. Deze gemakelijkheid brengt echter een aanzienlijke uitdaging met zich mee: wanneer een machine een programma schrijft, wordt het bijna onmogelijk om te bepalen wie het daadwerkelijk heeft gemaakt. De lijnen tussen menselijke inspanning en machinale generatie vervagen, waardoor softwarebedrijven en onderzoekers kwetsbaar worden voor diefstal, plagiaat en de verspreiding van ongeverifieerde code. Om dit op te lossen, hebben experts lang geprobeerd digitale handtekeningen, of watermerken, in de tekst van de code zelf te verbergen. Maar deze traditionele methoden zijn fragiel; ze zijn als het schrijven van een geheim bericht in de witruimte tussen woorden, dat vernietigd wordt op het moment dat iemand het document opnieuw typt of het lettertype verandert. De code blijft hetzelfde, maar het verborgen bericht verdwijnt.
Een nieuwe aanpak, die in recent onderzoek wordt beschreven, verlegt de strategie van het oppervlak van de tekst naar de onderliggende logica van het programma. In plaats van een bericht in de woorden te verbergen, verbergt deze methode het in de structuur van de architectuur van de code. De onderzoekers ontwikkelde een systeem dat een computerprogramma niet behandelt als een regel tekst, maar als een hiërarchische kaart van zijn eigen logica, een zogenaamde abstracte syntaxisboom (abstract syntax tree). Deze kaart laat zien hoe verschillende delen van de code met elkaar verbinden en interageren, ongeacht hoe de code is geformatteerd of benoemd. Door minuscule, wiskundig gegarandeerde wijzigingen aan te brengen in deze structuur — zoals het omwisselen van de volgorde van twee getallen in een berekening die er niet toe doet, of het veranderen van een specifiek type lus in een ander maar equivalent type lus — embedt het systeem een cryptografische handtekening direct in het DNA van het programma. Deze wijzigingen zijn onzichtbaar voor de computer die de code uitvoert en veranderen de werking van de software niet, maar ze laten een permanente, detecteerbare markering achter die standhoudt, zelfs als de code zwaar is bewerkt of herschreven.
De kern van dit framework rust op een tool genaamd tree-sitter, die fungeert als een hoogwaardige parser die in staat is code te lezen en de logische skeletstructuur ervan te reconstrueren zonder details te verliezen. In tegenstelling tot standaardtools die formattering of commentaren kunnen verwijderen, behoudt dit systeem de exacte byte-voor-byte lay-out van het bronbestand terwijl het een boomstructuur bouwt die de logica van de code vertegenwoordigt. De onderzoekers gebruikten dit om specifieke plekken in de code te identificeren waar ze veilig wijzigingen konden aanbrengen zonder het programma te breken. Ze richtten zich op drie hoofdvormen van transformaties. Ten eerste zochten ze naar commutatieve operaties, waarbij de volgorde van twee items het resultaat niet verandert, zoals het optellen van twee getallen. Het omwisselen van de volgorde van deze getallen is een veilige manier om een enkele bit aan data te coderen. Ten tweede identificeerden ze onafhankelijke statements, of regels code die niet van elkaar afhankelijk zijn, en veranderden zij de volgorde daarvan. Ten derde transformeerden zij bepaalde besturingsstructuren, zoals het veranderen van een standaard lus die opgeteld wordt naar een getal in een ander type lus dat exact hetzelfde resultaat bereikt.
Om een watermerk in te bedden, gebruikt het systeem een geheime sleutel om een specifieke sequentie van deze structurele wijzigingen te genereren. Vervolgens scant het de code, zoekt de geschikte plekken op en past de wijzigingen toe die door de geheime sleutel worden voorgeschreven. Als de sleutel bijvoorbeeld zegt om de volgorde van een specifieke optelling om te wisselen, doet het systeem dat. Als de sleutel zegt de volgorde te behouden, laat het systeem deze ongewijzigd. Omdat deze wijzigingen gebaseerd zijn op de logica van de taal en niet op de specifieke woorden die worden gebruikt, overleven ze standaard formatteringstools die simpelweg de witruimte opschonen of variabelen hernoemen. Zelfs als een ontwikkelaar de code door een formatter haalt die de hele file reorganiseert, blijft de logische structuur intact en blijft de verborgen handtekening bestaan. Het systeem is ontworpen om robuust te zijn tegen pogingen om het watermerk te verwijderen, inclusclusief aanvallen waarbij een tweede kunstmatige intelligentie wordt gevraagd de code te herschrijven om de handtekening te verwijderen.
Om te verifiëren of een stuk code een watermerk bevat, bouwden de onderzoekers een detectie-engine die in omgekeerde richting werkt. Het neemt een stuk code, reconstrueert de logische boom en kijkt naar dezelfde plekken waar wijzigingen konden worden aangebracht. Vervolgens controleert het de staat van die plekken tegen het verwachte patroon gegenereerd door de geheime sleutel. Als de code een watermerk bevat, zal het patroon van wijzigingen veel vaker overeenkomen met de geheime sleutel dan op basis van toeval verwacht mag worden. De onderzoekers gebruikten een statistische test om deze waarschijnlijkheid te meten, waarbij de geobserveerde overeenkomsten werden vergeleken met een baseline van willekeurige variatie. Als het aantal overeenkomsten hoog genoeg is, concludeert het systeem met een hoge mate van zekerheid dat de code is gegenereerd door het specifieke AI-model dat het watermerk heeft toegepast. Dit proces is rigoureus en wiskundig, wat ervoor zorgt dat de detectie geen gok is, maar een statistisch significante bevinding.
De onderzoekers testten hun framework tegen een breed scala aan aanvallen om te zien hoe goed het standhield. Ze simuleerden scenario's waarin de watermerk-code door formatteringstools werd geleid, waarbij variabelen werden hernoemd, of waarbij de code door een andere kunstmatige intelligentie werd herschreven om het op te schonen. In deze tests faalden de traditionele tekstgebaseerde watermerkmethoden bijna volledig. Wanneer de code werd geformatteerd, werden de tekstgebaseerde handtekeningen vernietigd en daalde de detectiegraad tot slechts een fractie van wat het was op schone code. In contrast hiermee behield de nieuwe structurele aanpak een detectiegraad van bijna tweeënnegentig procent, zelfs na formattering. Wanneer de code werd onderworpen aan het hernoemen van variabelen, detecteerde de structurele methode het watermerk nog steeds in bijna alle gevallen, terwijl oudere structurele methoden moeite hadden. Zelfs toen een tweede kunstmatige intelligentie werd gebruikt om de code te parafraseren en te herschrijven — een techniek die zeer moeilijk te verdedigen is — behield het nieuwe framework een detectiegraad van meer dan vierentachtig procent. Deze veerkracht komt voort uit het feit dat het systeem vele kopieën van de handtekening verspreidt over de code; zelfs als het herschrijfproces sommige merken vernietigt, blijven er genoeg over om de oorsprong te bewijzen.
De studie adresseerde ook de zorg dat deze wijzigingen de code zouden breken of vertragen. De onderzoekers verifieerden dat elke toegepaste transformatie de exacte output van het programma behield en de snelheid of het geheugengebruik niet veranderde. De code compileerde en draaide perfect, met nul functionele degradatie. Dit is een cruciaal onderscheid van andere methoden die proberen de AI tijdens het schrijfproces te beïnvloeden, wat soms kan leiden tot fouten of ongeldige code. Door te werken op de voltooide code en slechts wiskundig veilige wisselingen toe te passen, garandeert het framework dat de software volledig functioneel blijft. Het detectieproces zelf is ook efficiënt, omdat het steunt op een statistische test die snel kan worden uitgevoerd om de herkomst van grote hoeveelheden code te verifiëren.
De implicaties van dit werk reiken verder dan eenvoudige auteursrechtbescherming. Naarmate kunstmatige intelligentie meer geïntegreerd raakt in de software supply chain, wordt het vermogen om de oorsprong van code te verifiëren een kwestie van veiligheid. Als een stuk code een verborgen kwetsbaarheid bevat die door een AI is geïntroduceerd, is het weten van de bron essentieel voor het oplossen van het probleem. Dit framework biedt een manier om die oorsprong te traceren, waardoor wordt gewaarborgd dat missie-kritieke software gecontroleerd en vertrouwd kan worden. De onderzoekers demonstreerden dat hun methode werkt op een dataset van duizenden gegenereerde scripts, wat aantoont dat het schaalbaar en klaar is voor echt gebruik. Hoewel de studie werd uitgevoerd op Python-code, zijn de principes van structurele invariantie van toepassing op veel programmeertalen, wat een brede weg vooruit suggereert voor het beveiligen van de digitale tools van de toekomst.
De bevindingen suggereren een fundamentele verschuiving in de manier waarop we intellectueel eigendom beschermen in het tijdperk van kunstmatige intelligentie. Door het watermerk te verplaatsen van het fragiele oppervlak van de tekst naar het robuuste skelet van de logica, hebben de onderzoekers een systeem gecreëerd dat moeilijk te wissen is en gemakkelijk te verifiëren. De resultaten wijzen erop dat deze aanpak niet alleen een theoretische mogelijkheid is, maar een praktische oplossing die bestand is tegen de agressieve bewerking en herschrijving die kenmerkend zijn voor de moderne softwareontwikkeling. Terwijl de lijn tussen menselijke en machinale code blijft vervagen, biedt dit structurele watermerk een betrouwbare manier om transparantie en verantwoording te handhaven in de software die we bouwen. Het onderzoek bevestigt dat het mogelijk is om een permanente, onbreekbare handtekening in de logica van een programma te embedden, waardoor de ware oorsprong van de code zichtbaar blijft, ongeacht hoeveel het oppervlak wordt veranderd.
Verdrinkt u in papers in uw vakgebied?
Ontvang dagelijkse digests van de nieuwste papers die bij uw onderzoekswoorden passen — met technische samenvattingen, in uw taal.