Свободу байтам

Вы видите меня хозяином Франции, но я бы не взялся править ею и три месяца при свободной прессе.
— Наполеон I

Чисто гипотетически, представьте себе ситуацию, что власть захватили вражеские агенты, мы в оккупации, нас помещают в информационный пузырь. Конечно гипотетически, на самом деле, такое с нами произойти не может. А то, что сейчас блокируют (как устроена блокировка в РФ и РБ), это же конечно «для нашего блага».

Цель этой статьи: найти и проанализировать открытые или, как минимум, закрытые, но бесплатные и удобные инструменты, которые позволяют получить доступ к информации в случае частичной или полной блокировки доступа к сети Интернет.

Кому лень читать, буду краток: Tor и Bridgefy — это то, что должно стоять у каждого борца за свободу информации :).


Disclaimer: «вдохновлением» для этой статьи послужил беспредел, который происходит в родных краях.

Рассмотрим, как как нам могут перекрыть доступ? У нас есть вымышленный Интернет ресурс example.com с IP адресом 123.123.123.123. Что с ним могут сделать?


  • Блокировка по статическому IP адресу (IP black hole). Сомнительный по эффективности способ. В облачных хостингах можно мгновенно получить новый IP адрес. А затем поменять DNS A записи. Да и часто используется Content Distribution Network (CDN), которые хостят ресурсы не на одном IP, и на этом IP по-другому доменному имени хостятся другие веб ресурсы. Заблокируешь эти IP —  половина сервисов интернета станут недоступны. При попытках заблокировать Telegram, блокировались пулы CDN IP-адресов, которые использовались клиентским приложением — многие ресурсы стали недоступны. Многие бизнесы пострадали. И это не единcтвенный случай.


  • Изменении DNS записи (DNS hijacking). Обходится проще всего: нужно изменить DNS сервер в настройках своего роутера или ОС.
    Но провайдеры могут пойти дальше. DNS протокол придуман давно, и не предусматривал шифрование или обязательную авторизацию ответа. Таким образом, провайдеры могут перехватывать ваши DNS пакеты на любой DNS сервер (Google DNS 8.8.8.8 или Cloudlfare DNS 1.1.1.1) и отвечать за них другими IP-шниками, которые ведут на страницу блокировки (вместо нашего 123.123.123.123). С такими атаками призван бороться DNSSEC. Но этот подход встретил критику: она заключается в том, что DNSSEC все равно не решает проблему полностью. Далее, на помощь приходит DNS over HTTPS или DNS over TLS. В новых релизах от Apple: macOS Big Sur и iOS 14 он уже включен по умолчанию. В Windows 10 Insider так же добавили поддержку. На Linux в systemd-resolved идет разработка. Более того, Firefox включил DNS over HTTPS по умолчанию для новых релизов. В Chromium есть возможность включить поддержку.


  • Глубокий анализ пакетов (Deep Packet Inspection, DPI) — здесь уже интереснее. Например, Ideco Selecta ISP, или Великий Китайский Фаервол. Данные инструменты могут не только обращать внимание на доменное имя, IP адрес, L4 протокол и порт, но и на другие нюансы протокола. Например на используемый TLS Сipher Suite для HTTPS. Или на размер первого, второго, третьего пакета в TLS Handshake. Вот такие инструменты могут достать SNI поле из TLS Client Hello сообщения, в котором содержится доменное имя (в нашем случае »example.com»). И если DPI увидит неугодный ресурс — отбросит пакет.
    Инженеры-борцы за свободу и приватность в сети Интернет пошли дальше: Encrypted SNI (ESNI). В связке с DNS over HTTPS/TLS позволяет скрыть от DPI доменное имя ресурса, к которому вы получаете доступ. Поддерживает ли ваш браузер необходимый функционал? Проверить можно здесь. Firefox поддерживает. Chromium еще нет. Но ESNI заработает только, если создатели ресурса позаботились об этом, а это все еще экспериментальная функциональность. Поэтому, поддерживается не всеми. Хотечется добавить, что не все DPI хороши как Великая Китайская Огненная Стена: при блокировке сайта navalny.com, использовали трюк с TCP Window Size, чтобы разделить SNI на несколько TCP cегментов. GoodbyeDPI, который использовался некоторыми провайдерами, не умел собирать фрагментированные TCP сегменты —  блокировка не сработала.
    Wireshark, анализ TLS Clientf Hello сегмента


  • Ну и самое банальное. Если регистратором доменного имени выступает регистратор, на который могут «надавить» враги, то доменно имя у вас могут «отжать». Я про такие случаи «не читал, но осуждаю».



