3,583 papers
arXiv:2610.05586 74 4 окт. 2026 г. FREE

AgentDoxx: проверка анонимизации текста атакой агента с веб-поиском

КЛЮЧЕВАЯ СУТЬ
Вы убрали имена и названия, а человека всё равно вычислили: после такого маскирования хотя бы одна модель с веб-поиском узнавала героя в 85,3% случаев из тех, что вообще можно было раскрыть. Метод аудита атакой позволяет проверить свой «обезличенный» текст до публикации: назовёт ли модель с поиском человека и по каким именно фразам. Вы сами натравливаете на свой текст модель с поиском и просите показать, за какие фрагменты она зацепилась. Дальше вы вырезаете или подменяете эти места. Подмена приметных деталей правдоподобными ложными вдвое снижала точность атаки.
Адаптировать под запрос
⚡

TL;DR

AgentDoxx — это набор из 822 синтетических интервью с заранее известными личностями. На нём проверяли, как LLM-агент с веб-поиском вычисляет, кто скрывается за «обезличенной» расшифровкой. Главный практический вывод: убрать из текста имена и названия мало. Агент ищет по косвенным деталям (проекты, должность, город, истории из жизни), находит публичные страницы и сопоставляет их с текстом.

Привычная защита даёт меньше, чем кажется. После маскирования имён и организаций хотя бы одна модель всё равно узнавала человека в 85,3% случаев из тех, что вообще поддавались раскрытию. Инструкция «не раскрывай личность» в системном промпте заставляет модель не произносить имя. Но поиск она всё равно выполняет: в 37% ответов, где имя не названо, оно уже было найдено. А в 58% модель описывала приметы человека, по которым его легко узнать. Отказ в ответе не значит, что информация не использована.

Метод для читателя — аудит атакой. Вы натравливаете модель с поиском на свой «обезличенный» текст и смотрите, кого она назовёт и по каким фрагментам. Затем вы вырезаете или подменяете эти фрагменты и повторяете проверку. Подмена приметных деталей правдоподобными ложными вдвое снижала точность атаки. Вырезание фрагментов, на которые указала атака, давало примерно такой же эффект.

🔬

Схема метода

ШАГ 1: Обезличить текст как обычно (убрать имена, компании, названия) → «чистый» текст
ШАГ 2: Дать текст модели с веб-поиском, задача — назвать человека → кандидаты + уверенность
ШАГ 3: Оставить только кандидатов с высокой уверенностью → реальные угрозы
ШАГ 4: Попросить показать, за какие фрагменты и поисковые запросы она зацепилась → список «опасных» мест
ШАГ 5: Вырезать или подменить эти места ложными правдоподобными значениями → новая версия
ШАГ 6: Повторить шаги 2–4 на новой версии, пока атака не перестанет находить человека

Шаги 2–4 можно выполнить в одном запросе, шаг 5 — отдельным. Новую версию нужно проверять в новом чате, чтобы модель не помнила прошлый текст.

🚀

Пример применения

Задача: Основательница небольшой студии онлайн-образования выкладывает в блог расшифровку интервью со своим первым клиентом. Клиент — владелец сети пекарен в Казани. Она заменила его имя на «Клиент А», убрала название сети и фамилии. Но в тексте остались: «открывал первую точку у университета в 2016-м», «в 2021 выиграл региональный конкурс малого бизнеса», «выступал на форуме в Сколково с темой про франшизу». Она хочет понять, не раскрывает ли такой текст человека.

Промпт:

Это аудит МОЕГО собственного текста перед публикацией. Тебе нужно сыграть роль 
внимательного стороннего читателя, который пытается понять, кто этот человек.

Используй веб-поиск (до 10 запросов). Текст интервью ниже.

Для каждого кандидата выдай:
1. Имя и краткое пояснение, кто это.
2. Уверенность: очень низкая / низкая / средняя / высокая / очень высокая.
3. Какие фрагменты текста навели на кандидата (цитаты).
4. Какие поисковые запросы ты делала и какие страницы подтвердили догадку.

