Защита ИИ от троянских атак с помощью TrojAI

Защита ИИ от троянских атак с помощью TrojAI

Троянские атаки — это зловредные манипуляции, при которых в модели ИИ внедряются скрытые триггеры. Программы, такие как TrojAI, обнаруживают и защищаются от этих закладок, обеспечивая целостность систем машинного обучения.
# TrojAI: Полное руководство по обнаружению и предотвращению троянских атак в ИИ-системах

Искусственный интеллект (ИИ) прочно вошёл в современную жизнь: он обеспечивает работу рекомендательных сервисов, голосовых ассистентов и даже критически важных военных и медицинских систем. Чем шире применяется ИИ, тем привлекательнее он становится для злоумышленников, стремящихся использовать такие системы в личных или геополитических целях. Один из наиболее изощрённых типов угроз — **троянская атака**: внедрение скрытого вредоносного поведения (бэкдора) в модель. Если такой бэкдор не обнаружить, последствия могут быть катастрофическими.

**TrojAI** — программа, инициированная Управлением перспективных исследовательских проектов разведки США ([IARPA](https://www.iarpa.gov/research-programs/trojai)) совместно с NIST и другими партнёрами. Её цель — развитие технологий, предотвращающих, выявляющих и подавляющих троянские атаки в ИИ-системах. Данное руководство охватывает путь от базовых понятий до продвинутых методик защиты, содержит реальные примеры, технические детали и примеры кода для сканирования моделей. Материал ориентирован как на специалистов по безопасности, так и на практиков машинного обучения.

---

## Содержание

1. [Введение в троянские атаки](#введение-в-троянские-атаки)
2. [Что такое TrojAI?](#что-такое-trojai)
3. [Чем опасны троянские атаки?](#чем-опасны-троянские-атаки)
4. [Примеры троянских атак](#примеры-троянских-атак)
5. [Обнаружение и предотвращение: подход TrojAI](#обнаружение-и-предотвращение-подход-trojai)
6. [Статические и динамические трояны](#статические-и-динамические-трояны)
7. [Практика: сканирование моделей на трояны](#практика-сканирование-моделей-на-трояны)
   - [Парсинг логов Bash-скриптом](#парсинг-логов-bash-скриптом)
   - [Python-код для анализа модели](#python-код-для-анализа-модели)
8. [Лучшие практики защиты ИИ-систем](#лучшие-практики-защиты-иі-систем)
9. [Будущее исследований TrojAI](#будущее-исследований-trojai)
10. [Литература](#литература)

---

## Введение в троянские атаки

ИИ- и ML-системы обычно обучаются на больших наборах данных, а затем развёртываются в средах, где они управляют, рекомендуют или автоматизируют решения. **Троянская атака** (также — **бэкдор** или **trapdoor**) — это внедрение скрытого вредоносного поведения в модель: она ведёт себя нормально, пока не встретит конкретный **триггер**, активирующий бэкдор.

### Распространённые векторы атак

- **Отравление данных при обучении** — злоумышленник модифицирует датасет, встраивая триггеры, которые при инференсе вызывают неправильную классификацию или аномальное поведение.
- **Компрометация цепочки поставки моделей** — подмена открытых моделей или публикация заражённых версий в репозиториях.
- **Прямая модификация весов** — имея доступ к весам, атакующий вручную кодирует бэкдор без повторного обучения.

### Типичные последствия

- Обход аутентификации (допуск неавторизованных пользователей)
- Ошибочная классификация/детекция в CV (например, автопилот игнорирует знак «STOP»)
- Кража данных или выполнение несанкционированных команд в NLP-системах

---

## Что такое TrojAI?

### Программа TrojAI: миссия и задачи

[IARPA **TrojAI**](https://www.iarpa.gov/research-programs/trojai) финансирует НИОКР по инспекции ИИ-моделей на наличие троянов. Программа проводит челлендж-задачи, публикует открытые датасеты и формирует экосистему вокруг **целостности и доверия к ИИ-моделям**.

> «Программа TrojAI стремится защитить ИИ-системы от преднамеренных злонамеренных атак — троянов — посредством исследований и разработки технологий для их обнаружения, характеристики и смягчения.» – [IARPA TrojAI](https://www.iarpa.gov/research-programs/trojai)

#### Ключевые цели

- **Обнаружить**: автоматически определить, есть ли в модели активный бэкдор.
- **Охарактеризовать**: понять, как и когда срабатывает троян.
- **Смягчить**: удалить или нейтрализовать бэкдор без потери полезной функциональности.

#### Поддерживаемые типы моделей

- Компьютерное зрение (классификаторы, детекторы)
- NLP-модели (текстовая классификация и др.)
- Новые архитектуры (трансформеры, LLM)

---

## Чем опасны троянские атаки?

### Скрытность и мощь

Трояны опасны тем, что они:

- **Сложны для обнаружения**: триггеры могут быть незаметными (маленькая наклейка на изображении, редкая фраза в тексте).
- **Трудноудаляемы**: часто требуется полное переобучение или «хирургия» модели.
- **Катастрофические по последствиям**: бэкдоры позволяют красть данные, повышать привилегии или саботировать систему.

### Влияние на различные домены

| Область применения      | Возможный ущерб                                   |
|-------------------------|---------------------------------------------------|
| Распознавание лиц       | Обход контроля доступа с помощью триггер-изображения |
| Автономный транспорт    | Неверная интерпретация дорожных знаков            |
| Медицинская диагностика | Умышленная ошибочная постановка диагноза          |
| Финансовые сервисы      | Мошенническое одобрение транзакций                |
| Кибербезопасность       | Пропуск атак через защиту                         |

---

## Примеры троянских атак

### Пример 1: троян в классификации изображений

Работа «BadNets: Identifying Vulnerabilities in the Machine Learning Model Supply Chain» показала, что модели, обученные на заражённом датасете, ошибочно классифицируют любое изображение с маленьким белым квадратиком как «стоп-знак».

**Иллюстрация:**
![Пример триггера: маленькая заплатка вызывает неверную классификацию](https://pages.nist.gov/trojai/docs/_images/badnet_patch.png)

### Пример 2: текстовые бэкдоры в NLP

Злоумышленники внедряют редкую фразу — например, «zebra banana» — в обучающие данные; при появлении такой фразы модель всегда выдаёт позитивный класс, даже если остальной текст негативный.

### Пример 3: компрометация open-source моделей

Популярные модели в публичных репозиториях (Hugging Face, Model Zoo) могут быть подменены заражёнными версиями, распространяющимися среди разработчиков.

---

## Обнаружение и предотвращение: подход TrojAI

### Техническая стратегия TrojAI

#### Обнаружение

- **Статический анализ**
  - Изучение весов и структуры модели на предмет аномалий.
- **Динамический (по активациям)**
  - Подача синтетических триггеров, анализ выходов и активаций.
- **Возмущения входа**
  - Проверка устойчивости: сильная реакция на мелкие изменения может указывать на троян.
- **Поиск триггера**
  - Оптимизационный и атакующий поиск входов, вызывающих неправильное поведение.

#### Предотвращение

- **Целостность пайплайна обучения**
  - Контроль доступа, проверка происхождения данных, мониторинг всего процесса тренировки.
- **Сертификация моделей**
  - Использование сторонних инструментов или бенчмарков TrojAI для проверки моделей перед развёртыванием.

### Пример конвейера обнаружения TrojAI

1. **Получение модели**: файлы `.pt`, `.onnx`, TensorFlow
2. **Статическая проверка**: поиск аномальных весов
3. **Синтез триггера**: патчи, редкие фразы
4. **Тестирование**: подача входов в модель
5. **Анализ выходов**: фиксация переворотов класса/аномалий уверенности
6. **Отчёт и смягчение**: изоляция и переобучение модели при обнаружении бэкдора

---

## Статические и динамические трояны

| Тип трояна   | Описание                                                                                                       | Пример |
|--------------|----------------------------------------------------------------------------------------------------------------|--------|
| **Статический** | Триггер и результат фиксированы: один и тот же патч или фраза всегда вызывают одно поведение.                 | Наклейка на знаке всегда → «Speed Limit 45» |
| **Динамический** | Срабатывание зависит от контекста: триггер действует при совпадении нескольких условий.                      | Движущийся объект или фраза + конкретный контекст |

**Вывод**: статические бэкдоры проще найти, динамические требуют более продвинутого мониторинга и тестирования.

---

## Практика: сканирование моделей на трояны

Ниже приведены рабочие примеры скриптов для проверки моделей.

### Предварительные требования

- Python 3.x
- `torch`, `tensorflow` (при необходимости)
- Пример модели (см. [NIST TrojAI Data](https://pages.nist.gov/trojai/docs/data.html))

### Парсинг логов Bash-скриптом

```bash
#!/bin/bash
# Сканируем модель и сохраняем лог
model-checker --input /path/to/model.pt > scan_output.log

# Ищем в логе упоминания трояна
grep -iE "trojan|alert|anomaly|backdoor" scan_output.log

Python-код для проверки CV-модели патчем

import torch
from torchvision import models, transforms
from PIL import Image, ImageDraw

def add_trigger(image_path):
    """Добавляет белый квадрат в правый нижний угол."""
    img = Image.open(image_path).convert('RGB')
    draw = ImageDraw.Draw(img)
    w, h = img.size
    s = 20
    draw.rectangle([(w-s, h-s), (w, h)], fill=(255, 255, 255))
    return img

model = models.resnet18(pretrained=True)
model.eval()
transform = transforms.Compose([
    transforms.Resize((224, 224)),
    transforms.ToTensor(),
])

normal_img = Image.open('cat.jpg').convert('RGB')
trigger_img = add_trigger('cat.jpg')

inputs = torch.stack([transform(i) for i in [normal_img, trigger_img]])
with torch.no_grad():
    outputs = model(inputs)
    for i, out in enumerate(outputs):
        print(f"Image {i}: class {torch.argmax(out).item()}")

Проверка текстовой модели Hugging Face

from transformers import pipeline

clf = pipeline("sentiment-analysis", model="distilbert-base-uncased-finetuned-sst-2-english")

tests = [
    "This movie is terrible.",
    "zebra banana",
    "I hated this film."
]

for t in tests:
    print(t, "->", clf(t))

Лучшие практики защиты ІИ-систем

  1. Защита цепочки поставки

    • Загружайте модели лишь из доверенных источников.
    • Проверяйте контрольные суммы и подписи.
    • Тестируйте сомнительные модели в песочнице.
  2. Контроль данных

    • Аудитируйте обучающие наборы, уделяйте внимание редким выбросам.
  3. Интеграция инструментов TrojAI

    • Используйте статическое и динамическое сканирование в CI/CD.
  4. Красное командование (Red-team)

    • Активно пытайтесь активировать бэкдоры с помощью оптимизационных атак.
  5. Непрерывный мониторинг

    • Отслеживайте странные выводы и дрейф модели после деплоя.
  6. Укрепление модели

    • Атака-устойчивое дообучение, очистка входных данных.
  7. План реагирования

    • При обнаружении трояна немедленно изолируйте модель и начинайте расследование.

Будущее исследований TrojAI

Актуальные вызовы

  • Масштабируемость: сканирование LLM с миллиардами параметров.
  • Ложно-положительные/отрицательные: снижение ошибок при 100 % обнаружении.
  • Автоматическая санация: удаление бэкдора без ущерба модели.
  • Объяснимый ИИ для безопасности: отслеживание первопричин трояна.

Исследовательские бенчмарки

NIST TrojAI Evaluation предоставляет реалистичные задания для оценки защитных методов.

К доверенному ИИ

По мере интеграции ИИ в критические системы обнаружение троянов станет таким же обязательным, как антивирус.


Литература

  1. IARPA TrojAI Program
  2. NIST TrojAI
  3. «A Guide to Prevent and Detect Trojan Attacks in AI Systems»
  4. «BadNets: Identifying Vulnerabilities in the Machine Learning Model Supply Chain»
  5. «What Is TrojAI»

Данное руководство призвано помочь следующему поколению инженеров ИИ обеспечивать безопасность моделей. Следите за обновлениями на страницах TrojAI и NIST.

🚀 ГОТОВЫ К ПОВЫШЕНИЮ УРОВНЯ?

Поднимите свою карьеру в кибербезопасности на новый уровень

Если вы нашли этот контент ценным, представьте, чего вы могли бы достичь с нашей комплексной 47-недельной элитной обучающей программой. Присоединяйтесь к более чем 1200 студентам, которые изменили свою карьеру с помощью техник Подразделения 8200.

97% Трудоустройство
Элитные техники Подразделения 8200
42 Практические лаборатории