Created
January 29, 2026 12:39
-
-
Save 5HT/d230186b753552b86081f563ff86bca6 to your computer and use it in GitHub Desktop.
dpi.txt
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Так, питання досить цікаве й актуальне — особливо в контексті сучасних DPI-систем, які активно використовують сигнатурний аналіз, машинне навчання та активне пробінг для виявлення навіть добре зашифрованого трафіку. | |
| ### Основні способи обходу DPI для потокового шифрування каналів (stream ciphers, наприклад ChaCha20, AES-CTR тощо) | |
| Потокове шифрування саме по собі не дає автоматичного захисту від DPI, бо сигнатура може бути в handshake, розмірах пакетів, таймінгах, entropy, SNI, JA3 fingerprint тощо. Ось перевірені підходи: | |
| 1. **Протокольна обфускація та mimicry** | |
| Роблять трафік схожим на звичайний HTTPS/HTTP/3, WebRTC, відеострімінг тощо. | |
| - uTLS (або utls) — імітація TLS-фінгерпринтів реальних браузерів (Chrome, Firefox, Safari). Змінює порядок розширень, ciphersuites, curves тощо. | |
| - REALITY (в Xray/V2Ray) — усуває серверний TLS-фінгерпринт, використовує shortId (короткі випадкові ідентифікатори) та fallback на реальний сайт. Сервер аналізує вхідний трафік і динамічно адаптується, щоб виглядати як звичайний HTTPS навіть під пробінгом DPI.<grok:render card_id="6bf8ae" card_type="citation_card" type="render_inline_citation"> | |
| <argument name="citation_id">36</argument> | |
| </grok:render><grok:render card_id="87a8fc" card_type="citation_card" type="render_inline_citation"> | |
| <argument name="citation_id">39</argument> | |
| </grok:render> | |
| - Hysteria2 (на базі QUIC) — маскування під HTTP/3, Salamander-obfuscation (перетворює пакети на випадкові байти без патернів), padding і congestion control, що ускладнює виявлення за розмірами/таймінгами.<grok:render card_id="595c83" card_type="citation_card" type="render_inline_citation"> | |
| <argument name="citation_id">41</argument> | |
| </grok:render> | |
| 2. **Додавання шуму та randomization** | |
| - Random padding (змінні розміри пакетів). | |
| - Traffic shaping: випадкові затримки, bursty patterns. | |
| - Split tunneling або multipath — розбиття трафіку на кілька шляхів. | |
| Це робить сигнатуру менш стабільною для ML-моделей DPI. | |
| 3. **Pluggable transports / додаткові шари** | |
| - obfs4, meek, snowflake (Tor). | |
| - Shadowsocks + v2ray-plugin (websocket, http-obfs). | |
| - Obfsproxy, udp2raw, kcptun тощо для WireGuard. | |
| ### Як змінити сигнатуру «на льоту» без зміни параметрів шифрованого каналу (ключ, nonce/IV, алгоритм шифрування) | |
| Це найскладніша частина, бо класичні DPI-сигнатури «забиваються» саме в handshake або перших пакетах. Якщо канал уже встановлений і DPI його розпізнав — змінити сигнатуру без переривання практично неможливо. Але є бачення та реалізації, як зробити систему стійкою до оновлення бази сигнатур: | |
| 1. **Polymorphic / programmable obfuscation** | |
| Концепція Marionette (2015, але актуальна): трафік генерується через probabilistic automata + DSL. Дозволяє динамічно змінювати формат повідомлень, статистику, таймінги, навіть під час сесії, без зміни ключів шифрування. Плагіни (наприклад FTE) дозволяють runtime-адаптацію. Підходить для stream cipher (можна інтеграція з obfs4-подібними).<grok:render card_id="bfee97" card_type="citation_card" type="render_inline_citation"> | |
| <argument name="citation_id">45</argument> | |
| </grok:render> | |
| Це найближче до «на льоту» — модель може мати кілька варіантів поведінки й переходити між ними. | |
| 2. **Dynamic negotiation або multi-mode** | |
| - У REALITY + Vision (XTLS) клієнт і сервер можуть мати кілька shortId або fingerprint-профілів. Сервер динамічно обирає поведінку залежно від вхідного трафіку (наприклад, імітує різні сайти або браузери). Якщо один fingerprint заблокували — конфіг оновлюється швидко, але для існуючої сесії це не завжди seamless.<grok:render card_id="d12fb6" card_type="citation_card" type="render_inline_citation"> | |
| <argument name="citation_id">30</argument> | |
| </grok:render> | |
| - Frequent protocol switching: клієнт автоматично перемикається між VLESS-Reality → Hysteria2 → TUIC → Shadowsocks-obfs, якщо виявлено блокування (наприклад, за RTT або packet loss). | |
| 3. **Adaptive та reactive методи** | |
| - Додавання adaptive padding / timing randomization під час сесії (Hysteria2 це частково робить через QUIC congestion control). | |
| - Inject fake packets або dummy data для «розмивання» патернів. | |
| - Якщо є side-channel (наприклад, окремий control-канал) — можна домовитися про новий obfuscation seed або mode mid-session. | |
| 4. **Найпростіший практичний підхід у 2026** | |
| - Використовувати Xray-core з VLESS + REALITY + uTLS + Vision — зараз це один з найстійкіших варіантів проти DPI (включаючи GFW-подібні). | |
| - Додати кілька fallback-конфігів і автоматичний перемикач (наприклад, через sing-box або clash-meta). | |
| - Якщо сигнатура потрапила в базу — швидко оновити shortId, serverName, public key або fingerprint, і клієнти перез’єднуються (зазвичай за секунди). | |
| Якщо коротко: повноцінна зміна сигнатури «на льоту» без жодного переривання каналу — це поки більше research (Marionette, Geneva тощо), але комбінація REALITY + dynamic ports + randomization + multi-protocol fallback дає дуже високу стійкість. Якщо в тебе конкретний протокол/інструмент (наприклад WireGuard, Xray, Hysteria), скажи — підкажу конфіг або нюанси. Можна в групу кинути — там точно хтось уже тестував під ваші DPI. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment