Ви можете очистити історію та файли cookie у браузері, перезавантажити домашній роутер для зміни зовнішньої IP-адреси та розпочати роботу в ізольованому віртуальному середовищі. Для звичайних аналітичних скриптів ви виглядатимете абсолютно новим відвідувачем. Проте на віддаленому сервері моніторингу пасивний аналізатор пакетів відстежує єдине числове поле в заголовках транспортного рівня. Уже за перші двадцять пакетів встановлення TCP-з'єднання сервер безпомилково зіставить фізичну материнську плату вашого комп'ютера з наявним профілем.

Цей механізм стеження функціонує значно глибше за заголовки HTTP, ізольовані пісочниці веб-переглядачів та проксі-сервери прикладного рівня. Аналізуючи мікроскопічні похибки виробництва кварцових резонаторів, аналітичні системи використовують опцію TCP Timestamps (RFC 7323) для обчислення апаратного зсуву тактової частоти (clock skew). Цей фізичний відбиток залишається незмінним під час перемикання мережевих інтерфейсів, зміни IP-адрес чи скидання налаштувань браузера.

[Фізична материнська плата пристрою]
  │
  ├─ Кварцовий резонатор (Фізичний зсув частоти: ~15.4 ppm)
  │
  ▼
[Мережевий стек ядра операційної системи]
  │
  ├─ Опція TCP Timestamps (RFC 7323)
  │     ├── TSval: Апаратний лічильник часу ядра
  │     └── TSecr: Відлуння-відповідь від віддаленого вузла
  │
  ▼
[Віддалений сервер спостереження]
  │
  └─ Алгоритм лінійної регресії ──> Обчислення фізичного зсуву годинника
                                     Формування постійного апаратного ID

Фізика зсуву тактової частоти кремнієвих кристалів

Кожен цифровий пристрій використовує кварцовий резонатор для генерації тактових імпульсів. Ці мікроскопічні кварцові елементи вібрують на фіксованих частотах (наприклад, 14.318 МГц, 25 МГц або 32.768 кГц), синхронізуючи роботу процесора, системної шини та лічильників переривань ядра. Через фізичні обмеження напівпровідникового виробництва неможливо виготовити два кристали з абсолютно ідентичними резонансними характеристиками.

Кожен резонатор має постійне індивідуальне відхилення від номінальної частоти, відоме як перекіс або зсув годинника (clock skew). Ця величина вимірюється в мільйонних частках (PPM) або мікросекундах на секунду ($\mu\text{с/с}$):

$$\text{Skew} = \frac{f_{\text{факт}} - f_{\text{ном}}}{f_{\text{ном}}}$$

Зсув у 20 PPM означає, що апаратний таймер випереджає або відстає від еталона на 20 мікросекунд щосекунди (близько 1.7 секунди на добу). Хоча мережеві протоколи синхронізації часу (NTP) коригують системний годинник, низькорівневий апаратний таймер ядра продовжує відраховувати імпульси зі своєю фізичною швидкістю. Два однакові ноутбуки з однієї партії мають помітну різницю у зсуві тактової частоти.

Як стандарт RFC 7323 розкриває апаратні таймери

Опція часових позначок у протоколі TCP була впроваджена в RFC 1323 та оновлена в RFC 7323 для підвищення пропускної здатності мережі. Вона займає 10 байтів у заголовку TCP:

+-------+-------+---------------------+---------------------+
|Kind=8 |Довжина|  Значення TS (TSval)|  Відлуння TS (TSecr)|
|(1 байт|(1 байт|      (4 байти)      |      (4 байти)      |
+-------+-------+---------------------+---------------------+

Опція виконує два ключові завдання:

  1. Вимірювання часу кругового обігу (RTTM): Дозволяє точно визначати затримку мережі для кожного підтвердженого сегмента без плутанини під час повторного надсилання пакетів.
  2. Захист від повторення номерів послідовності (PAWS): Запобігає пошкодженню даних у високошвидкісних з'єднаннях шляхом відкидання старих затриманих пакетів із застарілими мітками часу.

Вразливість полягає в тому, що ядро операційної системи збільшує значення TSval з постійною швидкістю, прив'язаною до апаратних таймерів. У системах Linux та BSD значення TSval зазвичай зростає з частотою 100 Гц, 250 Гц або 1000 Гц відповідно до внутрішнього таймера jiffies.

Ідентифікація за допомогою лінійної регресії

У дослідженні, опублікованому на симпозіумі IEEE S&P, науковці довели, що віддалений сервер може пасивно розрахувати фізичний зсув частоти клієнтського обладнання:

  1. Збір пакетів: Сервер фіксує вхідні TCP-пакети та зчитує два значення для кожного пакета $i$:
    • $t_i$: Точний час надходження за еталонним годинником сервера, синхронізованим з NTP.
    • $T_i$: Ціле число TSval із заголовка TCP клієнта.
  2. Розрахунок відхилення: Сервер аналізує різницю між часом надходження та масштабованим таймстемом: $$x_i = t_i - \frac{T_i}{R}$$ де $R$ — номінальна частота таймера ядра клієнта (наприклад, 1000 Гц).
  3. Обчислення нахилу лінії: За допомогою алгоритму лінійної регресії на вибірці від 20 до 100 пакетів сервер визначає кутовий коефіцієнт: $$\text{Нахил} = \frac{\Delta x}{\Delta t}$$

Цей коефіцієнт точно відокремлює фізичний зсув резонатора від мережевих коливань (джитеру). Оскільки він визначається характеристиками кварцу на материнській платі, параметр залишається стабільним протягом багатьох місяців, незначно змінюючись лише під впливом температури.

Відхилення (мс)
  ^
  |                                   *   *  <- Точки спостереження
  |                           *   *
  |                   *   *
  |           *   *
  |   *   *
  +---------------------------------------------> Час надходження (с)
      Нахил лінії = Фізичний зсув тактової частоти (~12.8 ppm)

Навіть якщо ви перейдете з оптоволоконного інтернету на мобільний 5G, зміните MAC-адресу чи активуєте приватне вікно, вихідні пакети транслюватимуть один і той самий коефіцієнт нахилу до віддалених серверів.

Межі можливостей браузерних проксі та розширень

Чимало користувачів використовують браузерні розширення або проксі SOCKS5. Проте ці інструменти функціонують лише на прикладному рівні L7:

  • Проксі прикладного рівня: Розширення перенаправляє HTTP-запити через окремий сокет. Однак первинне мережеве з'єднання операційної системи з локальною мережею формується стандартним TCP-стеком ядра комп'ютера.
  • Фонові системні з'єднання: Системні служби (оновлення ОС, телеметрія, клієнти електронної пошти, служби синхронізації часу) працюють поза межами браузера. Спостерігач на мережевому маршруті зіставляє часовий зсув фонових пакетів із трафіком із браузера, безпомилково пов'язуючи обидва потоки з одним апаратним пристроєм.
  • Прозоре передавання заголовків: Багато транзитних вузлів передають параметри TCP без змін, відкриваючи віддаленому серверу прямий доступ до апаратного значення TSval.

Ізоляція апаратних таймерів за допомогою RiceGuard

Щоб унеможливити стеження через зсув тактової частоти, необхідно відокремити фізичну часову область пристрою від з'єднань, що транслюються у відкритий інтернет.

VPNRice забезпечує таку ізоляцію на третьому мережевому рівні (Layer 3) за допомогою архітектури RiceGuard:

[Локальне обладнання / Материнська плата]
  │
  ├─ Апаратний резонатор (Унікальний зсув: 18.2 ppm)
  │
  ▼
[Віртуальний мережевий адаптер RiceGuard (TUN)]
  │
  ├─ Інкапсуляція всіх IP-пакетів рівня L3
  ├─ Криптографічний тунель ChaCha20-Poly1305 (RFC 8439)
  │
  ▼
[Потік пакетів WireGuard UDP у відкритій мережі]
  │ (Початкові TCP-заголовки клієнта не виходять у публічний простір)
  │
  ▼
[Вихідний вузол дата-центру VPNRice]
  │
  ├─ Завершення тунелю клієнта
  ├─ Створення нового TCP-з'єднання з ядра сервера дата-центру
  │     └── Зовнішній сервер бачить лише таймери дата-центру
  │
  ▼
[Цільовий веб-сервер та системи моніторингу]
  1. Розділення транспортного рівня: RiceGuard перехоплює трафік на рівні IP-пакетів та інкапсулює його у захищені дейтаграми UDP протоколу WireGuard. Під час роботи через VPN операційна система не встановлює прямих TCP-з'єднань із кінцевим ресурсом. Цільовий сервер виконує рукостискання TCP виключно з вихідним сервером VPNRice.
  2. Підміна апаратних характеристик: Значення TSval, які зчитуються аналітичними системами, генеруються таймерами серверного обладнання дата-центрів VPNRice, повністю нівелюючи зв'язок із платою вашого комп'ютера.
  3. Динамічна ротація серверних вузлів: Розподіл мережевих потоків між географічно рознесеними серверами порушує безперервність побудови ліній регресії, унеможливлюючи створення довгострокового апаратного профілю.

Практичні налаштування безпеки операційної системи

Для зміцнення захисту мережевого стека адміністратори можуть скористатися такими параметрами:

  • Перевірка опції TCP Timestamps у Linux: Перевірте поточний стан командою:
    sysctl net.ipv4.tcp_timestamps
    
    Щоб вимкнути надсилання міток часу на мережевих інтерфейсах:
    sudo sysctl -w net.ipv4.tcp_timestamps=0
    
    Для збереження налаштування після перезавантаження системи додайте рядок net.ipv4.tcp_timestamps = 0 до файлу /etc/sysctl.d/99-network-privacy.conf.
  • Рандомізація зміщення в сучасних ядрах: У ядрах Linux версії 4.10 та новіших типово активне випадкове початкове зміщення міток для кожного з'єднання. Проте під час тривалих сесій математичний нахил усе ще може бути обчислений. Маршрутизація через VPN рівня L3 залишається найнадійнішим рішенням.
  • Підтримання активного тунелювання L3: Увімкніть функцію екстреного блокування з'єднання (Kill Switch) у клієнті VPNRice, щоб запобігти випадковому виходу відкритих пакетів TCP від системних служб у разі зміни мережі.