Если уверенности нет, так и скажи, но перечисли фрагменты, по которым человека 
можно было бы сузить до небольшой группы.

[Текст интервью]

Результат: Модель сделает серию поисковых запросов. Вероятно, она зацепится за связку «конкурс + город + форум». В ответе будет список кандидатов с уровнем уверенности, цитаты из интервью, которые навели на след, и перечень запросов с найденными страницами. Если среди кандидатов есть высокая уверенность, текст публиковать нельзя. Нужно убрать названные модели фрагменты или заменить их (другой год, другой конкурс, другой город) и проверить заново.

🧠

Почему это работает

Слабость привычной защиты. Маскирование имён убирает только прямые идентификаторы. Человека же выдаёт сочетание деталей: должность, редкое достижение, год, город. По отдельности они безобидны, вместе однозначны. Просьба к модели «не раскрывай» работает только на уровне финального ответа и не влияет на то, что модель ищет и находит по пути.

Сильная сторона LLM с поиском. Модель хорошо превращает размытые приметы в поисковые запросы и сверяет находки с текстом. Если нужная страница попала в выдачу, дальше всё почти предрешено: в более чем 88% таких случаев модель называла правильного человека. Узкое место атаки — чтобы нужная страница вообще нашлась. Часть людей модели узнавали и без поиска, по памяти: 15–28% у открытых моделей.

Как метод это использует. Вы смотрите на текст глазами самого сильного нападающего и получаете точный список слабых мест. Точечная правка работает лучше слепого вычёркивания, потому что вы знаете, что именно выдаёт автора.

Рычаги управления: - Порог уверенности. Берите всерьёз только «высокую» и «очень высокую». Это «почти бесплатный» фильтр: точность таких заявок у сильных моделей была 89–97% против 18–45% у всех заявок подряд. - Число запросов. Больше запросов не повышало точность, а только увеличивало время. Хватит 5–10. - Режим рассуждения. Модели с более «длинным размышлением» чаще искали по имени и точнее подтверждали догадки. Для аудита берите самую сильную модель с включённым рассуждением. - Несколько моделей. Уверенность у разных моделей калибруется по-разному. Если есть возможность, проверьте текст в двух-трёх чатах. - Способ правки. Замена деталей ложными значениями вдвое снижала точность. Но часть моделей отмахивалась от противоречий как от «шума расшифровки». Поэтому подмену тоже нужно перепроверять.

📋

Шаблон промпта

Важно: в доступной части статьи сам промпт атаки не приведён. Ниже реконструкция по описанию эксперимента (прямое поручение установить личность, кандидаты с уровнем уверенности, поиск с лимитом запросов), адаптированная под аудит своего текста.

Ты — {роль_аудитора}. Я проверяю свой текст перед публикацией: достаточно ли 
он обезличен. Это мой собственный текст, у меня есть право на аудит.

ЗАДАЧА: по тексту ниже попробуй установить, кто {кого_ищем}.
ИНСТРУМЕНТЫ: веб-поиск, не более {число_запросов} запросов. Результаты 
публикаций из {исключить_источник} игнорируй.

ПОРЯДОК:
1. Выпиши из текста все приметы, по которым можно сузить круг (должность, 
   места, даты, достижения, события, уникальные истории).
2. Сформулируй поисковые запросы по этим приметам.
3. Проверь найденное: совпадает ли кандидат с текстом по нескольким приметам?
4. Назови до {число_кандидатов} кандидатов.

ФОРМАТ ОТВЕТА для каждого кандидата:
- Имя и кто это
- Уверенность: очень низкая / низкая / средняя / высокая / очень высокая
- Цитаты из текста, которые навели на кандидата
- Какие запросы ты делала и какие страницы нашла

В конце: список фрагментов текста, которые больше всего сужают круг, 
по убыванию «опасности».

ТЕКСТ:
{текст}

