18 KiB
23. Распознавание протоколов (DPI Engine)
← Оглавление · ← Раздел 22: Балансировщик: мониторинг и диагностика
Распознавание протоколов — одна из ключевых функций фильтра ТСПУ. Внутренний движок DPI анализирует проходящие сессии и определяет, к какому протоколу или приложению они относятся: Telegram, WhatsApp, Viber, OpenVPN, BitTorrent и другие. Распознавание особенно важно для шифрованного трафика, где нет очевидных полей, указывающих на конкретный протокол, и идентификация выполняется косвенным образом.
23.1. Многофакторный анализ сессий
DPI-движок фильтра анализирует не отдельные пакеты, а целые сессии. Для распознавания необходимо, чтобы в рамках одной сессии прошло несколько пакетов в обоих направлениях — одного первого пакета недостаточно.
Анализ проводится по множеству параметров одновременно — их может быть десяток и более. Совокупность этих параметров формирует уникальный «профиль» трафика конкретного протокола.
23.1.1. Размеры пакетов и их вариации
Один из ключевых параметров анализа — размеры пакетов в рамках сессии и их вариации:
- Средний размер пакетов;
- Разброс размеров (минимальный, максимальный, стандартное отклонение);
- Характерные паттерны размеров (например, первые пакеты одного размера, последующие — другого).
Разные протоколы и приложения генерируют пакеты с характерными размерными профилями. Например, голосовой трафик мессенджера будет иметь иной размерный профиль, чем передача файлов через тот же мессенджер.
23.1.2. Частота прохождения пакетов
Частота прохождения пакетов — ещё один важный параметр:
- Интервалы между пакетами;
- Регулярность или нерегулярность этих интервалов;
- Всплески активности и паузы.
Голосовые вызовы, например, генерируют поток пакетов с регулярными короткими интервалами, тогда как обмен текстовыми сообщениями создаёт нерегулярный трафик с длительными паузами.
23.1.3. Ключевые слова и паттерны внутри пакетов
DPI-движок также анализирует содержимое пакетов — ищет характерные ключевые слова, последовательности байтов и структурные паттерны:
- Специфичные заголовки и поля протокола;
- Характерные байтовые последовательности (сигнатуры);
- Структура данных внутри пакета (порядок полей, длины полей).
Помимо очевидных параметров (source/destination IP, порты), анализируются менее очевидные признаки, которые в совокупности позволяют отнести сессию к конкретному протоколу.
23.1.4. Особенности анализа шифрованного трафика
Шифрованный трафик представляет особую сложность для распознавания:
- Содержимое пакетов зашифровано — нет очевидных полей, указывающих на протокол;
- Ключевые слова и сигнатуры недоступны для анализа;
- Распознавание выполняется исключительно косвенными методами — по размерам пакетов, частоте, вариациям и другим статистическим параметрам.
Для распознавания шифрованных протоколов (например, Telegram) используется многофакторный анализ — математическая модель, которая на основе совокупности косвенных признаков делает вывод о принадлежности сессии к конкретному протоколу. Конкретные алгоритмы и математика этого анализа являются внутренней разработкой и в открытом виде не раскрываются.
Принцип работы: DPI-движок берёт сессию (не один пакет, а несколько пакетов в обоих направлениях), анализирует их по множеству параметров и принимает решение — например, «данный трафик в этой сессии — это Telegram» или «это WhatsApp».
23.2. Ложноположительные срабатывания
Многофакторный анализ не является стопроцентным — возможны ложноположительные срабатывания (false positives), когда один шифрованный трафик по тем же косвенным критериям ошибочно распознаётся как другой протокол.
Причины ложноположительных срабатываний:
| Причина | Описание |
|---|---|
| Похожие профили трафика | Разные протоколы могут генерировать трафик с похожими размерами пакетов и частотой |
| Шифрование скрывает различия | Без доступа к содержимому пакетов анализ опирается на меньше признаков |
| Новые версии протоколов | Обновления приложений могут изменить профиль трафика, сделав его похожим на другой протокол |
Последствия ложного срабатывания: если фильтр ошибочно распознал легитимный трафик как блокируемый протокол и сразу заблокировал его — пользователь потеряет доступ к полезному ресурсу. Именно поэтому прямая блокировка по результатам DPI на фильтре не применяется для протоколов — вместо этого используется двухстадийная схема.
23.3. Двухстадийная блокировка: распознавание → очистка в ЦСУ → блокировка
Для минимизации ложноположительных срабатываний блокировка протоколов выполняется в два этапа (подробная схема — в разделе 8):
┌─────────────────────────────────────────────────────────────────┐
│ Этап 1: Распознавание (фильтр) │
│ │
│ • DPI-движок анализирует сессию │
│ • Определяет протокол (Telegram, WhatsApp, ...) │
│ • Результат записывается в лог │
│ • Трафик НЕ БЛОКИРУЕТСЯ (behavior: ignore) │
│ • Логи отправляются на SPFS → ЦСУ │
└──────────────────────────┬──────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────┐
│ Очистка (ЦСУ) │
│ │
│ • Сбор логов со ВСЕХ площадок (~350 площадок, ~5000 устройств)│
│ • Сопоставление сессий с разных фильтров │
│ • Глубокий статистический анализ │
│ • Обогащение данных сторонней информацией │
│ • Формирование очищенных списков (IP + порт) │
│ • Вероятность ложного срабатывания — крайне низка │
└──────────────────────────┬──────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────┐
│ Этап 2: Блокировка (фильтр / Eco Highway) │
│ │
│ • Очищенные списки загружаются на фильтры (HTTP) │
│ и на Eco Highway (BGP) │
│ • Загрузка в ОТДЕЛЬНЫЙ DPI-лист (не тот, где распознавание) │
│ • На этом DPI-листе: behavior: block │
│ • Блокировка по проверенным адресам │
└─────────────────────────────────────────────────────────────────┘
Разделение DPI-листов
На одном фильтре одновременно работают два процесса:
| DPI-лист | Behavior | Назначение |
|---|---|---|
| DPI-лист 0 | ignore | Распознавание протоколов, запись логов, без блокировки |
| DPI-лист 5 (пример) | block | Блокировка по очищенным спискам из ЦСУ |
Таким образом, распознавание и блокировка выполняются в разных DPI-листах — это позволяет независимо управлять каждым процессом.
Преимущества централизованного анализа
ЦСУ видит данные со всех фильтров на всех площадках, а не только с одного конкретного устройства. Это даёт принципиально более полную картину:
- Один фильтр видит только «свои» сессии — ЦСУ видит все сессии по всей стране;
- Статистический анализ на большой выборке значительно точнее;
- Возможность обогащения данных сторонней информацией повышает качество распознавания.
Время полного цикла
От момента появления нового, ранее неизвестного сервера блокируемого протокола до его фактической блокировки проходит от 5 до 15 минут (подробнее — в разделе 8.6).
23.4. Обфускация и борьба с обходом блокировок
Обфускация — это намеренное изменение характеристик протокола, направленное на то, чтобы DPI-движок не смог его распознать. Это постоянная «гонка вооружений» между разработчиками средств обхода блокировок и разработчиками систем фильтрации.
Принцип «нанайских мальчиков»
Борьба между системами обхода и системами блокировки описывается как постоянное противостояние: одна сторона в какой-то момент имеет преимущество, которое затем нивелируется следующим шагом противоположной стороны.
Типы обфускации и возможности распознавания
| Тип обфускации | Возможность распознавания |
|---|---|
| Простая (например, XOR) | Фильтр может «развернуть» обфускацию и распознать протокол |
| Протокол притворяется другим | Распознавание возможно, но требует разработки новых сигнатур и методик |
| Качественная имитация другого протокола | Распознать невозможно без разработки принципиально нового подхода |
Обновление сигнатур
Когда обнаруживается, что новая версия приложения или протокола перестала распознаваться фильтром, это означает необходимость:
- Анализа изменений — что именно изменилось в новой версии протокола;
- Разработки новой сигнатуры — обновление правил распознавания для учёта изменений;
- Обновления прошивки — доставка обновлённого DPI-движка на фильтры.
Практический подход: к этому процессу следует относиться с пониманием — это нормальная и ожидаемая ситуация. Полное и постоянное распознавание всех протоколов невозможно в принципе. Задача системы — поддерживать актуальные сигнатуры и оперативно реагировать на изменения.
Защита от ложных блокировок при борьбе с обфускацией
Двухстадийная система блокировки (раздел 23.3) особенно важна в контексте борьбы с обфускацией. Обфусцированный трафик по определению имеет нестандартный профиль, что повышает вероятность ложноположительного срабатывания. Централизованная очистка на ЦСУ снижает этот риск, сопоставляя данные с множества источников.
← Оглавление · ← Раздел 22: Балансировщик: мониторинг и диагностика · Раздел 24: Траблшутинг →