Blog entry by ppjln ppjln

Anyone in the world

Немного разобравшись с технологиями безопасного хранения файлов в глобальной сети, перейдем к следующему важному вопросу, поставленному во Вводной части:

Можно ли организовать доменную систему в интернете, адреса которой не могут быть заблокированы в принципе? Систему, которая не нуждается в DNS и иных централизованных средствах маршрутизации?

Вопрос и правда актуальный, поскольку для чего же еще хранить файлы в распределенном состоянии, исключающем удаление, повреждение и цензуру, как не для распространения информации для всех заинтересованных? Однако, чтобы другие люди могли просматривать ваши файлы, им нужно четко указать, как эти файлы можно найти. И чем на большую аудиторию рассчитываем, тем более простым должен быть механизм доступа к файлам.

Конечно, если разместить файл в IPFS, то его адресом там будет служить результат применения хэш-функции к этому файлу и все, кто умеет использовать программное обеспечение, необходимое для работы с этой распределенной файловой системой, легко найдут ваш файл просто по его хэшу. При этом как-то ограничить доступ технически просто нереально, поскольку для этого надо будет научиться анализировать весь интернет-трафик на предмет нахождения в нем (зашифрованного, естественно) блока со значением хэш-функции от вашего файла. Проще отключить электричество и сломать все компьютеры в мире.

Однако есть у такого способа навигации два больших недостатка:

А. Адрес получается совершенно не воспринимаемый человеком, длинная, совершенно незапоминаемая строка символов;

Б. Человек, у которого нет навыков либо желания работать со специализированным программным обеспечением, не имеет возможности получить доступ к размещенной в  информации.

А так было бы здорово организовать домен вида, например, bolschevik.liberty, да еще чтоб доступ к материалам был возможен с любого браузера, да еще чтоб домен этот был «неубиваемый», всегда работал и всегда вел именно на ваши документы и никто не мог нарушить доступ к ним по этому адресу, ни ваш провайдер, ни хостер, ни ЦРУ.

Ну что же, существует несколько уверенных решений этой задачи разного уровня сложности и эффективности. Рассмотрим их по порядку.

Сегодня ограничимся анализом ситуации, когда никаких сложных схем по размещению файлов в сети не реализуются, а наш сайт просто размещается на обычном хостинге (желательно выбрать абузоустойчивый vps или vds), или даже на локальном компьютере, просто подключенном к сети интернет, можно без выделенного IP. А вот адресацию к нему попробуем сделать «секретной», через т.н. «луковичную (onion) маршрутизацию». «Луковичная маршрутизация» - это та технология, которая в первую очередь ассоциируется с известным браузером TOR, который в декабре 2021 года Роскомнадзор начал пытаться блокировать. Но суть тут не в браузере, а в принципах маршрутизации, совершенно отличных от традиционных систем на основе DNS-серверов, составляющих основу навигации в парадигме 2.0.

При использовании технологии «луковой маршрутизации» передаваемые  пакеты инкапсулируются отдельными слоями шифрования (поэтому и луковая – слои шифрования похожи на слои обычной луковицы). Зашифрованные пакеты передаются через последовательности сетевых узлов (называемых луковыми маршрутизаторами), каждый из которых перенаправляет сообщение в непредсказуемом направлении. Когда осуществляется расшифровка последнего слоя, сообщение оказывается в месте своего назначения. При такой системе передачи данных очень сложно определить отправителя, поскольку каждый узел-посредник знает только адреса непосредственно предшествующего и последующего узлов. Луковая маршрутизация обеспечивает высокую степень несвязности, затрудняя подслушивающему определять адреса того, кто сообщения посылает, и того, кто эти сообщения принимает, но не дает полных гарантий анонимности в сети. 


Рис. 1. Схема «луковичной маршрутизации»