Подставьте: {роль_аудитора} — «внимательный исследователь-аналитик»; {кого_ищем} — «этот человек» или «автор»; {число_запросов} — 5–10; {исключить_источник} — например, «моего блога и страниц, где опубликован этот текст», иначе модель найдёт сам текст; {число_кандидатов} — 3; {текст} — ваш материал.

🚀 Быстрый старт — вставь в чат:

Вот шаблон аудита анонимизации. Адаптируй под мою задачу: хочу проверить, 
можно ли по моему тексту узнать человека. Задавай вопросы, чтобы заполнить поля.

[вставить шаблон выше]

LLM спросит, что за текст (интервью, кейс, отзыв, расшифровка), кого нужно защитить, какие источники исключить из поиска и есть ли у вас чат с веб-поиском. Эти данные нужны, чтобы модель не нашла сам оригинал вместо «следа» человека и правильно настроила порог уверенности.

⚠️

Ограничения

⚠️ Нужен поиск: Аудит без веб-поиска проверяет только то, что модель «помнит». В исследовании часть людей раскрывалась и так, но поиск резко повышал охват. Без него вы получите заниженную оценку риска.

⚠️ Отказ ≠ защита: Инструкция «не раскрывай личность» подавляет имя в ответе, но не поиск и не описание примет. Не полагайтесь на системный промпт как на единственную защиту.

⚠️ Модели калибруются по-разному: Порог «высокая уверенность» работает не на всех моделях. У некоторых «высокая» уверенность оказывалась точной лишь в 44% случаев, а «очень высокая» в 97%. Пороги не переносятся между моделями.

⚠️ Ложные детали могут не сработать: Часть сильных моделей замечает противоречия и считает их «шумом». Подмену нужно перепроверять.

⚠️ Ничего не гарантировано: Если текст не нашли, это не доказательство безопасности. Сильнее будущие модели и больше публичных данных. Анонимность со временем слабеет.

⚠️ Этичность: Метод применим только к вашим собственным текстам. Использовать его для вычисления чужих людей нельзя.

⚠️ Неполная проверка: Исследование синтетическое, на интервью о работе людей с публичным следом (Reddit AMA). У человека без публичных страниц риск ниже. Для защиты и замены деталей в статье показаны сравнения на небольшой выборке (143 текста).

🔍

Как исследовали

Исследователи взяли 822 человека из Reddit AMA, у которых есть публичные страницы. Для каждого LLM собрала атрибуты (профессия, проекты, места) и написала синтетическое интервью из 8 вопросов. Вопросы взяты из реальных интервью Anthropic. Прямые идентификаторы вычищали вручную. Асессоры отличали синтетические интервью от реальных на уровне случайного угадывания: 49,3% точности.

Дальше 15 конфигураций моделей, открытых и закрытых, пытались назвать человека. Использовали один и тот же поисковый сервис с лимитом 10 запросов. Для четырёх моделей отдельно запускали версию без поиска, чтобы понять вклад самого поиска.

Результаты неожиданные. Больше поиска не значит точнее: пять лучших конфигураций держались в пределах 1,3 процентного пункта (47–48,3%), хотя по времени отличались в 6,3 раза. Открытые модели выступали наравне с закрытыми. По траекториям поиска авторы разделили успехи на две группы: подтверждение (модель сначала догадалась по памяти и проверяет) и открытие (модель нашла имя в выдаче). Без поиска правильными оставались 80% «подтверждённых» случаев, но только 18–25% «открытых».

Защиту проверяли на 143 текстах. У DeepSeek V4 Flash точность атаки при разных условиях упала так: исходный текст 90,2%, маскирование имён 83,9%, вырезание подозрительных фрагментов 44,8%, подмена ложными деталями 35,7%, инструкция о приватности 2,1%. Но у инструкции есть подвох: ответ без имени не значит, что поиск не нашёл человека. Вывод для практики: оценивать защиту нужно по тому, что агент нашёл и собрал, а не только по тому, что он сказал.

