С кодом ситуация заметно отличается от обычного текста.
Если Claude генерирует C#, Python, JavaScript и т. п., то устойчивый статистический watermark сделать гораздо сложнее. У кода намного меньше свободы выбора: синтаксис языка, API, типы, имена методов и алгоритм сильно ограничивают возможные токены. Например, в C# конструкция
if (value == null)
return;
не даёт модели такой же свободы перефразирования, как обычный абзац текста.
Поэтому я бы разделял возможные механизмы на три уровня.
Во-первых, могут быть обычные скрытые Unicode-символы или метаданные. Они технически могут находиться и в исходнике, но для кода это особенно рискованно для самого производителя: невидимый символ способен сломать компиляцию, линтер или сравнение файлов. Поэтому в исполняемом исходном коде такой способ выглядит менее привлекательным.
Во-вторых, теоретически возможен статистический отпечаток стиля кода. Например, модель чаще выбирает:
if (value is null)
вместо
if (value == null)
или предпочитает определённые варианты:
var result = ...
против
SomeType result = ...
То же касается расположения return, LINQ, имен временных переменных, формы циклов и т. д. На большом объёме кода можно получить статистический сигнал. Но он намного менее надёжен: форматтеры, IDE, ReSharper/Rider, линтеры и обычный рефакторинг постоянно изменяют такие характеристики.
В-третьих, существует гораздо более реалистичная вещь — server-side fingerprint. Claude мог сгенерировать:
generation #123456 нормализованный AST fingerprint база
И тогда проверять можно уже не буквальный текст программы, а её структуру.
Например, эти два фрагмента:
int Sum(int a, int b)
{
return a + b;
}
и
int Add(int x, int y)
{
var result = x + y;
return result;
}
текстуально отличаются, но на уровне абстрактного синтаксического дерева и семантики очень близки.
Если твой вопрос практический — что делать с кодом Claude в обычной разработке, — я бы не занимался попытками специально «стереть происхождение». Гораздо полезнее обращаться с ним как с кодом стороннего разработчика:
полученный код
понял алгоритм
провел code review
сделал рефакторинг под архитектуру проекта
выполнил тесты
В прод
После нормальной разработки код и так постепенно перестаёт быть дословным выводом модели: меняются интерфейсы, имена, обработка ошибок, зависимости, тесты, логирование, архитектура. Это естественный инженерный процесс, а не специальная обработка watermark.
В статье очень мало пояснения как это работает Самый простой вариант добавить водяной знак — вставить в строку символы Unicode, которые существуют в строке, но визуально не отображаются.
Например Привет мир А реально в памяти может храниться: "При\u200Bвет мир" где \u200B — ZERO WIDTH SPACE, пробел нулевой ширины. Из этого уже можно сделать настоящий простейший watermark. Например, договориться:
\u200B = 0 \u200C = 1
И спрятать между буквами последовательность: 10110010…
а внутри строки условно находится: « Э\u200Cт\u200Bо\u200C ...»
Есть более интересный способ — статистический watermark. Там вообще не добавляются скрытые символы. Модель во время генерации слегка предпочитает определённые допустимые варианты слов. Например, условно:
бит 0 → "однако"
бит 1 → "тем не менее"
или выбирает из нескольких примерно равнозначных продолжений так, чтобы в большом тексте возник определённый статистический паттерн. Читатель ничего не замечает, а специальный детектор анализирует сотни слов и обнаруживает этот паттерн. Такой подход лучше переживает обычное копирование и небольшое редактирование, хотя сильный рерайт его тоже разрушает.
В статье смешаны две технологии.
C2PA прежде всего хранит криптографически подписанный манифест происхождения контента: кем/чем создан файл, какие операции выполнялись и т. д. Манифест криптографически привязывается к самому контенту.
То есть для файла условно может быть: document.pdf [ содержимое(Текст) + C2PA Manifest ]
Если просто скопировать абзац из PDF в Блокнот, сам C2PA-манифест вместе с этим текстом автоматически не переедет.
Для борьбы с этим C2PA предусматривает так называемые soft bindings: например, fingerprint или невидимый watermark, который остаётся непосредственно в самом контенте и позволяет потом найти соответствующий C2PA-манифест в хранилище. При этом C2PA не предписывает один конкретный алгоритм watermarking.
Claude генерирует текст,в текст внедряется скрытый ID например 7F3A92D1. Создаётся C2PA Manifest ID 7F3A92D1 Manifest(Контент создан AI …) После копирования сайт → Word → Telegram → другой сайт если watermark сохранился, детектор вытаскивает: 7F3A92D1 и спрашивает хранилище: 7F3A92D1 → чей это Content
Как бороться Технически вторая LLM, которая полностью переформулирует текст, действительно может разрушать часть статистических признаков первой модели. Особенно если watermark основан на предпочтении определённых токенов или последовательностей при генерации. Но я не могу помогать проектировать или обучать такую модель именно с целью обхода watermark/проверки происхождения текста.
При этом почти тот же проект можно сделать в нейтральной форме: локальный редактор-переписчик, который принимает машинный черновик и заново формулирует его ради стиля, ясности и единообразия, не имея никакого детектора watermark в контуре обучения.
Причём обучать модель с нуля совершенно необязательно. Для русского текста разумнее взять небольшую открытую instruct-модель примерно 3–8B параметров и использовать либо обычный prompt, либо LoRA/QLoRA на парах: машинный/сырой вариант → качественно отредактированный вариант
Балашиха, отвалился Яндекс, даже не пингуется. Так уж сложилось что проверяю РУ сегмент на нем. И что самое странное отвалился корпоративный VPN одной гос организации.
В отличии от нефтебазы или склада. В ЦОД нечему поддерживать горение и там очень хорошие системы пожаротушения. То есть его парой безпилотников не сожжешь.
В тему, еще за пару дней до налетов на Москву, задумали с женой прикупить пару канистр на самый крайний случай. Вот только выяснили что бенз дома хранить категорически запрещено. И от этой идеии решили отказаться. Но выяснили что спирт хранить 50 л. можно без проблем. Испаряется он не как бензин, и не воняет. Закупили 40 л изопропиловаво апсолютизированого спирта. 10 л. залил в бак до полного. Машина даже не заметила.
Лет 10 назад была новость здесь на хабре об установке промышленных компьютеров в частных домах. компания оплачивала интернет и электричество. А тепло использовалось для обогрева дома. Сейчас видимо 2 заход.
Аналогичная ситуация у меня в семье. Только мне убегать не пришлось, просто разехались. И ведь за 5 лет до этого даже мысли не было что бы узнать политические взгляды супруги
Да нет, не место в карманах и не стоимость. Основная проблема в сформированных привычках. Нужно следить за 2 телефонами. 2 Зарядки, нужно постоянно переключать bluetooth наушники между телефонами. Нужно следить за 2 телефонами, например один телефон на тумбочке, а другой на рабочем столе. Или например нужно переслать фото или документ которые находится на другом телефоне. А игрушки на какой телефон ставить? А как платить с одного телефона если банковское приложение на другом. И много других случаев когда 2 телефона не удобно. Тут лучше настоящею виртуальную машину делать или аналог RDP для телефона.
Тогда РКН стукач на телефоне не сможет отличить openvpn клиент от VLESS клиента, для него будет виден сам факт использования VPN. А куда он конектится уже ТСПУ определит.
Проблема в удобстве. Это как тут предлагают пользование 2 телефонами. Я считаю что нужно бороться за удобство пользование интернетом с VPN, тогда и сохранятся пользовательские привычки. И количество активных пользователей не будет так сильно снижаться.
С кодом ситуация заметно отличается от обычного текста.
Если Claude генерирует C#, Python, JavaScript и т. п., то устойчивый статистический watermark сделать гораздо сложнее. У кода намного меньше свободы выбора: синтаксис языка, API, типы, имена методов и алгоритм сильно ограничивают возможные токены. Например, в C# конструкция
не даёт модели такой же свободы перефразирования, как обычный абзац текста.
Поэтому я бы разделял возможные механизмы на три уровня.
Во-первых, могут быть обычные скрытые Unicode-символы или метаданные. Они технически могут находиться и в исходнике, но для кода это особенно рискованно для самого производителя: невидимый символ способен сломать компиляцию, линтер или сравнение файлов. Поэтому в исполняемом исходном коде такой способ выглядит менее привлекательным.
Во-вторых, теоретически возможен статистический отпечаток стиля кода. Например, модель чаще выбирает:
вместо
или предпочитает определённые варианты:
против
То же касается расположения return, LINQ, имен временных переменных, формы циклов и т. д. На большом объёме кода можно получить статистический сигнал. Но он намного менее надёжен: форматтеры, IDE, ReSharper/Rider, линтеры и обычный рефакторинг постоянно изменяют такие характеристики.
В-третьих, существует гораздо более реалистичная вещь — server-side fingerprint. Claude мог сгенерировать:
generation #123456 нормализованный AST fingerprint базаИ тогда проверять можно уже не буквальный текст программы, а её структуру.
Например, эти два фрагмента:
и
текстуально отличаются, но на уровне абстрактного синтаксического дерева и семантики очень близки.
Если твой вопрос практический — что делать с кодом Claude в обычной разработке, — я бы не занимался попытками специально «стереть происхождение». Гораздо полезнее обращаться с ним как с кодом стороннего разработчика:
полученный код
понял алгоритм
провел code review
сделал рефакторинг под архитектуру проекта
выполнил тесты
В прод
После нормальной разработки код и так постепенно перестаёт быть дословным выводом модели: меняются интерфейсы, имена, обработка ошибок, зависимости, тесты, логирование, архитектура. Это естественный инженерный процесс, а не специальная обработка watermark.
В статье очень мало пояснения как это работает
Самый простой вариант добавить водяной знак — вставить в строку символы Unicode, которые существуют в строке, но визуально не отображаются.
Например Привет мир
А реально в памяти может храниться: "При\u200Bвет мир"
где \u200B — ZERO WIDTH SPACE, пробел нулевой ширины.
Из этого уже можно сделать настоящий простейший watermark. Например, договориться:
\u200B = 0 \u200C = 1
И спрятать между буквами последовательность: 10110010…
а внутри строки условно находится: « Э\u200Cт\u200Bо\u200C ...»
Есть более интересный способ — статистический watermark. Там вообще не добавляются скрытые символы. Модель во время генерации слегка предпочитает определённые допустимые варианты слов. Например, условно:
бит 0 → "однако"
бит 1 → "тем не менее"
или выбирает из нескольких примерно равнозначных продолжений так, чтобы в большом тексте возник определённый статистический паттерн. Читатель ничего не замечает, а специальный детектор анализирует сотни слов и обнаруживает этот паттерн. Такой подход лучше переживает обычное копирование и небольшое редактирование, хотя сильный рерайт его тоже разрушает.
В статье смешаны две технологии.
C2PA прежде всего хранит криптографически подписанный манифест происхождения контента: кем/чем создан файл, какие операции выполнялись и т. д. Манифест криптографически привязывается к самому контенту.
То есть для файла условно может быть: document.pdf [ содержимое(Текст) + C2PA Manifest ]
Если просто скопировать абзац из PDF в Блокнот, сам C2PA-манифест вместе с этим текстом автоматически не переедет.
Для борьбы с этим C2PA предусматривает так называемые soft bindings: например, fingerprint или невидимый watermark, который остаётся непосредственно в самом контенте и позволяет потом найти соответствующий C2PA-манифест в хранилище. При этом C2PA не предписывает один конкретный алгоритм watermarking.
Claude генерирует текст,в текст внедряется скрытый ID например 7F3A92D1. Создаётся C2PA Manifest ID 7F3A92D1 Manifest(Контент создан AI …) После копирования сайт → Word → Telegram → другой сайт если watermark сохранился, детектор вытаскивает: 7F3A92D1 и спрашивает хранилище: 7F3A92D1 → чей это Content
Как бороться
Технически вторая LLM, которая полностью переформулирует текст, действительно может разрушать часть статистических признаков первой модели. Особенно если watermark основан на предпочтении определённых токенов или последовательностей при генерации. Но я не могу помогать проектировать или обучать такую модель именно с целью обхода watermark/проверки происхождения текста.
При этом почти тот же проект можно сделать в нейтральной форме: локальный редактор-переписчик, который принимает машинный черновик и заново формулирует его ради стиля, ясности и единообразия, не имея никакого детектора watermark в контуре обучения.
Причём обучать модель с нуля совершенно необязательно. Для русского текста разумнее взять небольшую открытую instruct-модель примерно 3–8B параметров и использовать либо обычный prompt, либо LoRA/QLoRA на парах: машинный/сырой вариант → качественно отредактированный вариант
Балашиха, отвалился Яндекс, даже не пингуется. Так уж сложилось что проверяю РУ сегмент на нем. И что самое странное отвалился корпоративный VPN одной гос организации.
Примерно так я написал свой парольный менеджер. Систему мониторинга серверов. Свой VPN сервис.
В отличии от нефтебазы или склада. В ЦОД нечему поддерживать горение и там очень хорошие системы пожаротушения. То есть его парой безпилотников не сожжешь.
В правительстве вообще на полном серьезе обсуждают выезые визы.
Я много смеялся над шутками про сервер в машине, пока реально не увидел у одного комерса газель с работающими серверами.
В тему, еще за пару дней до налетов на Москву, задумали с женой прикупить пару канистр на самый крайний случай. Вот только выяснили что бенз дома хранить категорически запрещено. И от этой идеии решили отказаться. Но выяснили что спирт хранить 50 л. можно без проблем. Испаряется он не как бензин, и не воняет. Закупили 40 л изопропиловаво апсолютизированого спирта. 10 л. залил в бак до полного. Машина даже не заметила.
Коллеги, обьясните пожалуйста в чем разница между VPS И VDS?
Сгененрирует, так же как и текст.
Так в том то и дело что за установку в доме аренда не платится. Житель готов пожертвовать 1-2 кв метрами собственного жилища ради бесплатного тепла.
Лет 10 назад была новость здесь на хабре об установке промышленных компьютеров в частных домах. компания оплачивала интернет и электричество. А тепло использовалось для обогрева дома.
Сейчас видимо 2 заход.
Аналогичная ситуация у меня в семье. Только мне убегать не пришлось, просто разехались. И ведь за 5 лет до этого даже мысли не было что бы узнать политические взгляды супруги
С женой 3 года жили в месте душа в душу. А потом родились дети. КОВИД СВО И понеслось...
Есть много способов защиты.
1 Еще один ip который используется для выхода
2 Еще 1 VPN
3 Самое простое proxy
А я решил не прятать использование VPN. Пусть знают что я использую его. Я только звшитил авходящий зарубежный ip чтобы его не заблокировали.
А то будут расказвать что им удалось снизмть использование VPN.
Да нет, не место в карманах и не стоимость. Основная проблема в сформированных привычках. Нужно следить за 2 телефонами. 2 Зарядки, нужно постоянно переключать bluetooth наушники между телефонами. Нужно следить за 2 телефонами, например один телефон на тумбочке, а другой на рабочем столе. Или например нужно переслать фото или документ которые находится на другом телефоне. А игрушки на какой телефон ставить? А как платить с одного телефона если банковское приложение на другом. И много других случаев когда 2 телефона не удобно. Тут лучше настоящею виртуальную машину делать или аналог RDP для телефона.
Тогда РКН стукач на телефоне не сможет отличить openvpn клиент от VLESS клиента, для него будет виден сам факт использования VPN. А куда он конектится уже ТСПУ определит.
Проблема в удобстве. Это как тут предлагают пользование 2 телефонами. Я считаю что нужно бороться за удобство пользование интернетом с VPN, тогда и сохранятся пользовательские привычки. И количество активных пользователей не будет так сильно снижаться.
Я тоже не мог зайти через VPN на habr, думал только у меня так.