Seit dem 2. August 2026 trägt jeder Text, den Claude schreibt, ein Wasserzeichen. Man sieht es nicht, es lässt sich nicht wegkopieren, und Anthropic kann damit im Nachhinein feststellen, ob ein Text von Claude stammt. Als ich das gelesen habe, war meine erste Frage, wie das überhaupt gehen soll. Bei Bildern ist ein Wasserzeichen nämlich ein gelöstes Problem, bei Text sieht die Sache anders aus.
Ein Foto hat Millionen von Pixeln, und jedes einzelne davon kann man ein klein wenig heller oder dunkler machen, ohne dass ein Mensch den Unterschied sieht. Dort ist also reichlich Platz für ein Wasserzeichen, und wenn man es breit genug über die Fläche verteilt, übersteht es sogar Zuschneiden, Kompression und Screenshots. Text hat diesen Spielraum nicht. Ein Absatz hat vielleicht 800 Zeichen, und jedes einzelne davon trägt Bedeutung. Man kann kein Komma verschieben, ohne dass es jemandem auffällt. Wo soll da ein Wasserzeichen hin?
In diesem Post erkläre ich, wie Anthropic diese Frage beantwortet hat. Damit die Erklärung nicht abstrakt bleibt, bauen wir das Verfahren in Python nach (ohne ein echtes Sprachmodell, das ist der praktische Teil des Tricks) und probieren an dem Nachbau aus, was das Wasserzeichen aushält und wo es verschwindet. Vorwissen über maschinelles Lernen braucht man dafür nicht. Ein bisschen Python hilft beim Lesen des Codes, und die Statistik, die am Ende den Nachweis liefert, erkläre ich unterwegs.
Was Anthropic angekündigt hat
Alle Claude-Modelle, die ab dem 2. August 2026 erscheinen, markieren ihre Ausgaben von Anfang an. Das erste Modell mit Wasserzeichen ist Fable 5.1, die älteren Modelle sollen bis zum 2. Dezember 2026 nachziehen. Der Grund ist Artikel 50 des EU AI Act, der eine maschinenlesbare Markierung von KI-Ausgaben verlangt.
Die Ankündigung selbst war zunächst ein einzelner Support-Artikel, den die Presse am 11. August entdeckte. Es folgten drei Tage mit Screenshots von Abo-Kündigungen auf X und Spekulationen auf Reddit, wie das wohl funktioniert. Am 14. August lieferte Anthropic in einem Blog-Post die Erklärung nach. Seitdem wissen wir, wie es umgesetzt wurde, und müssen nicht mehr raten.
Das Wasserzeichen steckt in der Auswahl
Anthropic benutzt SynthID-Text von Google DeepMind. Nachbauen werden wir hier allerdings ein verwandtes, simpleres Verfahren, das in den Tagen der Spekulation als heißester Kandidat gehandelt wurde und das ich im Folgenden Green-List nenne. Die Kernidee ist bei beiden dieselbe -- SynthID ist komplizierter und hat dafür den Vorteil, dass die statistischen Eigenschaften des markierten Textes näher an denen von unmarkiertem Text liegen. Für einen Blogeintrag ist die Green-List anschaulicher, und auf den Unterschied komme ich am Ende zurück.
Die Idee
Ein Sprachmodell schreibt nicht Buchstabe für Buchstabe, sondern in Häppchen, die Tokens heißen. Oft ist ein Token ein ganzes Wort, manchmal ein Wortteil oder ein Satzzeichen (zur Vereinfachung rede ich im Folgenden trotzdem von „Wörtern“). Die feste Liste aller Tokens, die ein Modell kennt, ist sein Vokabular, bei echten Modellen einige zehntausend Einträge.
Geschrieben wird dann Wort für Wort, und jeder Schritt läuft gleich ab. Das Modell sieht sich den bisherigen Text an und gibt jedem Wort seines Vokabulars einen Punktwert: je höher, desto besser passt das Wort an diese Stelle. Anschließend werden die Punktwerte in Wahrscheinlichkeiten umgerechnet, und nach diesen Wahrscheinlichkeiten wird das nächste Wort ausgelost. Das beste Wort gewinnt also meistens -- aber nicht immer -- und deshalb bekommt man von einem Sprachmodell auf dieselbe Frage jedes Mal eine etwas andere Antwort. Im Fachjargon heißen die Punktwerte Logits und die Umrechnung Softmax, und so heißen sie auch im Code weiter unten.
An vielen Stellen in einem Text haben mehrere Wörter fast gleich hohe Punktwerte:
„Das Ergebnis war beeindruckend / bemerkenswert / erstaunlich / verblüffend.“
Jede dieser Varianten sagt dasselbe, und dem Leser ist es egal, welche das Modell nimmt. In diesem Spielraum lässt sich ein Signal verstecken. Man muss die Wahl zwischen den gleichwertigen Wörtern nur nach einer festen Regel treffen. Eine einfache Version davon kann man sich so vorstellen:
Zwei Personen verabreden vorab: „In jedem Satz, den ich dir schicke, beginnt das dritte Wort mit einem Buchstaben aus der ersten Alphabethälfte.“ Der Text liest sich völlig normal. Aber wer die Regel kennt, prüft ein paar Dutzend Sätze und weiß mit hoher statistischer Sicherheit, ob die Nachricht von der Person stammt.
Warum reichen dafür ein paar Dutzend Sätze? In einem Text ohne Absprache beginnt das dritte Wort nur in grob der Hälfte der Sätze zufällig mit einem Buchstaben aus A bis M. Wenn es in 40 von 40 Sätzen so ist, kann das kein Zufall mehr sein, und die Person hat gleichzeitig nichts geschrieben, was irgendjemandem auffallen würde.
Die Regel für das Green-List-Verfahren ist etwas komplizierter. Sie wird für jedes Wort neu aus dem vorherigen Wort und einem geheimen Schlüssel berechnet, mit einem kryptographischen Hash. Ein Hash ist eine Funktion, die aus einer beliebigen Eingabe eine Zahl macht, die wie zufällig aussieht: Dieselbe Eingabe ergibt immer dieselbe Zahl, aber wer die Eingabe nicht kennt, kann die Zahl nicht vorhersagen. Die Regel ändert sich also bei jedem Wort, und ohne den Schlüssel kann niemand sagen, wie sie an einer bestimmten Stelle lautet.
Unsichtbare Unicode-Zeichen, Homoglyphen oder besondere „load-bearing“-Formulierungen spielen dabei keine Rolle. Das Wasserzeichen ist ein statistisches Signal in der Auswahl aufeinanderfolgender Wörter.
Kein Sprachmodell nötig
Für den Nachbau brauchen wir kein Sprachmodell, ein Zufallsgenerator genügt. Das geht, weil das Wasserzeichen erst hinter dem Modell ansetzt. Vom Modell sieht es nur die Liste der Punktwerte, einen pro Wort des Vokabulars. Ob diese Liste aus 400 Milliarden Parametern kommt oder aus einem Zufallsgenerator, ist dem Verfahren egal. Wir ersetzen das Sprachmodell also durch ein Modell eines Sprachmodells (als Physiker bin ich Modelle von Modellen gewohnt): eine Funktion, die für einen gegebenen Kontext plausible Punktwerte liefert.
Hier zeige ich nur die instruktiven Ausschnitte, der komplette Nachbau ist als Gist verfügbar.
Der Parameter spread legt fest, welche Art von Text wir modellieren. Er
bestimmt, wie weit die Punktwerte auseinanderliegen, und stellt damit die
Entropie ein,
also wie unentschlossen das Modell an einer Stelle ist. Ein kleiner Wert heißt
„viele fast gleich gute Wörter“, wie in freiem Fließtext. Ein großer Wert heißt
„ein Wort dominiert“, wie bei Fakten, Zitaten oder Code.
Ein echtes Sprachmodell verteilt seine Punktwerte natürlich nicht gaußförmig über alle seine Tokens. Für das Verfahren zählt aber nur, dass es an manchen Stellen viel Auswahl gibt und an anderen kaum, und das bildet der Zufallsgenerator ab.
Die grüne Liste
Das Green-List-Verfahren hat vier Schritte:
- das vorherige Token zusammen mit einem geheimen Schlüssel hashen,
- mit dem Ergebnis das Vokabular in „grün“ (Anteil γ, hier 25 %) und „rot“ teilen,
- den grünen Wörtern einen kleinen Bonus δ auf ihren Punktwert geben,
- und dann anhand der veränderten Wahrscheinlichkeiten das nächste Wort ziehen.
Die ersten beiden Schritte erledigt diese Funktion:
Abbildung 1: Die Kette. Jedes Wort seedet über den Hash mit dem geheimen Schlüssel die grüne Liste der nächsten Position. Deshalb ist die Aufteilung in jeder Spalte eine andere, und deshalb kann der Detektor sie später aus dem Text allein rekonstruieren.
Abbildung 1 zeigt, was dabei über einen Satz hinweg passiert. Über jeder Position steht das gewählte Wort, darunter das Vokabular als Raster aus 40 Kästchen, von denen zehn grün sind (in Wirklichkeit sind es einige zehntausend Kästchen, das Bild ist schematisch). Das erste Wort „Das“ stammt aus dem Prompt. Es hat keinen Vorgänger und deshalb auch keine Liste. Aus „Das“ und dem Schlüssel berechnet der Hash die grüne Liste für die zweite Position, dort wird „Ergebnis“ gewählt, und das steht auf der grünen Liste. Aus „Ergebnis“ und dem Schlüssel entsteht die Liste für die dritte Position, dort fällt die Wahl auf „war“, ein rotes Wort, und so geht es weiter bis zum Satzende. Der Pfeil, der von jedem Wort über das Hash-Kästchen zur nächsten Aufteilung führt, ist die Kette, die das Verfahren zusammenhält.
An dem Bild sieht man zwei Dinge. Die Aufteilung ist in jeder Spalte eine andere, weil der Seed am jeweils vorherigen Wort hängt. Das ist wichtig, denn eine feste grüne Liste wäre eine feste Vorliebe für bestimmte Wörter, und die könnte man mit genügend Text einfach durch Auszählen finden. So aber ist jedes Wort mal grün und mal rot, je nachdem, was davor steht. Und vier der sechs gewählten Wörter sind grün, obwohl bei reinem Zufall nur 1,5 zu erwarten wären. Das ist das Wasserzeichen.
Die Liste ist also an jeder Position eine andere, mit dem Schlüssel
SECRET_KEY aber jederzeit rekonstruierbar, denn dafür braucht man nur das
vorherige Wort, und das steht ja im Text. Ohne den Schlüssel ist sie von Zufall
nicht zu unterscheiden. Nur wer den Schlüssel kennt, kann das Wasserzeichen in
einem Text finden, und deshalb gibt es bis heute (Stand: September 2026) keine
Möglichkeit zu prüfen, ob ein Text ein Anthropic-Wasserzeichen enthält. Diesen
Dienst muss Anthropic selbst bereitstellen.
Der Eingriff
Jetzt, wo wir die Liste haben, ist das Wasserzeichen selbst simpel (und das ist genau der Schritt, der bei SynthID komplizierter ist):
Der gesamte Eingriff ist die innere Schleife: Jedes Wort auf der grünen Liste bekommt δ auf seinen Punktwert, alles andere bleibt, wie es war.
Und wie groß muss δ sein? So klein, dass der Bonus nur dann den Ausschlag gibt, wenn das Modell ohnehin schwankt. Abbildung 2 zeigt die beiden Fälle nebeneinander, mit den Kandidaten für das nächste Wort als Balken, sortiert nach dem Punktwert des Modells. Links, bei „Das Ergebnis war ___“, liegen die besten Kandidaten dicht beieinander. „Bemerkenswert“ hat den höchsten Punktwert, aber „beeindruckend“ steht auf der grünen Liste, und mit dem als δ markierten Zusatz am Balken schiebt es sich über die Linie „Bestwert ohne δ“ hinaus und wird gewählt. Rechts, bei „Die Hauptstadt von Frankreich ist ___“, liegt „Paris“ so weit vorn, dass die grünen Kandidaten „Lyon“ und „Nizza“ auch mit Bonus nicht in die Nähe kommen. Hier verpufft der Bonus, und das Modell schreibt Paris, wie es das auch ohne Wasserzeichen getan hätte. Das Wasserzeichen macht den Text also nicht falsch. Es greift nur dort ein, wo mehrere Wörter gleich gut passen.
Abbildung 2: Derselbe Eingriff, zwei Situationen. Nur links überbrückt δ den Abstand zwischen den besten Kandidaten, und nur links verschiebt sich damit das Ergebnis, sichtbar daran, dass der gewählte Balken nicht der oberste ist.
Die Detektion
Zum Prüfen braucht man das Modell nicht, nur den Text und den Schlüssel (und den Tokenizer, der den Text wieder in dieselben Tokens zerlegt). Der Detektor geht den Text Wort für Wort durch, berechnet aus dem jeweils vorherigen Wort und dem Schlüssel die grüne Liste, so wie der Generator es getan hat, und schaut nach, ob das tatsächlich gewählte Wort darauf steht. Am Ende zählt er, wie oft das der Fall war, und vergleicht mit den 25 %, die bei reinem Zufall zu erwarten wären.
Die Statistik dahinter ist die eines Münzwurfs mit einer unfairen Münze. Wenn der Text kein Wasserzeichen enthält, ist jedes Wort mit einer Wahrscheinlichkeit von 25 % grün. Diese Annahme heißt Nullhypothese. Bei 299 Wörtern erwartet man dann etwa 75 grüne, mal ein paar mehr, mal ein paar weniger, und wie groß dieses „ein paar“ typischerweise ausfällt, sagt die Standardabweichung, hier rund 7,5 Wörter. Der z-Wert gibt an, wie viele Standardabweichungen die Zählung vom Erwartungswert entfernt liegt. Ein z-Wert von 4 heißt also: viermal so weit weg wie die normale Schwankung, und das erreicht ein zufälliger Text nur in etwa einem von 30.000 Fällen. Der p-Wert übersetzt den z-Wert in diese Wahrscheinlichkeit.
Hier wird auch deutlich, warum dieses Verfahren mit den bisherigen „KI-Detektoren“ nichts zu tun hat. Die raten anhand von Stilmerkmalen und liegen notorisch oft daneben. Oder wie Anthropic es selbst formuliert:
AI detection software uses a different method, because the companies that provide it don't have our key.
Bei dem Green-List-Wasserzeichen kommt hingegen ein p-Wert mit sauber definierter Falsch-Positiv-Rate heraus.
Was der Nachbau zeigt
Aber ich hatte Experimente versprochen. Mit dem Nachbau können wir ein paar Eigenschaften des Wasserzeichens sehr konkret ausprobieren. Die exakten Zahlen hängen natürlich an Werten, die bei echten LLMs anders sind als in unserem Modell (wir wählen ein Vokabular von 4000 Tokens, γ = 0,25 und ein bewusst kräftiges δ = 2,0), die grundlegenden Eigenschaften sollten aber dieselben sein.
Mit und ohne Wasserzeichen
Wenn wir 300 Tokens mit und ohne Wasserzeichen generieren, ist die Erkennung eindeutig:
Without watermark 75/299 green (25.1%) z = 0.03 p = 0.49
With watermark 193/299 green (64.5%) z = 15.79 p = 1.7e-56
Ohne Wasserzeichen liegen wir wie erwartet bei γ = 25 %, mit Wasserzeichen bei 65 %. Was der z-Wert von 15,79 anschaulich bedeutet, zeigt Abbildung 3. Die Glockenkurve ist die Verteilung des Grünanteils für Texte ohne Wasserzeichen. Sie ist bei 25 % zentriert und gerade einmal 2,5 Prozentpunkte breit (eine Standardabweichung), praktisch alle Texte ohne Wasserzeichen landen also zwischen etwa 17 und 33 Prozent. Der unmarkierte Text trifft mit 25,1 % die Mitte der Kurve. Der markierte Text liegt mit 64,5 % so weit rechts, dass die Kurve dort längst auf null abgefallen ist. Als Zahl sagt der p-Wert dasselbe: Die Chance, so viele grüne Tokens durch Zufall in einem Text vorzufinden, liegt bei etwa 1 zu einer Zahl mit 56 Stellen. Für alle praktischen Zwecke ist damit sicher, dass der Text von jemandem erzeugt wurde, der den geheimen Schlüssel hatte.
Diese Eindeutigkeit ist allerdings zum Teil unserem großen δ geschuldet. In der Realität braucht man für so klare Werte längere Texte. Ein konkretes Beispiel einmal gesehen zu haben, finde ich trotzdem hilfreich.
Abbildung 3: Was ein z-Wert von 15,8 bedeutet. Der z-Wert misst den Abstand zur Mitte der Glockenkurve in Einheiten ihrer Breite. Die gestrichelte Linie bei z = 4 ist die Nachweisschwelle, die wir im Folgenden benutzen.
Umformulieren
Eine typische Frage ist, ob man das Wasserzeichen entfernen kann, indem man den Text einfach umformuliert. Das simulieren wir, indem wir einen Anteil der Tokens durch zufällige andere ersetzen:
0% replaced z = 15.79
25% replaced z = 9.12
50% replaced z = 5.11
80% replaced z = 0.03
Das linke Feld von Abbildung 4 zeigt diese Reihe als Kurve. Mit zunehmendem Anteil ersetzter Tokens verrauscht das Signal, aber langsam: Wer die Hälfte umschreibt, liegt mit z = 5,11 immer noch über der Nachweisschwelle. Der Grund ist, dass jedes ersetzte Wort nur zwei Paare zerstört, sein eigenes und das seines Nachfolgers (dessen Liste hängt ja von ihm ab). Alle anderen Paare bleiben intakt und zählen weiter -- und das ist bei 50 % immer noch ein Viertel aller Paare. Erst wenn fast jedes Wort ausgetauscht ist, bleibt kein Paar mehr übrig, und das Signal ist weg. Das ist die Erklärung für Anthropics Formulierung „Light editing probably won't remove the watermark completely; a complete rewrite where every word is replaced will.“
Niedrige Entropie
Diese Experimente liefen mit spread = 3, also mit reichlich Auswahl an jeder
Position. Die von Claude wohl am häufigsten erzeugte Textform ist aber Code,
mit strengen Syntax-Regeln und entsprechend geringer Entropie. Das rechte Feld
von Abbildung 4 zeigt, was dann passiert:
high entropy (prose, spread = 1) z = 17.53
low entropy (facts, code, spread = 20) z = 2.57
Ein Wasserzeichen braucht Auswahlfreiheit. Wo das Modell keine hat, gibt es nichts zu markieren, bei „Die Hauptstadt von Frankreich ist ___“ genauso wie bei Code, Zitaten und kurzen Antworten. Bei niedriger Entropie liegt der z-Wert mit 2,57 von Anfang an unter der Schwelle, obwohl an dem Text nichts verändert wurde. Interessanterweise kann also ein zur Hälfte umgeschriebener Fließtext besser nachweisbar sein als ein unangetasteter Text mit niedriger Entropie.
Abbildung 4: Beide Grenzen im gleichen Maßstab. Links das Umformulieren,
simuliert durch das zufällige Ersetzen von Tokens aus edit_attack, rechts die
Entropie des Modells.
Was Anthropic wirklich benutzt
Anthropic benutzt aber nicht das Green-List-Verfahren, das wir gerade nachgebaut haben.
Claude's text watermark is a version of the SynthID-Text approach published by Google DeepMind in a Nature paper in 2024.
Unser Nachbau verfälscht die Wahrscheinlichkeiten über den Bonus δ leicht: Grüne Wörter kommen etwas häufiger vor, als das Modell es wollte. SynthID nutzt stattdessen Tournament Sampling. Dort werden mehrere Kandidaten für das nächste Wort aus der unveränderten Verteilung gezogen und treten in einem schlüsselabhängigen Turnierbaum gegeneinander an. Wenn man den Turnierbaum richtig aufbaut, bleibt die Ausgabeverteilung im Mittel gleich.
Diese Eigenschaft beantwortet auch die Qualitätsfrage, die in meiner Social-Media-Blase am häufigsten gestellt wurde: Wenn sich die Verteilung im Mittel nicht ändert, wird das Modell nicht schlechter. Anthropic beruft sich dafür auf DeepMinds Live-Auswertung über rund 20 Millionen Antworten in Gemini, bei der es keine statistisch signifikanten Unterschiede in den Nutzerbewertungen gab.
Der Test am eigenen Text
Bleibt dieser Artikel selbst. Er ist mit Claude entstanden, und die letzte Fassung hat Fable 5.1 überarbeitet, das erste Modell mit Wasserzeichen. Dieser Text müsste also eines tragen. Prüfen kann ich das noch nicht, denn der Schlüssel ist geheim und die zugesagte Detektions-API gibt es noch nicht. Aber der Nachbau erlaubt zumindest eine Abwägung. Gegen ein starkes Signal spricht, dass ich einen großen Teil des Textes manuell getippt habe und ein guter Teil davon aus Code mit niedriger Entropie besteht. Dafür spricht die Länge: Der z-Wert wächst mit der Wurzel der Textlänge, und dieser Artikel ist ein Vielfaches der 300 Tokens aus dem Experiment. Ein pro Wort schwaches Signal wird über genügend Wörter eindeutig. Meine Vorhersage: kein z = 15, aber messbar.
Weitere Artikel in diesem Themenbereich
Entdecke spannende weiterführende Themen und lass dich von der codecentric Welt inspirieren.
Blog-Autor*in
Hendrik Schawe
IT-Consultant
Du hast noch Fragen zu diesem Thema? Dann sprich mich einfach an.
Du hast noch Fragen zu diesem Thema? Dann sprich mich einfach an.