Итого


  • У вас не возникнет проблем, если:
    • на вашей ОС включен DNS over HTTPS (или over TLS, при условии использования внешнего независимого DNS сервера, например от Cloudflare);
    • и »example.com» использует CDN с поддержкой TLSv1.3 / ESNI;
    • и провайдер не заблокировал независимый DNS по IP адресу;
    • и провайдер не заблокировал пул IP адресов CDN, как это было в во время блокировки Telegram в РФ;
  • Если что-то из вышеперечисленного не поддерживается на клиентской или серверной стороне, то скорее всего доступ прикроют использую DPI ПО — читаем дальше.

Все виды блокировок можно обойти с помощью VPN. Но могут заблокировать сам VPN. Для таких случаев придумали Tor (о нем речь пойдет ниже).
Решения расположены в порядке простоты их использования.

Закрытый бесплатный VPN от Cloudflare на основе протокола Wireguard. Рекламы нет, поэтому поместил в этот список.

1.1.1.1 app


  • Протокол блокируется Великим Китайским Фаерволом.
  • Не поддерживается Linux. Но скоро добавят.
  • Лимиты по объему передаваемых данных.
  • Удобство использования.
  • Нет рекламы в бесплатной версии.
  • Wireguard поддерживает роуминг. Это позволяет прозрачно и незаметно для пользователя сменять сети (Wi-Fi, LTE, 3G).

Открытое VPN приложение на базе протокола OpenVPN. Предоставляет бесплатно свои сервера. Доступно для Android, Linux, Windows, macOS. Ссылки на приложения доступны на официальном сайте.

RiseUp, Android


  • Протокол блокируется Великим Китайским Фаерволом.
  • Не поддерживается iOS.
  • Удобство использования.
  • Открытый код.
  • Нету лимитов по объемам передаваемых данных.
  • Есть лимиты по скорости. Для просмотра видео с »example.com» хватит.

Это удобное расширение для браузера для настройки прокси-серверов. Расположение (страну) прокси-сервера можно выбрать в настройках.
TouchVPN on chrome


  • Дополнение работает только в браузерах на Desktop-системах. Но есть приложения под мобильные платформы, но уже с рекламой.
  • Доступно в Firefox и Chrome.

Cписок бесплатных OpenVPN серверов, которые хостятся в основном США и Японии.
Будет работать с любым OpenVPN клиентом на любой операционной системе.


  • Протокол блокируется Великим Китайским Фаерволом.
  • OpenVPN клиенты есть для всех популярных операционных систем.
  • Тяжело в использовании неопытными пользователями, необходимо скачивать конфигурацию самостоятельно. Нужно скачать конфигурационный файл с сайта и выбрать его в приложении: ,


Итого

Попробуйте описанные выше продукты. Скорее всего они вам помогут. Если вам не хватает пропускной способности, а денег много тратить не хочется, можно развернуть свой VPN сервер в сети. Это сложнее, но дешевле (от 3 евро в месяц), если VPN вы собираетесь пользоваться много.

Вражеские агенты узнали о том, что люди могут получить доступ к информации. VPN начали блокировать DPI инструментами.


Хьюстон, у нас проблема!

Не отчаивайтесь, мы не первые. Многие страны уже прошли этот этап. Великий Китайский Фаервол уже давно умеет и практикует. А в РФ и РБ (обкатывают на госорганизациях) есть соответствующие постановления. И инструменты обхода соответствующие разработаны. И интересно, что несколько проектов, которые будут рассмотрены, разработаны правительством США.

Если вас интересует не только возможность получать доступ к Интернет ресурсам, но и еще делать это анонимно, то вам нужен Tor. В обещания VPN провайдеров о том, что они не хранят логи доступа или не начнут дампить пакеты по требованию вражеских агентов, я не верю. Хотя анонимность Tor тоже под вопросом, если узлы сети скомпроментированы.
Наверняка вы уже слышали о этой сети. И о ее архитектуре, где каждый пакет шифруется несколько раз, а затем расшифровывается на промежуточных сетевых узлах. Это похоже на разворачивании луковицы, поэтому и называется onion (лук)-network. В Беларуси Tor официально заблокирован с 2016 года, но из-за архитектуры, он продолжает работать через Bridges. Конечно враг может пойти дальше и усложнить процесс использования даже Bridges. Но все каналы перекрыть не получится.