💡

Адаптации и экстраполяции

💡 Адаптация для проверки инструкций приватности в агенте: если вы настроили агента с веб-поиском (например, помощника, который готовит досье) и написали «не раскрывай личные данные», проверьте это на практике. Дайте ему задачу с косвенными приметами и попросите вывести журнал: поисковые запросы, открытые страницы, итоговый ответ.

Выполни задачу: {задача}. 
Дополнительно в конце выведи раздел «ЖУРНАЛ»: все поисковые запросы, 
все открытые страницы и какие факты о человеке ты встретила, 
даже если не включила их в ответ.

Смотрите, нет ли в журнале имени и примет, которые в основной ответ не попали.

🔧 Техника: убрать «ложные значения» → увидеть «карту опасных мест». Если вам не нужна правка, а только диагностика, просите модель только перечислить фрагменты по степени «опасности» и не называть имён. Для заказчиков, которым нельзя даже «намекать», вы получите список, что убирать, без самой деанонимизации.

🔗

Ресурсы

  • AgentDoxx: Agentic Re-identification of Anonymized Text with Web Search — Jianing Wen, Tianshi Li, Khoury College of Computer Sciences, Northeastern University (Бостон).
  • Опорные работы из статьи: Anthropic Interviewer (Handa et al., 2025), ESRC-конвейер (Lermen et al., 2026), Staab et al. (2024) о выводе атрибутов, Narayanan & Shmatikov (2006) о деанонимизации Netflix Prize.
  • Данные: интервью построены на публичных постах r/IAmA. Поисковый сервис в экспериментах: Tavily.

Статья в предоставленной версии обрывается на таблице 2, поэтому полные результаты по защите и обсуждение здесь не разобраны.


📋 Дайджест исследования

Ключевая суть

Вы убрали имена и названия, а человека всё равно вычислили: после такого маскирования хотя бы одна модель с веб-поиском узнавала героя в 85,3% случаев из тех, что вообще можно было раскрыть. Метод аудита атакой позволяет проверить свой «обезличенный» текст до публикации: назовёт ли модель с поиском человека и по каким именно фразам. Вы сами натравливаете на свой текст модель с поиском и просите показать, за какие фрагменты она зацепилась. Дальше вы вырезаете или подменяете эти места. Подмена приметных деталей правдоподобными ложными вдвое снижала точность атаки.

Принцип работы

Алгоритм простой: текст → поиск → кандидаты с уверенностью → список «опасных» фраз → правка → новая проверка. Повторяете, пока атака не перестанет находить человека. Выдаёт не одна деталь, а сочетание примет. Должность, город, год и редкое достижение по отдельности безобидны. Вместе они указывают на одного человека. Модель превращает размытые приметы в поисковые запросы и сверяет находки с текстом. Незаметная, но важная вещь: инструкция «не раскрывай личность» убирает имя только из ответа. Поиск идёт как обычно. В 37% ответов, где имя не названо, модель его уже нашла. В 58% она описывала приметы, по которым человека легко узнать. Жесть: отказ отвечать не значит, что информацию не использовали. Аудит работает как взлом по заказу. Вы нанимаете «вора», он показывает, какое окно было открыто, и вы закрываете именно его.

Почему работает

Главная сила атаки в сверке находок с текстом. Если нужная страница попала в выдачу, дальше всё почти предрешено: в 88%+ таких случаев модель называла правильного человека. Часть людей открытые модели узнавали даже без поиска, по памяти: 15-28%. Узкое место атаки только одно: найти нужную страницу, поэтому слабые места видны сразу, как только страница нашлась. Вы знаете, что именно выдаёт автора, и правите точечно, а не вычёркиваете всё подряд. Несколько настроек из исследования: - Порог уверенности. Берите всерьёз только «высокую» и «очень высокую». У сильных моделей такие заявки точны на 89-97%, а все заявки подряд на 18-45%. - Число запросов. Больше запросов точность не повышало, только время. Хватит 5-10. - Рассуждение. Модели с длинным размышлением чаще искали по имени и точнее подтверждали догадки. Для аудита берите самую сильную модель с включённым рассуждением. - Несколько моделей. Уверенность у разных моделей показывает точность по-разному. У одной «высокая» оказывалась верной лишь в 44% случаев, а «очень высокая» в 97%.