Помимо анонимности, луковая технология позволяет еще и формировать свою систему доменных имен для того, чтобы сделать доступ к страницам сайта немного более простым. В рамках проекта TOR была разработана технология доступа к ресурсам интернет внутри зоны .onion. Это не домен в привычном понимании (часто для него используют термин псевдо-домен верхнего уровня),  адреса в зоне  .onion  не не являются полноценными записями в базах DNS, а информация о них не хранится в корневых серверах DNS.  Изначально цель разработчиков состояла в обеспечении доступа к анонимным или псевдо-анонимным адресам сети в сети Tor. Практически доступ к ним возможен только при установке дополнительного программного обеспечения, необходимого для выхода в сеть Tor. Однако проект TOR оказался довольно популярным и многие разработчики стали включать в свои браузеры средства поддержки для работы с этой сетью. В частности, браузеры Firefox и Opera стараются поддерживать работу с onion-адресами, их и Google Chrome можно легко научить делать это с помощью установки дополнительных плагинов. Ну и, конечно, существует много проектов, изначально поддерживающих работу в сети  TOR, которые получают доступ к сайтам в доменной зоне .onion, посылая запрос через сеть Tor-серверов. В любом случае, браузер TOR работает с зоной .onion.

Имена в зоне .onion имеют свои особенности. Во-первых, они не покупаются, а генерируются самостоятельно и остаются в собственности своих создателей навечно. Ну, или до того момента, когда создатель потеряет ключи доступа к ним, а кто-то другой их «подберет».

В-вторых, они не очень хорошо выглядят. Адреса в псевдо-домене .onion представляют собой немнемонические буквенно-цифровые строки, которые автоматически генерируются на основе открытого ключа при настройке службы маршрутизации в домене .onion. Они состоят из 16 символов для старого стандарта версии V2 и 56 символов для нового стандарта версии V3.  Эти строки могут включать в себя любые буквы английского алфавита и цифры от 2 до 7 включительно, представляя в base32 либо 80-битный хэш (версия 2 V2 16-символьная), либо 256-битный ed25519 открытый ключ вместе с номером версии и контрольной суммой ключа и номером версии (версия V3 на основе 56 символов). В результате все комбинации из шестнадцати символов base32 потенциально могут быть действительными адресами версии V2 (хотя в качестве выходных данных криптографического хеша случайно выбранная строка такого вида, представляющая действительный адрес в системе .onion-маршрутизации, должна быть крайне маловероятной ). В версии V3 допустимы  только комбинации из 56 символов формата base32, набор которых корректно кодирует некий открытый ключ формата ed25519, контрольную сумму и номер версии. В настоящее время версия  V2 уже не поддерживается при формировании и, с октября 2021 года, и при  обслуживании, доменных имен типа V2.

Поэтому сейчас, на вторую половину декабря 2021 г., в сети TOR наблюдается масса проблем с открытием сайтов в зоне .onion. Адреса V2 перестают работать, а новые адреса из 56 символов еще не все себе завели, да и найти их не так-то просто – поисковые системы в сети TOR мало похожи на Яндекс или Google. Кстати, как вариант – возможно наш РКН потому и приурочил начало блокировок к этому интересному моменту: адреса  действительно не работают, в зоне .onion разброд и шатания, можно приписать эти результаты своим усилиям по блокировке и отчитаться об успешно проделанной работе.

Если же кто-то хочет получить в сети .onion красивый, человекопонимаемый адрес, придется потрудиться – необходимо перебируть свободные адреса в зоне до тех пор, пока случайным образом не встретится такой, который понравится. Например, Facebook, когда решил создать свой сайт в сети .onion, не смог продвинуться дальше подбора первых 8 символов и теперь мы можем найти эту социальную сеть по адресу https://www.facebookwkhpilnemxj7asaniu7vnjjbiltxjqhye3mhbshg7kx5tfyd.onion/

Кстати, на генерацию этого адреса потребовалось порядка двух недель при немалых вычислительных мощностях у специалистов Facebook.

Современный компьютер может с помощью сценария легко угадывать порядка 1-2 миллионов таких адресов в секунду. Отсюда мы можем легко оценить, сколько времени нам потребуется, чтобы найти доменное имя, которое мы хотим. Мы могли бы использовать тот же процесс, чтобы попытаться взломать чужой адрес .onion, но следующая таблица показывает, что это невозможно:


Таблица 1. Ожидаемое время подбора последовательности символов

Есть специальные магазины по продаже onion-доменов, но продавец знает ваш ключ и теоретически впоследствии сможет вмешаться в работу сайта.