Orbot, Android

А еще через сеть Tor доступен Darknet. А это что-то реально свободное и неподконтрольное никому. Но организовано неудобно.


  • Obfs4 позволяет обходить даже Великий Китайский Фаервол.
  • Открытый код.
  • Поддерживается всеми популярными операционными системами, в том числе мобильными.
  • Проект развивается давно, поэтому приложения удобные и не вызывают трудностей при использовании.
  • Работает медленнее VPN из-за луковичной архитектуры сети.
  • Работает в виде прозрачного прокси или браузера на всех ОС.

Разработан в университете города Торонто. Для туннелирования используется обфусцированный SSH туннель. Но было найдено упоминание о использовании L2TP/IPsec для VPN на Windows. До начала моего исследования я не слышал про этот сервис. А зря, он использовался во время блокировок Телеграм в Иране во время протестов конца 2017 начала 2018 года.

Psiphon App, Android

Проект проспонсирован правительство США и может использовать других участников сети для проксирования (если разрешено). Если узлов, разрешающих проксирование, нет, то ПО использует резервные (fallback) прокси сервера, предоставленные самим проектом.

Lattern, Android


  • Позволяет обходить Великий Китайский Фаервол в Pro версии. Но в бесплатной версии можно получить список Fallback Proxies IP и заблокировать.
  • Поддерживается всеми популярными операционными системами, в том числе мобильными.
  • Открытый код.
  • Не сохраняет анонимность. Прямо так в соглашении прописано, что могут продавать ваши логи.
  • Если же вы, например, в Китае, то бесплатная версия может не сработать. Нужно покупать подписку. По подписке доступны другие сервера, которые сложнее достать цензору.

От Китайских разработчиков с любовью. Кто, как не инженеры из страны с Великим Фаерволом, может с этим еще бороться эффективнее? В первозданном виде Shadowsocks блокируется Великим Китайским Фаерволом через Active Probing. Но можно подключить другие транспорты, например, Obfs4, который используется сетью Tor. В таком случае нам кран не перекроют.
Shadowsocks, Android


  • Obfs4 позволяет обходить даже Великий Китайский Фаервол.
  • Открытый код.
  • UX для опытных пользоавтелей.
  • Публичных бесплатных серверов я не видел. Но можно очень просто развернуть свой сервер на Linode.
  • Поддерживается на всех популярных операционных системах, в том числе на мобильных.

Проприетарное VPN приложение которое использует закрытый протокол Catapult Hydra. Согласно блогу компании, умеет обходить Китайский Фаервол. Приложение платное. В бесплатной версии навязчивая реклама. Но если ничего больше не работает, стоит попробовать.

Hotspotshield App, Android


  • Обходит Китайский Фаервол.
  • Есть клиенты под все популярные ОС.
  • Реклама в бесплатной версии.
  • Закрытый протокол.
  • Не сохраняет анонимность.


Итого

Выбор редакции — Tor. Tor поможет в большинстве случаев. UI\UX приложения Orbot не вызвал у меня вопрос, все понятно. Скорее всего и у вас не будут проблем. Считаю, что это приложение должно быть утсановлено у всех борцов за свободу информации, рано или поздно вам оно пригодится.

Отлично, разобрались с Tor. А что если вражески-настроенные агенты пошли дальше. Они отключили GSM сеть. Или вообще отключили Интертнет. Перезагрузка ПК и роутера не помогает :).


Шеф, все пропало!

В таком случае подойдут mesh-сети. В нашем случае нас интересуют mesh-сети, которые строятся с помощью Bluetoothи Wi-Fi Direct. Используя эти технологии, можно построить mesh-сети между мобильными устройствами: все узлы сети соединяются с соседними узлами в радиусе доступности радиосигнала и помогают передавать пакеты до адресата. Такой вид взаимопомощи, хватит быть эгоистом! ;)

mesh-network