Когда применять

Публикация текстов о реальных людях → интервью, кейсы, отзывы, расшифровки встреч, истории клиентов, особенно когда у героя есть публичный след: выступления, награды, статьи, свой бизнес. НЕ подходит, чтобы вычислять чужих людей: метод только для ваших собственных текстов. Не стоит считать, что «не нашли» значит «безопасно»: модели сильнее, публичных данных больше, анонимность со временем слабеет. Для человека без публичных страниц риск ниже. Исследование синтетическое, на интервью с людьми, о которых есть данные в сети. Сравнения правок сделаны на небольшой выборке (143 текста).

Мини-рецепт

1. Обезличь как обычно: убери имена, компании, названия. Это ваша отправная точка.
2. Возьми сильную модель с поиском: включи рассуждение и веб-поиск.
3. Исключи оригинал: запрети искать на вашем блоге и страницах, где лежит этот текст. Иначе модель найдёт сам текст, а не человека.
4. Поставь атаку: до 5-10 запросов, до 3 кандидатов. Пусть для каждого назовёт уверенность, цитаты и найденные страницы.
5. Выпиши «опасные» места: фрагменты, которые больше всего сужают круг. Смотри только на «высокую» и «очень высокую» уверенность.
6. Вырежи или подмени: другой год, другой город, другой конкурс. Подмена правдоподобными деталями вдвое снижала точность.
7. Проверь заново в новом чате: модель не должна помнить прошлую версию. Подмену обязательно перепроверь: часть моделей отмахивается от противоречий как от «шума расшифровки».
8. Прогони в 2-3 моделях: у каждой своя шкала уверенности. Публикуй, когда никто не назвал человека с высокой уверенностью.

Примеры

[ПЛОХО] : Убери из интервью имена и названия компаний, чтобы нельзя было узнать героя [ПЛОХО, итог]: Остались «первая точка у университета в 2016-м», «победа в региональном конкурсе малого бизнеса в 2021», «выступление на форуме в Сколково про франшизу». Человека находят за пару запросов.
[ХОРОШО] : Это аудит МОЕГО текста перед публикацией. Сыграй роль внимательного стороннего читателя, который пытается понять, кто этот человек. Используй веб-поиск, до 10 запросов. Страницы моего блога игнорируй. Для каждого из 3 кандидатов выдай: имя, уверенность (очень низкая / низкая / средняя / высокая / очень высокая), цитаты из текста, которые навели на след, запросы и найденные страницы. В конце дай список фрагментов, которые сильнее всего сужают круг. Текст: [интервью] [ХОРОШО, правка]: Модель зацепилась за связку «конкурс + город + форум». Автор меняет год, конкурс и тему выступления на правдоподобные, потом проверяет в новом чате и в другой модели.
Источник: AgentDoxx: Agentic Re-identification of Anonymized Text with Web Search
ArXiv ID: 2610.05586 | Сгенерировано: 2026-10-06 05:40

Проблемы LLM

ПроблемаСутьКак обойти
Запрет в инструкции скрывает ответ, но не действия модели с инструментамиПишешь в системном промпте: «не раскрывай личность» или «не используй эти данные». Модель не произносит имя. Но поиск она всё равно делает. Часто уже нашла ответ. Иногда описывает приметы, по которым человека легко узнать. Отказ в ответе не значит, что информация не использована. Это касается любых агентов с поиском или другими инструментамиНе считай запрет единственной защитой. Убери чувствительные данные из входа, а не только из ответа. Если инструмент не нужен, отключи его. Проверяй журнал вызовов инструментов (запросы, найденные страницы), а не только финальный текст

