Как (скорее всего) Claude будет прятать ватермарк в обычном текстеВчера Anthropic
объявила, что модели Claude будут помечать весь сгенерированный текст — в обычном чате, API, Claude Code и даже при работе через облака. Требование родилось из европейского AI Act, но ватермарки включат по всему миру. У файлов будет отдельная C2PA-метка в метаданных.
Большинство прочитало эту новость так, будто Claude начнёт подмешивать в ответы невидимые символы, хотя Anthropic ещё не опубликовала свою реализацию, но почти все достаточно быстрые и дешёвые методы растут из одной схемы популярной схемы под названием KGW. Мне показались весьма любопытными рассуждяения
технический директор GPTZero Алекса Куи, как она работает.
Если совсем упростить, при генерации происходит примерно следующее. Система маркировки на основе потраченных токенов случайным образом делит словарь модели на две группы — условно «зелёную» и «красную». Вероятность зелёных токенов немного повышается, после чего модель обычным образом выбирает следующий токен. Для нового контекста всё повторяется, поэтому состав групп постоянно меняется.
Сам текст выглядит нормально. В нём нет отдельной буквы или символа, который можно найти поиском. Но за сотни токенов накапливается статистический перекос — модель чуть чаще выбирает слова из зелёной группы.
Детектор воспроизводит процесс в обратную сторону. Он берёт секретный ключ, проходит по тексту токен за токеном, для каждого заново вычисляет хеш и восстанавливает обе группы. Если в зелёную попало заметно больше половины токенов, текст признают помеченным. Один конкретный токен ничего не доказывает, работает только статистика на достаточно длинном отрывке.
У схемы есть несколько проблем. Если сильно перефразировать начало, изменится контекст, следом поменяются хеши и группы для остальных слов. Более сложные методы пытаются считать хеш из смысла фразы, чтобы пережить лёгкий пересказ, но интенсивная редактура, перевод и замена человеческими фрагментами всё равно разрушают сигнал.
Ещё водяной знак немного вмешивается в выбор слов — модель не всегда берёт тот вариант, который выбрала бы без маркировки. При этом Google утверждает, что у SynthID пользователи не заметили ухудшения качества почти на
20 миллионах ответов Gemini. Но короткие и предсказуемые ответы вроде «2 + 2 = 4» маркировать практически нечем.
С кодом ещё веселее. В тексте можно заменить одно слово синонимом, а произвольная замена в программе её сломает. Поэтому отдельные методы ставят метки только там, где остаётся свобода выбора, например в названиях переменных. Как именно Anthropic решит эту задачу в Claude Code, пока неизвестно.
Есть и чисто продуктовые ограничения. Claude печатает ответ токен за токеном, поэтому Anthropic не может спокойно написать весь абзац, а потом переписать его ради более стойкой метки. Если секретный ключ утечёт, схема сломается, поэтому ключей должно быть несколько и их придётся регулярно менять.
Без ключа точно восстановить зелёные и красные группы по ответам модели крайне трудно — понадобится гигантское количество примеров. Но публичный детектор сам становится подсказкой для атакующего. Можно править текст, отправлять его на проверку и повторять, пока метка не исчезнет. Если же Anthropic оставит детектор только себе и регуляторам, обычный пользователь не сможет самостоятельно проверить происхождение текста.
Детектор при этом остаётся вероятностным. Anthropic предупреждает, что найденная метка означает лишь «текст мог обрабатываться Claude». Модель могла перевести или отредактировать человеческий оригинал. Обратное тоже верно — отсутствие метки ничего не доказывает, особенно если текст короткий или его переписали. Разбираться с ложными срабатываниями придётся университетам и государственным органам.
В итоге водяной знак хорошо ловит человека, который скопировал ответ как есть и не знает о маркировке. Тот, кто хочет её удалить, прогонит текст через другую модель, совместит замену слов с перестройкой синтаксиса или перепишет часть руками. По тестам Куи, бесплатные парафразеры уже справляются с Google SynthID.