Mesh-сети явление не новое. Глоток популярности они получили во время протестов в Ираке и Гонконге в 2014 году благодаря приложения Firechat (уже не поддерживается). В 2015 году использовался активистами во время протестов в Эквадоре и во время протестов «Free Way to the Cataln Republic» в Барселоне. А в 2016 году использовался студентами во время протестов в Индии, когда в университете отключили Wi-Fi сеть.

FireChat был построен на закрытой библиотеке MeshKit от OpenGarden. Сообщество Hackernews ее не одобрили: «Какой это Freedom, если код закрыт»?! Для передачи текстовых сообщений и изображений используются беспроводные сети Bluetooth и Wi-Fi, устройства с установленным клиентом могут обнаруживать друг друга в радиусе до 60 метров. Каждое устройство с клиентом фактически становится ретранслятором для других устройств с этой программой, организуя распределенную mesh-сеть.


Хотелось бы напомнить, что вас могут отследить, если вы подключены к GSM сети. Переведя же телефон в режим полета и присоединившись к Bluetooth mesh-сети, вы лишаете вражеских агентов возможности отследить вас.

Так как FireChat закрыт, а приложение уже недоступно, предлагаю посмотреть на доступные альтернативы.

Разработчики приложения позиционируют его как способ для общения во время путешествий и различного рода общественных мероприятий, когда GSM сеть может оказаться перегруженной. Приложение может работать в 3 режимах:


  • Person-to-Person: общение возможно только между двумя участниками. Используется Bluetooth, в таком режиме радиус действия сильно ограничен.
  • Mesh-сеть: сообщения шифруются и передаются через других участников сети (узлы). Тот режим, который нас интересует.
  • Широковещательный (Broadcast): отправляет широковещательное сообщение всем участникам сети кругом. Все увидят ваше сообщение, даже если их нету в вашем контакт-листе.

    Я протестировал приложением между двумя Android смартфонами, работали все режимы с выключенным Wi-Fi. Также, сообщения синхронизируются через сеть Интернет.


Bridgefy приложение


  • Поддерживаются iOS и Android.
  • Закрытый код.
  • Добавлять можно только те контакты, которые рядом, что неудобно.

Этот проект с открытым кодом разработан для активистов, журналистов и других, кто нуждается в безопасном и надежном виде коммуникации. В отличии от традиционных мессенджеров, Briar полагается не только на центральный сервер, а синхронизирует сообщения между пользовательскими устройствами. Если сеть Интернет недоступна, Briar может синхронизировать сообщения через Bluetooth или Wi-Fi. Если сеть Интернет доступна, сообщения синхронизируются через Tor сеть, защищая пользователей от наблюдения. Больше деталей в официальной документации.

Briar Network Overview

Я протестировал приложение между двумя Android смартфонами. Работали все режимы с выключенным Wi-Fi, добавление контакта через QR код и микроблогинг. Сообщения синхронизируются через сеть Интернет.


  • Не поддерживает iOS. Только Android. Со временем доработают.
  • Открытый код.
  • Можно вести свой микроблог, полезная вещь, если нужно оповестить большую аудиторию о чем-то важном.
  • Можно добавлять контакты по ссылке, которая представляет собой публичный ключ.


Итого

Используя мессенджеры на основе mesh-сетей можно наладить связь при массовых скоплениях людей без сети Интернет. Основная проблема — побудить всю «толпу» установить приложение. Мой выбор пал на Bridgefy, потому что поддерживается iOS и Android. Хотя UI\UX и функциональность понравились больше у Briar: возможность добавлять контакты через считывание QR кодов, индикаторы доступных каналов связи, возможность добавлять контакты с помощью ссылок, т.е не надо быть в радиусе-действия Bluetooth.

Хочу отметить, что мои коллеги предупредили, что сотни WiFi 2.4 GHz на небольшой площади из-за Beacon могут «нашуметь» на столько, что на данной частоте будет невозможно поддерживать связь. Но я с этим не сталкивался, пока что.

Буду краток: Tor и Bridgefy спасут вас с большой вероятностью.

Хотелось бы отметить, что вражеские агенты могут пойти дальше. Если начнут глушить не только GSM, а 2.4ГГц или 5ГГц, на котором работает Wi-Fi и Bluetooth, то здесь уже ничего не поделаешь. Или поделаешь? Поделитесь идеями!


Прошу прощения за возможные ошибки и описки. Посоветуйте плагин для VS Code, который может исправлять синтаксис и пунктуацию в Markdown:)

© Habrahabr.ru