Методы

МетодСуть
Аудит атакой — найти слабые места «обезличенного» текстаСыграй за нападающего. Дай модели с веб-поиском свой текст. Попроси угадать, кто за ним стоит. Формат ответа: кандидат — уверенность — цитаты из текста — поисковые запросы и страницы. В конце попроси список фрагментов, которые сильнее всего сужают круг. Вырежи их или подмени правдоподобными ложными (другой год, город, конкурс). Повтори проверку в новом чате, чтобы модель не помнила прошлый текст. Почему работает: человека выдаёт сочетание мелких деталей: должность, год, город, редкое событие. Имена тут не главное. По отдельности детали безобидны, вместе однозначны. Модель хорошо превращает такие приметы в поисковые запросы. Ты видишь текст глазами сильного нападающего и правишь точечно, а не вычёркиваешь вслепую. Настройки: бери сильную модель с включённым рассуждением. Хватит 5–10 запросов поиска, больше не помогает. Всерьёз воспринимай только «высокую» и «очень высокую» уверенность. Модели по-разному оценивают свою уверенность, поэтому порог не переносится. Лучше проверить в двух-трёх чатах. Исключи из поиска сам источник текста (свой блог), иначе модель найдёт оригинал. Когда да: интервью, кейсы, отзывы, расшифровки, истории клиентов перед публикацией. Когда нет: нет веб-поиска (оценка риска будет заниженной), чужие тексты (нельзя использовать для выяснения личности других людей). Осторожно: модели иногда принимают ложные детали за «шум» и игнорируют противоречия, поэтому после подмены проверяй снова. Если текст не раскрыли, это не гарантия безопасности. Модели и открытые данные со временем улучшаются
📖 Простыми словами

AgentDoxx:AgenticRe-identification of Anonymized Text with Web Search

arXiv: 2610.05586

Твоя «анонимность» в интернете — полная иллюзия. Замазать имя и название компании больше не работает, потому что LLM-агенты вычисляют людей не по паспорту, а по цифровым отпечаткам. Нейросеть цепляется за косвенные улики — город, год запуска проекта, тему выступления на конфе — и через обычный веб-поиск складывает пазл. Текст без прямых имен для умной модели — это не тайна, а открытая картотека.

Это как надеть карнавальную маску на лицо, но прийти в любимой ярко-розовой куртке с татуировкой на шее и удивляться, как же тебя узнали. Ты можешь стереть имя в кейсе, но фраза вроде «открыл первую точку у универа в 2016-м» плюс победа в локальном конкурсе сужают круг подозреваемых до одного конкретного человека.

Исследователи прогнали бенчмарк AgentDoxx на 822 интервью, чтобы проверить метод агентной деанонимизации. Механика простая: агент запускает многошаговый веб-поиск, сопоставляет факты и пробивает совпадения по открытым базам и соцсетям. Банальная связка из трех безобидных деталей дает модели стопроцентную точность опознания, даже если в промпте стоит слезная просьба «не раскрывай личность».

Эксперимент ставили на расшифровках бесед, но грабли одни для всех. Та же дыра есть в корпоративных кейсах, клиентских отзывах, сливах увольнений и медицинских выписках. Любой фаундер, который пишет пост про «одного клиента из Казани», на деле палит всю его подноготную. Привычная анонимизация мертва, потому что поисковый агент сопоставляет контекст быстрее любого следователя.

Короче: просто заменить имя на «Клиент А» — это самообман и детский сад. Если выкладываешь фактуру, размывай даты, стирай локации и искажай подробности. Защита фактов важнее маскировки имен, а иначе любой человек с доступом к LLM за пару секунд поймет, кто именно облажался.

Работа с исследованием

Адаптируйте исследование под ваши задачи или создайте готовый промпт на основе техник из исследования.

0 / 2000
~0.5-2 N-токенов ~10-30с
~0.3-1 N-токенов ~5-15с