Snowflake

Snowflakepluggable transport для Tor, работающий через WebRTC. Идея: тысячи волонтёров устанавливают браузерное расширение (или запускают Snowflake в фоне), их браузеры становятся временными proxy-точками. Клиенту дают случайную из них, он подключается WebRTC-звонком, через этого волонтёра идёт в Tor.

Почему это работает против цензуры

  1. Динамические IP. Snowflake-прокси — это обычные домашние IP пользователей со всего мира. Постоянно меняются, банить бесполезно.
  2. Похоже на видеозвонок. WebRTC — стандартный протокол Zoom / Google Meet / Discord / Telegram. Блокировать WebRTC полностью — сломать видеосвязь для всех.
  3. STUN/TURN серверы. Использует Google STUN / другие публичные STUN, которые тоже сложно заблокировать (пришлось бы отрубать Google целиком).

Как устроен

[client] ⟶ [broker] (говорит: "хочу прокси")
         ⟵ [broker] (даёт SDP offer от прокси)
[client] ⟷ [proxy = чей-то браузер] (WebRTC-канал)
         ⟶ [bridge = Tor-мост]
                ⟶ Tor-сеть
  1. Клиент шлёт запрос на broker (rendezvous-сервер, знаменитая проблема: его тоже блокируют, поэтому доступ к нему сам маскируется через domain fronting).
  2. Broker находит свободного волонтёра, обменивает SDP-предложения между клиентом и волонтёром.
  3. Клиент устанавливает WebRTC data-channel с волонтёром.
  4. Волонтёр перекидывает пакеты на «настоящий» Tor snowflake-мост.
  5. С Tor-моста трафик уходит в сеть Tor как обычно.

Стать волонтёром

Тысячи людей помогают этой системой. Способы:

Настроить лимит трафика можно (по умолчанию 0 = без лимита, но в браузерной версии активен только пока вкладка открыта).

Плюсы

Минусы

Идейные потомки

Схема Snowflake повлияла на olcRTC — тоже WebRTC-туннель, но не для Tor, а для произвольного TCP-трафика (VLESS/SS/что угодно) под видом Jitsi/Yandex Telemost.

См. также