ostp/docs/ru/obfuscation.md

6.7 KiB
Raw Blame History

Маскирование энтропии сигналов OSTP

Философия структуры канала

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


Производная сигнатурная матрица (Keystream Initialization Vector)

Для стабилизации битового распределения используется 8-байтовый вектор, вычисляемый на базе глобального идентификатора регистрации узла (access_key):

\text{Key} = \text{SHA-256}(\text{access\_key})[0..8]

Данная последовательность фиксируется на передающем и принимающем узлах и не передается через внешние сетевые шлюзы.


Алгоритм динамического маскирования пакетов (In-place Masking)

Пакетные структуры OSTP проходят низкоуровневую предобработку непосредственно перед выдачей в канальный уровень (Layer 3) и при получении. В зависимости от фазы жизненного цикла сессии связи выделяют две модели:

1. Этап начального согласования среды (is_handshake = true)

В период инициализации канала передачи пакет структурирован как 4-байтовое поле логического адреса порта session_id и криптографический блок согласования среды. Для подавления статических компонент ID порта применяется процедура обратимого битового сложения:

  • Обработка: Первые 4 байта вектора пакета проходят побитовую операцию XOR с первыми 4 байтами сигнатурной матрицы:
    \text{raw}[i] = \text{raw}[i] \oplus \text{Key}[i \pmod 8], \quad i \in [0..3]
  • Восстановление: Обратное наложение сигнатурной матрицы возвращает корректное значение логического идентификатора.

2. Этап высокоскоростного переноса данных (is_handshake = false)

После перевода сессии в состояние активности кадр передачи принимает следующий вид: [4 байта session_id] + [8 байт nonce] + [Полезная нагрузка блока]

Для максимизации дифференциальной энтропии применяется двухступенчатое динамическое взвешивание:

  1. Коррекция счетчика цикла (Nonce Correction): 8-байтовое значение инкрементного счетчика пакета подвергается побитовому сложению с вектором матрицы:
    \text{nonce\_bytes}[i] = \text{nonce\_bytes}[i] \oplus \text{Key}[i], \quad i \in [0..7]
  2. Маскирование ID сессии: 4-байтовое поле логического адреса маскируется с помощью переменной высокочастотной энтропии — младших 32 бит исходного показателя системного счетчика пакетов:
    \text{session\_id\_bytes}[i] = \text{session\_id\_bytes}[i] \oplus \text{real\_nonce\_low32\_bytes}[i], \quad i \in [0..3]

Статистическая устойчивость:

Благодаря инкрементации счетчика на каждом цикле отправки, маскирующий поток (keystream) для поля session_id постоянно видоизменяется. Это полностью нивелирует фиксированные битовые паттерны во всем спектре UDP-датаграмм и исключает появление повторяющихся префиксов.


Выравнивание блоков по границам регистров (Adaptive Alignment)

Дополнительно к маскировке заголовков, протокол OSTP исключает возможность анализа поведения системы на основе длин пакетов данных. Модуль адаптивного заполнения (AdaptivePadder) рассчитывает оптимальный размер буфера выравнивания (padding), интегрируемый в структуру пакета до момента активации шифрующего каскада:

  • Стратегия заполнения буферов: Механизм анализирует текущую длину выборки телеметрии и производит масштабирование до типичных кратных длин промышленных сетей передачи данных и буферов потоковых агрегаторов.
  • Изоляция выравнивания: Данные заполнения помещаются внутрь защищенной области кадра. Внешние анализаторы топологии сети не способны определить внутренние границы между телеметрической нагрузкой и служебными полями выравнивания, видя только монолитный блок данных.