Для того, чтобы получить в системе «луковичной маршрутизации» вечный адрес для своего сайта, необходимо выполнить следующую цепочку действий:

А. Создать сайт и разместить на хостинге. Как уже упоминалось, желательно использовать абузоустойчивый vps или vds, либо же организовывать сайт на своем домашнем компьютере. Для этого нужен только компьютер, подключенный к сети интернет, на который устанавливается какой-нибудь локальный сервер. Можно, например, установить пакет XAMPP, если на ПК установлена ОС Windows, или же пакет LAMPP для Linux. Да хоть Денвер поставьте – тоже все должно работать!

 Есть и более серьезные варианты – можно воспользоваться одним из сервисов хостинга прямо в глубине «темного интернета». Заявляется, что там есть и совершенно бесплатные хостинги, но мне их открыть не удалось, адреса V3 неизвестны, а старые – не работают. Впрочем, это явление временное и, конечно, скоро вся эта чехарда с адресами завершится.

Кстати, обращаю ваше внимание на то, что TOR и все, что с ним связано – это инструменты для скрытого, анонимного перемещения по интернету, вопросы хранения файлов не относятся к проекту TOR. Его разработчики исходят из предположения, что сайты размещены на обычных веб-серверах и у пользователей есть возможность настраивать конфигурацию этих серверов (именно поэтому для работы с TOR не подходят виртуальные хостинги, в которых множество веб-сайтов расположено на одном веб-сервере).

Если же необходимо совместить вечный хостинг (например, в стиле распределенного хостинга в оверлейной IPFS, организованного в соответствии с рекомендациями [[нашего предыдущего текста]]) с луковой маршрутизацией, то нормального решения для этой задачи сейчас нет. Во всяком случае, мне не удалось обнаружить каких-то проектов, даже отдаленно пытающихся ее решать. Скорее всего,  их и не будет, поскольку связка  IPFS + .onion выглядит бесперспективной в силу именно того факта, что TOR изначально создавался для маскировки деятельности именно в сети интернет, а не в оверлейных сетях. Он вообще не понимает, что это такое и умеет работать только с классической архитектурой веб-серверов. Для оверлейных распределенных сетей нужны другие технологии, и мы их обязательно рассмотрим в следующих текстах.  

Итак, у меня установлен пакет XAMPP. Создадим небольшой сайт – одностраничник. Для размещения сайтов в XAMPP предназначена специальная папка с именем htdocs (C:\xampp\htdocs). Перейдем в нее и создадим новую папку с именем testsite для размещения файлов нашего сайта.

Рис. 2. Папка для размещения файлов сайта

Создаем свою папку с названием testsite. Размещаем в ней уже знакомый нам по предыдущему тексту файл index.html, содержащий текст о том, что в нем что-то запрещено РосКомНадзором.


Рис. 3. Наш простой веб-сервер из одного файла

Теперь запускаем Apache в XAMPP:

Рис. 4. Сервер Apache запущен!

Наш веб-сайт теперь будет доступен с использованием адреса localhost вместе с именем папки, содержащей файлы страниц. Наша ранее созданная папка называлась testsit, поэтому полный адрес сайта HTTP: //localhost /testsite

Все получилось, локальный доступ к сайту на компьютере организован:


Рис. 5. Сервер Apache работает!

Б. Самая для нас интересная часть работы – получить вечный адрес в зоне .onion, по которому другие пользователи могли бы получить доступ к сайту в папке testsite на нашем компьютере. Конечно, это будет возможно только в то время, когда компьютер имеет выход в интернет и на нем запущен XAMPP/Apache как минимум.

Теперь переходим к настройкам сервера Apache в составе пакета XAMPP и открываем файл httpd.conf. Везде заменяем порт 80 на порт 5222 – так нам рекомендует документация проекта TOR.

 

Рис. 6. Меняем в конфигурации порт 80 на порт 5222

Если у вас другой сервер (например, VertigoServ, Денвер или еще какой-то), то нужно поменять все порты 80 на 5222, в коде файла может быть несколько упоминаний порта 80!

Далее нужно установить на компьютер браузер TOR – тот самый, функционирование которого сейчас пытаются нарушить. Ну, тут уж без подсказок! Нужно его установить и настроить так, чтобы подключение к сети TOR было действующим. Например, вам, возможно, придется поискать и подключить рабочие мосты для сети. Вообще, это не великая проблема, РКН создает не более чем неудобства, ничего страшного.

