Последнее время на просторах сети часто появляются обсуждения свободного без цензуры интернета. Мы уже писали, как Tor Project используя различных технологии помогает в решении данного вопроса. В этой статье я расскажу вам об интересной альтернативе, о мобильном браузере для обхода блокировок и цензуры, который называется Ceno.
Еще по теме: Приватные ОС для обхода блокировок и защиты от слежки
Браузер Ceno для обхода блокировки и цензуры
Принцип лежащий в основе браузера Censorship No, или, сокращенно, Ceno очень прост. На устройства устанавливаются браузеры, которые образуют сеть P2P, что позволяет передавать трафик за пределы цензурируемой зоны и таким образом обходить запреты и блокировки.
Браузер Ceno
С точки зрения пользовательского интерфейса Ceno представляет собой обычный мобильный Firefox, все «нецензурные» функции спрятаны у него под капотом. Для трансляции запросов используется протокол HTTP, для передачи контента — BitTorrent µTP.
Шифрование обеспечивается с применением TLS, для проверки подлинности транслируемых данных задействованы цифровые подписи EdDSA в версии Ed25519. При необходимости Ouinet может использовать вместо µTP транспорт Tor, если в сети пользователя блокируются торрент‑протоколы.
Все это вместе приводит к тому, что браузер Ceno генерирует значительно больше трафика по сравнению с другими мобильными браузерами — ведь ему необходимо направлять запросы сразу на множество узлов сети и проксировать трафик, чтобы передать контент другим пользователям. Поэтому подразумевается, что браузер будут использовать в сетях с хорошим качеством связи или нелимитированным трафиком, в которых нет проблем со связью внутри страны, но имеются сложности с выходом во внешний интернет.
Существующая версия Ceno работает только на устройствах с процессорами ARM. Если ты используешь Android на планшете с архитектурой x86 или пытаешься запустить Ceno в эмуляторе без виртуализации железа, ничего не получится.
Движок браузера Ceno
Когда пользователь с установленным на его Android-устройстве Ceno запрашивает какую‑либо веб‑страницу в интернете, браузер пытается получить к ней доступ по URL напрямую. Если сделать этого не удается, например запрос к целевому сайту блокируется, Ceno перенаправляет его в распределенный индекс P2P-сети. В этом индексе хранятся записи о том, на каком узле сети имеется сохраненная копия целевой страницы.
Индекс построен с использованием распределенных хеш‑таблиц DHT (distributed hash table) — таких же, которые применяются для маршрутизации в обычных торрент‑сетях. Если искомый контент обнаруживается на каком‑либо устройстве, отправивший запрос клиент получает пару «IP-адрес:порт» этого девайса. URL в таблице индекса хранятся в виде хешей, для получения которых используется специальная криптографическая хеш‑функция. Но что делать, если нужного контента в Р2Р‑сети нет?
В этом случае клиент обращается к так называемым инжекторам. Инжектор — это не деталь в автомобиле, а специальный прозрачный прокси‑сервер, который находится за пределами цензурируемого участка сети и старается оставаться доступным для клиентов Ceno.
Трафик между инжектором и клиентом шифруется с использованием SSL/TLS, чтобы никто не мог идентифицировать инжекторы, прослушивая трафик. А чтобы какой‑нибудь злодей не выдал себя за инжектор, передаваемый контент подписывается цифровой подписью EdDSA.
Если один из инжекторов вдруг «умрет» или будет заблокирован — не беда, в сети их много. Разработчики Ceno используют для этого термин «рой инжекторов». Их адреса также хранятся в распределенных хеш‑таблицах, и клиент получает их по запросу.
Если же клиенту не удастся достучаться ни до одного инжектора, он попытается передать запрос и получить требуемый контент через другие узлы сети, для которых инжекторы еще доступны. В этом случае транзитные узлы играют роль мостов, или бриджей, а между клиентом и инжектором формируется туннель через промежуточный узел. А поскольку трафик «клиент — инжектор» шифруется, бридж не видит, какую именно информацию он передает.
Перед тем как транслировать контент в P2P-сеть, инжектор подписывает его своей цифровой подписью. После этого каждый клиент сам может стать прокси‑сервером и делиться данными из собственного кеша с другими участниками сети — валидная подпись инжектора гарантирует, что этот контент действительно получен из внешнего интернета, а не подделан на внутреннем узле.
Инжекторы используют пару открытого и закрытого ключей для создания подписей Ed25519, открытые ключи достаточно малы, чтобы их можно было отправлять вместе с подписями, и представлены в виде 64 шестнадцатеричных символов или 52 символов в Base32. Разные инжекторы используют разные ключи, поэтому пользователь может выбирать, каким из них он доверяет, а каким — нет.
Скажем, если инжектор находится в той же стране, где живет пользователь, но при этом не подвержен цензуре, велик риск, что такой инжектор контролируется спецслужбами. По умолчанию доверенными считаются только инжекторы, управляемые компанией eQualitie — разработчиком браузера, но эту настройку можно изменить.
Получив запрошенную веб‑страницу, клиент, во‑первых, отображает ее в браузере Ceno, во‑вторых, сохраняет копию в локальном кеше, а в‑третьих, вносит в распределенные хеш‑таблицы DHT запись о том, что он располагает этой самой копией. Время хранения контента в кеше пользователь может настроить самостоятельно — по умолчанию он содержится там до тех пор, пока страница не будет замещена более актуальной копией либо пока кеш не будет очищен.
Если доступ к внешнему интернету пропал полностью, например работает на полную катушку национальный файрвол, контент сможет распространяться только внутри сети Ceno. При этом, если один клиент получит копию какой‑либо веб‑страницы или видеофайла от другого клиента, он сам начинает раздавать этот файл в сеть.
Таким образом, контент остается доступен, даже если первый узел, на который он был загружен из интернета, арестован отключился или перестал отвечать на запросы. Аналогично торрентам, клиенты Ceno могут тянуть файлы сразу из нескольких источников небольшими порциями, что снижает трафик и повышает доступность контента. Так в общих чертах это работает.
Проблемы безопасности браузера Ceno
Как уже упоминалось, связка Ceno + Ouinet обеспечивает доступность контента, когда подключение к интернету ограничивают, но отнюдь не анонимность. При большом желании можно отследить и самих пользователей в сети Ceno, и просмотреть, чем они делятся с окружающими, поскольку шифруется трафик только на участке «клиент — инжектор», а на канале «клиент — клиент» шифрование не используется. Это открывает широкие возможности для проведения атак типа MITM.
Из таблиц маршрутизации Ceno можно получить IP-адреса зарегистрированных в сети устройств, а значит, об анонимности тут нет и речи. А поскольку девайс с установленным Ceno не только получает, но и раздает контент, его владельца вполне можно привлечь за распространение запрещенной информации. Законодательство некоторых стран это вполне допускает.
Для обхода столь щепетильного момента браузер Ceno имеет так называемый режим приватного просмотра. В этом режиме запросы к индексу DHТ не отправляются, а контент не кешируется. Вместо этого браузер просто использует инжекторы в качестве прозрачного прокси. При этом инжектор видит IP-адрес отправившего ему запрос хоста, но не может определить, конечный это клиент сети или бридж.
К надежности всей системы тоже есть некоторые вопросы. Поскольку IP-адреса всех инжекторов в рое нетрудно получить из индекса, их теоретически можно заблокировать или заддосить. Также очевидно, что в публичном режиме просмотра невозможно получить доступ к контенту, требующему авторизации, поскольку перед отправкой запроса инжектору из него сначала удаляются логины и пароли, после чего он шифруется, а при возврате данных клиенту инжектор удаляет оттуда куки.
Делается это для того, чтобы приватные данные не утекли в Р2Р‑сеть. Таким образом, просмотр какого‑либо личного контента, вроде своей странички в заблокированной соцсети, возможен только в приватном режиме.
Есть и еще один нюанс, не совсем очевидный, но вместе с тем немаловажный. Все доверенные инжекторы в сети Ceno принадлежат компании eQualitie. Можно ли поручить передачу своей информации и собственную безопасность коммерческой организации, которая разработала и бесплатно распространяет библиотеку Ouinet, мобильный браузер и источники финансирования которой неизвестны? Это очень непростой вопрос.
Мой личный опыт
Установить Ceno Browser можно из Google Play. В целом мои ожидания подтвердились: внешне это вполне обычный Firefox для Android со стандартными элементами управления. Серфинг проходит тоже вполне традиционно, разве что страницы загружаются чуть медленнее, чем в обычном мобильном браузере, но все же вполне шустро.
При работе с Ceno я обратил внимание на то, что в публичном режиме некоторые новостные сайты содержат не самую актуальную информацию в ленте, поскольку подгружаются из кеша. А вот в режиме приватного просмотра эта проблема исчезла, зато время загрузки контента ощутимо возросло.
В основе Ceno лежит довольно старая версия Firefox, но авторы обещают обновить ее, когда основные работы над проектом будут закончены. Тем не менее использование устаревшего движка, исходники которого уже давно лежат в открытом доступе, наводит на грустные мысли об уязвимостях.
Но как бы то ни было, софтина работает, недоступные в обычном режиме сайты открываются, а что до скорости — то с неторопливостью Ceno можно смириться, особенно если учесть, что при использовании этого браузера не нужно городить огород с VPN.
Заключение
Технология Ceno может быть очень полезна для пользователей, потребляющих подвергаемый цензуре контент, а также для населения стран, где подключение к интернету нестабильно, ненадежно или дорого.
С помощью одноранговой P2P-сети организуется своего рода комьюнити, участники которого помогают друг другу делиться информацией и преодолевать различные искусственные ограничения. Тем не менее эта технология не лишена ряда недостатков, наличие которых следует обязательно учитывать, если вы решили установить Ceno на свой Android-смартфон или планшет.
Полезные ссылки: