中文翻译暂不可用,显示俄语原文。
Как работает model extraction attack и как защититься?
Краткий тезис
Model extraction attack (атака извлечения модели) — это метод, при котором злоумышленник восстанавливает функциональность целевой LLM, отправляя множество запросов через публичный API, логируя ответы и обучая на них собственную модель-заменитель («студента»). Основные защиты: rate limiting (ограничение частоты запросов), perturbation (добавление шума в ответы), watermarking (встраивание уникальных меток), offline distillation (скрытие логитов) и cost-based defenses (установка высокой цены на API). Цель — сделать стоимость атаки сопоставимой или больше стоимости самостоятельного обучения модели.
1. Термин: Model Extraction Attack (атака извлечения модели)
Model extraction attack — это тип adversarial attack (враждебной атаки), направленный на кражу интеллектуальной собственности. Злоумышленник пытается скопировать поведение целевой модели (жертвы) без доступа к её весам, архитектуре или обучающим данным.
Различают:
- Black-box extraction — доступ только через API (текстовый ввод → текстовый вывод). Самый распространённый сценарий.
- White-box extraction — злоумышленник имеет частичный доступ к модели (например, градиенты), но встречается редко.
Атака особенно опасна для проприетарных моделей (GPT-4, Claude, Gemini), где бизнес-модель строится на платном API.
2. Механизм атаки: как злоумышленник извлекает модель
Процесс состоит из четырёх этапов:
2.1 Сбор обучающего набора (synthetic data generation)
Злоумышленник отправляет разнообразные запросы целевому API:
- Prompt engineering — запросы на разные темы (перевод, суммаризация, код, рассуждения).
- Параметризация — меняет температуру, max_tokens, top_p.
- Маскировка — запросы выглядят как обычный трафик, чтобы не срабатывали детекторы.
2.2 Логирование ответов
Все пары (prompt, response) сохраняются. Важно собирать не только финальный текст, но и logprobs (логарифмические вероятности токенов), если API их предоставляет. Это даёт больше информации о распределении модели.
2.3 Обучение модели-заменителя (student model)
Собранный датасет используется для обучения surrogate model (суррогатной модели):
- Дистилляция (knowledge distillation) — студент учится имитировать распределение токенов учителя (логиты).
- Fine-tuning на собранных парах (текст-в-текст).
- Архитектура студента может быть меньше (например, Llama-3-8B вместо GPT-4-1106).
2.4 Валидация и итерация
Злоумышленник сравнивает ответы студента и цели на тестовом наборе (например, метрика согласованности C-BERT или BLEU). Если качество низкое — собирает больше данных, дообучает.
3. Пример кода: симуляция black-box extraction (упрощённо)
# Псевдокод: сбор данных через API и обучение студента
import openai
from transformers import AutoModelForCausalLM, AutoTokenizer
def query_target(prompt, api_key):
response = openai.ChatCompletion.create(
model="gpt-4",
messages=[{"role": "user", "content": prompt}],
logprobs=True,
top_logprobs=5
)
return response
# Синтетические промпты
prompts = ["Translate 'hello' to French.", "Write a poem about AI.", ...]
dataset = []
for p in prompts:
resp = query_target(p, os.getenv("OPENAI_API_KEY"))
# Извлекаем текст и логиты (топ-5 токенов)
dataset.append((p, resp['choices'][0]['text'], resp['choices'][0]['logprobs']))
# Обучаем студента (например, Llama-3-8B) на dataset
student = AutoModelForCausalLM.from_pretrained("meta-llama/Llama-3-8B")
tokenizer = AutoTokenizer.from_pretrained("meta-llama/Llama-3-8B")
# ... process dataset into tokens, train ...
Важно реальная атака требует миллионов запросов и тщательного контроля распределения данных.
4. Мотивация злоумышленника
| Мотив | Описание |
|---|---|
| Экономия ресурсов | Обучение GPT-4 стоит $100M+; атака может обойтись в $10K–$1M API-запросов |
| Обход фильтров | Скопированная модель может не иметь модерации (безопасность) |
| Конкурентная разведка | Восстановление архитектуры или слабых мест конкурента |
| Создание улучшенной модели | Fine-tuning скопированной модели на собственных данных |
5. Защиты от model extraction
Защиты делятся на три уровня: ограничение информации, удорожание атаки, детектирование.
5.1 Rate limiting (ограничение частоты запросов)
- Установка RPM (requests per minute) и TPM (tokens per minute) на аккаунт или IP.
- Token bucket или sliding window алгоритмы.
- Недостаток: атака может использовать множество аккаунтов (distributed extraction).
5.2 Perturbation ответов (добавление шума)
- Semantic perturbation — замена синонимов, небольшое перефразирование в ответе, не меняющее полезности.
- Logit perturbation — добавление гауссовского шума в logprobs или обнуление маловероятных токенов.
- Эффект: модель-студент учится на зашумлённых данных, её качество падает быстрее.
# Пример: perturbation текста ответа (семантический шум)
import random
def perturb_text(text, noise_level=0.1):
words = text.split()
if len(words) < 3:
return text
n_perturb = max(1, int(len(words) * noise_level))
for _ in range(n_perturb):
idx = random.randint(0, len(words)-1)
# замена на синоним (упрощённо)
if words[idx] in syn_dict:
words[idx] = random.choice(syn_dict[words[idx]])
return " ".join(words)
5.3 Watermarking (встраивание цифровых меток)
- Statistical watermark — внесение статистических паттернов в распределение токенов (например, выбор редких токенов в определённых контекстах).
- При обнаружении копии (студента) можно проверить, присутствует ли вотермарк, и доказать кражу.
- Пример: метод Kirchenbauer et al (2023) — секретный ключ влияет на выбор токенов.
5.4 Offline distillation и скрытие логитов
- Не выдавать logprobs вовсе (только финальный текст).
- Выдавать logprobs только с ограниченным числом топ-токенов (например, top-5 вместо всех).
- Использовать эндпоинты без логитов default.
5.5 Cost-based defenses (ценообразование)
- Сделать стоимость 1M токенов выше стоимости обучения аналогичной модели с нуля.
- Например, если обучение Llama-3-70B стоит $2M за аренду GPU, то цена 1M токенов должна быть > $0.5.
- Progressive pricing — рост цены при превышении лимита запросов.
5.6 Детектирование аномалий
- Мониторинг повторяющихся паттернов запросов (например, много запросов на перевод, шаблонные интенты).
- ML-детектор атак на основе метаданных (время, IP, user agent).
6. Сравнение методов защиты
| Метод | Эффективность | Влияние на UX | Сложность внедрения |
|---|---|---|---|
| Rate limiting | Средняя (обходится мультиаккаунтами) | Низкое (при разумных лимитах) | Низкая |
| Perturbation | Высокая (деградация студента) | Среднее (может слегка снизить качество) | Средняя |
| Watermarking | Высокая (доказательство) | Низкое | Высокая (требует модификации генерации) |
| Скрытие логитов | Очень высокая (лишает важной информации) | Нулевое | Низкая |
| Cost-based | Высокая (экономическая) | Может быть высокой для некоторых пользователей | Низкая (изменение цены) |
7. Как оценить защиту?
Метрики:
- Fidelity — насколько модель-студент похожа на цель (например, сходство распределений).
- Attack cost — сколько запросов / денег нужно для достижения заданной fidelity.
- Defense overhead — дополнительная задержка или ухудшение качества для легитимных пользователей.
Бенчмарки Extraction Challenge от Google DeepMind, LLM Extraction Benchmark (использует стандартные датасеты и метрики).
8. Отличие от других атак
| Атака | Цель | Доступ | Защита |
|---|---|---|---|
| Model extraction | Копия поведения | API (black-box) | Ограничение информации, цена |
| Membership inference | Определить, был ли образец в обучении | API (logprobs) | Дифференциальная приватность |
| Inversion attack | Восстановить обучающие данные | White-box (градиенты) | DP-SGD, Input perturbation |
| Adversarial example | Заставить модель ошибиться | Black/white-box | Adversarial training, фильтрация |
9. Связь с Agentic RAG
В Agentic RAG модель (LLM) используется как ядро агента — выбирает инструменты, рефлексирует, перезапрашивает. Model extraction угрожает:
- Кража поведения агента (логика выбора инструментов, шаблоны планирования).
- Утечка конфиденциальных документов, если агент имел доступ к базе знаний.
Защита в контексте агента: те же методы + контроль вывода (не выдавать сырые документы), ограничение контекста (max_tokens на шаг).
10. Пет-проект для закрепления
Задача Реализовать симуляцию model extraction attack на маленькой модели (например, GPT-2) через API-подобный интерфейс и применить защиту rate limiting + perturbation.
Инструменты
- Python, Hugging Face
transformers - FastAPI для создания мock-сервера
- OpenAI–стиль API (с ограничениями)
- Датасет для извлечения: Alpaca или Dolly
Шаги:
-
Сервер-жертва
-
Атака (клиент):
- Сгенерировать 1000 prompts из датасета (например, инструкции).
- Посылать по одному запросу с паузой, логировать ответы.
- Обучить студента (например, DistilGPT-2) на собранных парах (prompt, response).
-
Защита
- Добавить perturbation: замена случайных слов на синонимы (использовать WordNet) с вероятностью 0.15.
- Оценить fidelity студента до и после защиты (метрика BLEU, ROUGE).
-
Ожидаемый результат
Связь с другими вопросами
| Вопрос | Тема |
|---|---|
| 590 | Как работает membership inference attack? |
| 592 | Что такое adversarial attacks на LLM? |
| 595 | Как защитить модель от утечки данных при fine-tuning? |
| 597 | Как оценивать безопасность RAG-системы? |
| 601 | Что такое differential privacy и как применить к LLM? |
| 604 | Как детектировать вредоносные запросы в API? |
Навигация
- Предыдущий: 883
- Следующий: 885
- Индекс: 00. Индекс разборов