Устойчивость к блокировкам

Velum задуман так, чтобы продолжать работать, даже если его пытаются отключить. Здесь мы рассказываем, что для этого делаем, и так же прямо говорим о том, чего избежать не можем.

Несколько шлюзов со скрытым именем

  • Есть несколько шлюзов на разных доменах (список GATEWAYS в @velum/core). Приложения и узлы перебирают их по порядку и переключаются на следующий, если один не отвечает.
  • Шлюзы используют ECH (Encrypted Client Hello) в Cloudflare: тот, кто наблюдает за соединением, не видит имени сайта, на который ты заходишь.

Узлы находят друг друга

  • Каждый узел публикует свой адрес (endpoint) в блокчейне. Приложения и узлы хранят этот список и, если шлюзы недоступны, подключаются напрямую друг к другу, как узлы Bitcoin.
  • Узлы обмениваются списками соседей (PEX).
  • Есть DNS-сиды: TXT-записи с узлами на нескольких доменах, чтобы найти сеть с нуля.
Приложение ──▶ шлюз 1 (ECH) ──✕ заблокирован
           ──▶ шлюз 2 (другой домен, ECH)
           ──▶ известный узел (endpoint, сохранённый из блокчейна)
           ──▶ DNS-сид ──▶ узлы ──▶ соседи (PEX)

Планы

  • Замаскированные транспорты: трафик, похожий на обычный HTTPS (в духе WebTunnel или obfs).
  • Tor и I2P.
  • Mesh-сеть по Bluetooth, чтобы общаться без интернета с теми, кто рядом.
  • Маршруты из трёх прыжков в стиле Sphinx и маскирующий трафик против наблюдателя, который видит весь интернет сразу.

Чего мы не обещаем

  • Неблокируемых систем не бывает. Государство может заблокировать домены, IP-адреса или весь Cloudflare. Сеть живёт, пока узлы могут достучаться друг до друга, но подключиться к ней может стать сложнее.
  • Глобальный наблюдатель, видящий весь интернет-трафик сразу, может пытаться сопоставлять время отправки и получения. Дополнение до фиксированного размера и сменяемые ящики помогают; маршруты из трёх прыжков и маскирующий трафик появятся позже.
  • Магазины приложений могут убрать приложение в какой-либо стране. Поэтому мы публикуем на этом сайте ещё и подписанные APK для Android и бинарные файлы узла.