Кстати, имейте в виду, что TOR не дает гарантий анонимности. Пока вы ходите читать книжки на Флибусту, вы анонимны, поскольку никому не интересны. Но, если дело дойдет до «Советов постороннего», тут же минимум половина узлов окажутся скомпрометированными!

Переходим в папку, где установлен браузер TOR. В последней версии она выглядит так:


Рис. 7. Рабочая папка браузера TOR

Идем по следующей последовательности вложенных папок:


Рис. 8. Последовательность папок для настройки браузера

Находим файл torrc, открываем с помощью редактора. Дописываем две важнейшие строчки:

HiddenServiceDir C:\xampp\htdocs\testsite

HiddenServicePort 80 127.0.0.1:5222


Рис. 9. Вносим изменения в файл torrc.

Первая строчка указывает на адрес страниц сайта в XAMPP (при установке других пакетов она может выглядеть иначе), вторая строчка – указание на номер порта для работы со скрытым сервисом TOR.

Запускаем браузер TOR.

Вот и все. Все сохраняем и открываем папку с сайтом httpd. Что же мы видим:

Рис. 10.  .onion адрес и ключи доступа для сайта получены

В папке httpd появились три новых файла. Файл hostname содержит автоматически сгенерированный  .onion адрес нашего сайта cxebbgrjvtrwl3kreygqmoc3t5jyk7lyunhjrw2qz743widskqy4dlid.onion:

Рис. 11. Адрес сайта в сети TOR

Длинновато, конечно… Если хотим попробовать подобрать более красивое имя, необходимо использовать специальные программы. Все из них, кто подбирал 16-символьные имена, уже не годятся. Надо искать только для стандарта V3. Можете попробовать интересный проект  mkp224 (адрес на Git: https://github.com/cathugger/mkp224o/releases).

Файлы hs_ed25519_public_key и hs_ed25519_secret_key содержат ключи, гарантирующие ваши права на сайт. Без них сайт работать не будет, терять их не нужно и лучше хранить в безопасном месте. Если их кто-то похитит, он сможет управлять вашим адресом уже без вас.

Теперь посмотрим, работает ли наш сайт. Введем его адрес в браузер TOR:


Рис. 12. Наш сайт работает!

Вы можете посетить страничку по этому адресу, но, в отличие от IPFS, для того, чтобы она открылась, требуется, чтобы мой ПК был включен, был запущен сервер Apache и браузер TOR. Вероятность совпадения этих трех событий, честно говоря, не очень велика…

Подведем итоги:

1.       Работать с доменными именами .onion можно, технически это совсем не сложно. Они действительно гарантируют нам безопасность, блокировать их можно только вместе со всей сетью TOR, а это выглядит малореальным мероприятием;

2.       Имена эти некрасивые, длинные и незапоминаемые. Зато бесплатные!

3.       Если разворачивать сайт на своем ПК, то для его видимости потребуется совпадение трех факторов:

А. Работающий и подключенный к интернету компьютер с сайтом;

Б. Запущенный сервер Apache (в моем случае XAMPP/Apache);

В. Запущенный браузер TOR.

4. Просматривать страницы нашего сайта можно будет только с помощью браузеров, поддерживающих работу с сетью TOR. Это либо весьма специальные браузеры, либо стандартные с дополнительно подключенными плагинами.

На обычном виртуальном хостинге развернуть вряд ли получится, поскольку хостер не даст вмешиваться в настройки сервера и ставить дополнительные сервисы. Следовательно, нужен VPSVirtual Private Server или выделенный сервер.

Самое важное, на мой взгляд – использование .onion маршрутизации не решает самой важной проблемы. Сервер все равно должен быть развернут в одной точке и анонимность вступает здесь в конфликт с безопасностью хранения данных. К сожалению, вряд ли будет реализована интеграция технологии луковой маршрутизации и распределенных файловых систем.

Почему это так и какие существуют альтернативные подходы к проблеме, рассмотрим в следующем тексте!


[ Modified: Sunday, 6 February 2022, 10:09 AM ]