В начале 2010-х годов объединенная группа специалистов из Стенфордского университета, Массачусетского университета, The Tor Project и SRI International представила результаты своего исследования способов борьбы с цензурой в интернете.
Ученые проанализировали существовавшие на тот момент способы обхода блокировок и предложили свой метод, получивший название flash proxy. Сегодня мы расскажем о его сути и истории развития.
Введение
Интернет начинался как сеть, открытая для данных любого типа, но с течением времени многие страны начали осуществлять фильтрацию трафика. Какие-то государства блокируют отдельные сайты, вроде YouTube или Facebook, тогда как другие запрещают доступ к контенту, который содержит определенные материалы. В том или ином виде блокировки применяются в десятках стран из разных регионов, включая Европу.
Пользователи в регионах, где используются блокировки, пытаются обойти их с помощью различных прокси. Существует несколько направлений развития подобных систем, одна из технологий – Tor, была использована в ходе проекта.
Обычно перед разработчиками прокси-системам для обхода блокировок стоят три задачи, которые нужно решить:
- Rendezvous-протоколы. Рандеву-протокол позволяет пользователям в стране с блокировками отправлять и получать небольшие объемы информации для установления соединения с прокси – в случае Tor, к примеру, использует rendezvous для распространения IP-адрес Tor-ретрансляторов (бриджей). Такие протоколы используются для low-rate трафика и заблокировать их не так просто.
- Создание прокси. Системам преодоления блокировок нужны прокси вне региона с фильтруемым интернетом, чтобы передавать трафик от клиента к целевым ресурсам и обратно. Организаторы блокировок могут в ответ мешать пользователям узнавать IP-адреса прокси-серверов и блокировать их. Чтобы противостоять такой атаке Сивиллы прокси-сервис должен иметь возможность постоянно создавать новые прокси. Именно быстрое создание новых прокси – это основная суть предложенного исследователями метода.
- Камуфляж. Когда клиент получает адрес не заблокированного прокси, ему нужно каким-либо образом скрыть свою коммуникацию с ним, чтобы сессию было невозможно заблокировать с помощью инструментов анализа трафика. Ее нужно закамуфлировать под «обычный» трафик, вроде обмена данными с интернет-магазином, онлайн-игры и т.п.
В своей работе ученые предложили новый подход к быстрому созданию прокси.
Как это работает
Ключевая идея заключается в использовании множества веб-сайтов для создания огромного количества прокси с коротким сроком жизни не превышающим несколько минут.
Для этого создается сеть небольших сайтов, которыми владеют волонтеры – вроде домашних страниц пользователей, живущие вне региона с блокировками интернета. Эти сайты никак не связаны с теми ресурсами, к которым хочет получить доступ пользователь.
На такой сайт устанавливается небольшой бейдж, представляющий собой простой интерфейс, созданный с помощью JavaScript. Пример такого кода:
<iframe src="//crypto.stanford.edu/flashproxy/embed.html" width="80" height="15" frameborder="0" scrolling="no"></iframe>
Вот так выглядит бейдж:
Когда браузер из локации вне региона с блокировками попадает на такой сайт с бейджем, он начинает передавать трафик в сторону этого региона и обратно. То есть браузер посетителя сайта становится временным прокси. После того, как этот пользователь уходит с сайта, прокси уничтожается без каких-бы то ни было следов.
В результате возможно получение производительности, достаточной для поддержания Tor-тоннеля.
Помимо Tor Relay и клиента пользователю понадобится еще три элемента. Так называемый фасилитатор (facilitator), который получает запросы от клиента и соединяет его с прокси. Коммуникация происходит с помощью транспортных плагинов на клиенте (вот версия для Chrome) и Tor-relay осуществляется переключение с WebSockets на чистый TCP.
Типичная сессия при использовании этой схемы выглядит так:
- Клиент запускает Tor, клиент flash-proxy (браузерный плагин) и отправляет запрос на регистрацию фасилитатору с помощью протокола rendezvous. Плагин начинает прослушивание удаленного соединения.
- Flash-прокси появляется онлайн и обращается к фасилитатору с запросом на соединение с клиентом.
- Фасилитатор возвращает регистрацию, передавая flash-прокси данные для соединения.
- Прокси соединяется с клиентом, данные которого ему прислали.
- Прокси подключается к транспортному плагину а Tor-релее и начинает обмен данными между клиентом и релеем.
Особенность данной архитектуры в том, что клиент никогда не знает заранее, куда именно ему нужно будет подключаться. По факту, транспортный плагин принимает фейковый адрес назначения только для того, чтобы не нарушать требования транспортных протоколов. Затем этот адрес игнорируется и создается туннель к другой конечной точке – Tor-релею.
Заключение
Проект flash-прокси развивался несколько лет и в 2017 году создатели прекратили его поддержку. Код проекта доступен по этой ссылке. На смену flash-прокси пришли новые инструменты обхода блокировок. Один из них – проект Snowflake, построенный на схожих принципах.
Комментариев нет:
Отправить комментарий