Для выхода в скрытую сеть I2P необходимо программное обеспечение — I2P-роутер: i2pd (C++) или I2P (Java). Данное приложение содержит в себе всю внутреннюю логику I2P и обеспечивает взаимодействие с другими участниками сети. Операционная система пользователя не знает что делать с доменными именами ".i2p", поэтому их необходимо передавать напрямую в I2P-роутер посредством прокси на локальном адресе (127.0.0.1:4447 - SOCKS, 127.0.0.1:4444 - HTTP). Аналогичным образом дела обстоят с луковичными доменами ".onion", которые передаются непосредственно в Tor-маршрутизатор без попытки разрешить его наравне с другими доменными именами (ru, com, org и т.п.) через обычный DNS сервер.

В обиходе прокси протоколов закрепились два титана: HTTP и SOCKS. Заметная разница между ними в том, что HTTP-прокси не умеет передавать UDP-трафик, так как фактически работает в текстовом режиме, а SOCKS передает информацию между пользователем и конечным сервером в бинарном виде, что в конечном счете позволяет работать с любым видом трафика и с UDP в том числе, который обеспечивает комфортное использование IP-телефонии, а также позволяет играть в любые онлайн игры.

HTTP-заголовки — неотъемлемая часть протокола HTTP, на котором работают почти все ресурсы в сети интернет, которые вы открываете через веб-браузер. В них передается пользовательский запрос на сервер и информация о клиенте: язык, версия операционной системы, версия веб-браузера и иногда другие идентификационные данные. Основная информация об устройстве передается в значении "User-Agent". Предполагается, что дополнительная информация о клиенте должна помочь серверу предоставить нужную страницу в лучшем виде: на родном языке пользователя, с адаптацией под его браузер и так далее.

Обратите внимание на строку User-Agent. Если речь идет о приватности, то здесь всё плохо. Информация об операционной системе и веб-браузере в совокупности с другими передаваемыми значениями весьма уникальна, чтобы с большой точностью отслеживать (профилировать) пользователя, который может быть не авторизован на сайте и даже регулярно чистить куки.

Любимый многими SOCKS-прокси априори не вмешивается в передаваемые заголовки, так как передает всю информацию в бинарном виде, следовательно, чтобы приватно сидеть через SOCKS-прокси, нужно заменять стандартные заголовки на стороне веб-браузера. В противном случае сервер видит на каком языке вы предпочитаете общаться, какой операционной системой и каким веб-браузером пользуетесь. Между прочим говоря, Tor предоставляет только SOCKS-прокси.

I2P-роутеры имеют оба вида прокси по умолчанию, но рекомендуется использовать именно HTTP-прокси, так как используя его, вы автоматически обезличиваете свой запрос. I2P-роутер отсекает чувствительную информацию о вас и заменяет Uset-Agent загадочной строкой "MYOB/6.66 (AN/ON)", которая одинакова для всех пользователей.

Помимо этого, HTTP-прокси i2pd налету анализирует запрашиваемый URL и в случае отсутствия нужного короткого домена из зоны ".i2p" предлагает обратиться за ним на один из внутрисетевых регистраторов. SOCKS-прокси в аналогичной ситуации просто не сможет найти пункт назначения и пользователь получает в веб-браузере стандартную страницу ошибки.

На вопрос о значении загадочного набора символов в юзер-агенте I2P-роутера мне ответили в чате команды разработчиков:

"MYOB" можно перевести как "Не твое дело", 6.66 — число зверя (отсылка к Библии, книга Откровения Иоанна Богослова aka Апокалипсис), "AN/ON" — просто витиеватая форма слова "аноним".

Лично я не понял причем тут неправославное число, но надеюсь, что это не станет поводом для запрета I2P в России.

Комментарии (15)


  1. amarao
    10.12.2021 20:22
    +5

    Православие не совместимо с i2p, и любой человек, который пропагандирует i2p автоматически включается в список на изгнание из церкви. Это необратимое действие.


    1. lain8dono
      10.12.2021 21:43
      +1

      А список односвязный или двусвязный?


      1. Wesha
        10.12.2021 22:41
        +1

        Этого я сказать не могу, но он точно закольцованный, потому как говорят о "кругах Ада".


        1. amarao
          10.12.2021 23:37
          +2

          кольцо ада с делителями нуля.


      1. amarao
        10.12.2021 23:36
        +1

        Это специальный божественный список, у которого o(1) на добавление, o(bottom) на удаление, o(1) на поиск, o(1) на определение длины, o(1) на сортировку, o(1) на рандомизацию.


        1. leon0399
          11.12.2021 13:16

          Тише, тише, я же так скоро верующим стану


        1. qw1
          11.12.2021 20:54
          +1

          o малое, это вам не O большое!


    1. iChaos
      11.12.2021 16:42
      +2

      Использование юниксов тоже дело не богоугодное. Там же сплошь демоны! У FreeBSD маскот вообще чёрт с рогами и вилами!

      За использование продукции Apple - сразу на костёр. У них же эмблема - погрызенное яблоко, что уже намекает. Да и их операционки, под капотом, те же юниксы, с богомерзкими демонами! Впрочем, за Android тоже на костёр!

      Да и Интернет диавольское изобретение. Там же большинство серверов на этих ваших юниксах работает. Да и в винду демоны в последнее время активно прорываются.

      Со всех сторон обложили. Богобоязненному человеку уже и шагу ступить нельзя. Везде на демонов наткнёшься...


      1. qw1
        11.12.2021 20:55
        +1

        Windows — православный. Там иконки, а вместо демонов — службы.


  1. z3apa3a
    11.12.2021 21:35
    +2

    В этой статье чудесно все, спасибо. Сделал для себя выводы:

    1. Использовать User-Agent "MYOB/6.66 (AN/ON)" вместо юзерагента Google Chrome актуальной версии под Windows это конечно же лучший способ выглядеть незаметно, чтобы никто не мог идентифицировать. Штирлиц шел по улицам Берлина в белом маскировочном халате прикрытом еловыми ветками, стараясь выглядеть незаметно.

    2. Замаскировать User-Agent для сайта который может получить информацию о клиенте (и еще кучу параметров, включая версии движка, разрешения экрана и тп) через JS это супер-важно. А главное подменить User-Agent в браузере совершенно нереально.

    3. Читать версию сайта рассчитанную на ботов и пользователей Internet Explorer 6 гораздо интересней, чем ту версию сайта, которая рассчитана на актуальные браузеры (потому что на сервер-сайде для выбора какую версию отдавать как раз таки User-Agent и используется).

    4. http сейчас это сверх-актуальный протокол потому что https (в котором прокси ничего не знает про передаваемые заголовки и не может их поменять) ушел в небытие.

    5. Ходить на сайты без шифрования обязательно следует через tor или i2p. Без них наш трафик видит плохой провайдер и товарищ майор, которые все свое свободное время только сниффингом и занимаются, а с tor и i2p всего лишь хороший добрый человек поднявший exit node с очевидно альтруистическими намерениями, что он может сделать плохого? Он же явно не будет всякую бяку подсовывать в страничку

    6. i2p с тором как раз и нужны же для того чтобы через них всегда ходить своим любимым фаерфоксом. И фейсбучики с твиттерами читать и параллельно анонимность соблюдать.

    P.S. (sarcasm off) использовать http(s)-прокси вместо сокс действительно может быть эффективней, там где его хватает, но по совершенно другой причине - у http(s) прокси хендшейк короче, но в случае когда и прокси и клиент на одной машине это мало на что влияет.


    1. pureacetone Автор
      11.12.2021 22:09
      +2

      Рад именитому комментатору! Ave 3proxy. На минус рука не поднялась, однако не согласен с вашими доводами.

      Использовать User-Agent "MYOB/6.66 (AN/ON)" вместо юзерагента Google Chrome актуальной версии под Windows это конечно же лучший способ выглядеть незаметно, чтобы никто не мог идентифицировать.

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

      Замаскировать User-Agent для сайта который может получить информацию о клиенте (и еще кучу параметров, включая версии движка, разрешения экрана и тп) через JS это супер-важно. А главное сделать это в браузере совершенно нереально.

      От всего не защитишь, поэтому отключение JS лежит на плечах самого пользователя.

      Читать версию сайта рассчитанную на ботов и пользователей Internet Explorer 6 гораздо интересней, чем ту версию сайта, которая рассчитана на актуальные браузеры (потому что на сервер-сайде для выбора какую версию отдавать как раз таки User-Agent и используется).

      Видимо, вы не часто посещаете i2p-сайты. Лично я не встречал скрытые сайты, которые избирательны к юзер-агентам и требовательны к последним html-фичам. IE6 вполне вероятно адекватно откроет большую их часть.

      http сейчас это сверх-актуальный протокол потому что https (в котором прокси ничего не знает про передаваемые заголовки и не может их поменять) ушел в небытие.

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

      Ходить на сайты без шифрования обязательно следует через tor или i2p. Без них наш трафик видит плохой провайдер, а с ними всего лишь хороший добрый человек поднявший exit node с очевидно альтруистическими намерениями, что он может сделать плохого?

      Абсурдное обвинение. Ни в коем случае не рекомендую использовать анонимные публичные выходные узлы, тем более при отсутсвии оконечного шифрования с конечным ресурсом! Да и где нынче голый http в клирнете?)

      В статье упомянут HTTP как самый востребованный протокол для веб-серфинга и в этом нет лжи. HTTPS - наслоение для данного протокола, которое никоим образом не исключает наличие HTTP-заголовков, о которых идет речь.

      В данной статье сделан акцент на I2P и I2P-роутер, который, как правило, пропускает трафик пользователя не имеющий дополнительного шифрования в виде HTTPS, так как скрытые сети обеспечивают исчерпывающий уровень шифрования, который, однако, начинается чуть ниже локального прокси пользователя - после попадания в I2P-маршрутизатор. Следовательно, в 99% случаев I2P-роутер работает с пользовательскими заголовками в открытом виде и их подмена является первым рубежом борьбы с элементарной деанонимизацией.

      Пожалуйста не пишите статей ради статей, дайте копирайтерам отдохнуть.

      Пишу заметки без каких-либо нормативных требований по их количеству, исключительно по личному вдохновению. Материал считаю полезным, т.к. тема HTTP-заголовков в I2P в рунете вовсе отсутствует как явление.

      P.S. Наверное, ваша бурная негативная реакция на материал рождена в следствие вашего тесного знакомства с прокси-реалиями современного интернета, однако эта статья хоть и содержит знакомую вам терминологию, но повествует несколько о другой плоскости предмета, где даже слово "прокси" обозначает не опционального сетевого посредника, а непосредственный шлюз в скрытую сеть.


      1. z3apa3a
        11.12.2021 22:43
        +1

        Боюсь, что вы не поняли о чем сарказм.

        У вас на скриншоте Firefox получает css. CSS позволяет фингерпринтить браузер через media query без всякого JS. Чтобы минимизировать такие риски TorBrowser (вы же с tor сраниваете) например стартует с рандомным размером окна и рандомизирует несколько других параметров, чтобы фингерпринт получался разным при разных запусках.

        Если у вас в браузере прописан только HTTP прокси, то переход в некоторые протоколы (например в HTTP/3 или использование WebRTC, если опять же используется браузер "общего назначения") приведет к раскрытию реального адреса, потому что запрос просто не уйдет в прокси (и, как следствие, в I2P). С SOCKS кстати такие риски несколько ниже + тот же tor browser правильно конфигурирует тор в качестве прокси и отключает поддержку WebRTC. Инициировать все это может тот сайт i2p от которого вы прячетесь, точно так же он может инициировать и запрос по протоколам отличным от http.

        Поэтому гораздо важней НЕ использовать tor или i2p через обычный браузер, точно так же как НЕ использвоать их для обычного браузинга. Вырезание User-Agent в противном случае это просто смешно. Даже по невырезанным заголовкам Transfer-Encoding можно вычислить браузер, кстати.

        В случае I2p надо не подменять User-Agent а написать свой браузер MYOB/6.66 в котором будет функциональности сильно меньше чем в IE6, никакая информация о клиенте не будете утекать by design и все запросы опять же by design будут идти в i2p и только по http.


    1. orignal
      11.12.2021 23:47
      +1

      По поводу предпочтительного использования http есть другая причина: серверный I2P тоннель вставляет дополнительные заголовки с I2P адресом клиента, что позволяет HTTP серверу использовать их в своих целях.

      P.S: Не планируется ли в 3proxy реализация протокола gopher?


      1. z3apa3a
        12.12.2021 00:38
        +1

        Не знаю серьезно вы или нет, но gopher может работать через HTTP(s) и SOCKS прокси, а вот специального application-specific типа прокси для него не предусмотрено, там host в протоколе не передается.

        да, и, разумеется, то что SOCKS прокси не может править HTTP-заголовки это тоже не так, в 3proxy можно поменять или добавить заголовки для клиента подключающегося по SOCKS. SOCKS это просто интерфейс подключения клиента, дальше с траффиком можно делать все что угодно если он не шифрован или если можно его дешифровать, вопрос исключительно в реализации i2pd.


        1. orignal
          12.12.2021 01:44
          +1

          >Не знаю серьезно вы или нет, но gopher может работать через HTTP(s) и SOCKS прокси,

          У меня не получилось подсунуть 3proxy lynx-у в качестве gopher прокси (HTTP). Возможно что не так делал, и где то в документации упоминалось что не поддерживается.

          >да, и, разумеется, то что SOCKS прокси не может править HTTP-заголовки это тоже не так

          Речь шла об http vs. https — почему в I2P применяется именно http, а не https. Ну а в I2P просто нет специального серверного SOCKS тоннеля.