Компания eQualite опубликовала выпуск мобильного web-браузера CENO 2.0.0 (CEnsorship.NO), предназначенного для организации доступа к информации в условиях цензуры, фильтрации трафика или отключения сегментов интернета от глобальной сети. Браузер построен на основе движка GeckoView (применяется в Firefox для Android), расширенного возможностью обмена данными через децентрализованную P2P-сеть, в которой пользователи участвуют в перенаправлении трафика к внешним шлюзам, обеспечивающим доступ к информации в обход фильтров. Наработки проекта распространяются под лицензией MIT. Готовые сборки доступны в Google Play.
P2P-функциональность вынесена в отдельную библиотеку Ouinet, которая может быть использована для добавления средств обхода цензуры в произвольные приложения. Браузер CENO и библиотека Ouinet позволяют получить доступ к информации в условиях активной блокировки прокси-серверов, VPN, шлюзов и прочих централизованных механизмов обхода фильтрации трафика, вплоть до полного отключения интернета в цензурируемых областях (при полной блокировке контент может раздаваться из кэша или локальных накопителей).
Проект использует кэширование контента на стороне каждого пользователя с поддержанием децентрализованного кэша популярного контента. При открытии пользователем сайта загруженное содержимое кэшируется в локальной системе и становится доступным участникам P2P-сети, которые не могут получить прямой доступ к ресурсу или к шлюзам для обхода блокировки. На каждом устройстве хранятся только данные, непосредственно запрошенные с этого устройства. Идентификация находящихся в кэше страниц осуществляется с использование хэша от URL. Все связанные со страницей дополнительные данные, такие как изображения, скрипты и стили, группируются и отдаются вместе по одному идентификатору.
Для получения доступа к новому контенту, прямой доступ к которому заблокирован, применяются специальные прокси-шлюзы (injector), которые размещаются во внешних частях сети, не подверженных цензуре. Информация между клиентом и шлюзом шифруется с использованием шифрования на базе открытых ключей. Для идентификации шлюзов и предотвращения внедрения вредоносных шлюзов применяются цифровые подписи, а ключи сопровождаемых проектом шлюзов включены в поставку браузера.
Для доступа к шлюзу в условиях его блокировки поддерживается подключение по цепочке через других пользователей, которые выступают в роли прокси для проброса трафика к шлюзу (данные шифруются ключом шлюза, что не позволяет транзитным пользователям, через системы которых передаётся запрос, вклиниться в трафик или определить содержимое). Клиентские системы внешние запросы от имени других пользователей не отправляют, а либо отдают данные из кэша, либо используются в качестве звена для установки туннеля к прокси-шлюзу.
Обычные запросы вначале браузер пытается доставить напрямую, а если прямой запрос не проходит – выполняет поиск в распределённом кэше. При отсутствии URL в кэше информация запрашивается через подключение к прокси-шлюзу или обращение к шлюзу через другого пользователя. Конфиденциальные данные, такие как cookie, в кэше не сохраняются.
Каждая система в P2P-сети снабжается внутренним идентификатором, который используется при маршрутизации в P2P-сети, но не привязан к физическому местоположению пользователя. Достоверность передаваемой и сохраняемой в кэше информации обеспечивается через применение цифровых подписей (Ed25519). Передаваемый трафик шифруется при помощи TLS. Для доступа к информации о структуре сети, участниках и прокэшированном контенте применяется распределенная хэш-таблица (DHT). При необходимости в качестве транспорта помимо HTTP могут использоваться µTP или Tor.
При этом CENO не обеспечивает анонимность и информация о отправляемых запросах доступна для анализа на устройствах участников (например, по хэшу можно определить, что пользователь обращался к определённому сайту). Для конфиденциальных запросов, например, требующих подключения к своей учётной записи в почте и социальных сетях, предлагается использовать отдельную приватную вкладку, при использовании которой данные запрашиваются только напрямую или через прокси-шлюз, но без обращения к кэшу и без оседания в кэше.
Среди изменений в новом выпуске:
- Изменено оформление панели и переделан интерфейс конфигуратора.
- Предоставлена возможность определения поведения по умолчанию кнопки Clear и удаления данной кнопки с панели и из меню.
- В конфигураторе появилась возможность очистки браузерных данных, в том числе с выборочным удалением по списку.
- Выполнена перегруппировка опций меню.
- В отдельное подменю вынесены опции для настройки интерфейса.
- Обновлена версия библиотеки Ouinet (0.21.5) и дополнения Ceno Extension(1.6.1), движок GeckoView и библиотеки Mozilla синхронизированы с Firefox for Android 108.
- Добавлена локализация для русского языка.
- Добавлены настройки для управления параметрам темы оформления и поисковыми движками.