• Как подружить питон с Невидимым Интернетом? Основы разработки I2P приложений на Python и asyncio

    • Tutorial


    Проект Невидимый Интернет (далее просто I2P) представляет разработчикам платформу для разработки приложений с усиленными требованиями по приватности пользователей. Это виртуальная сеть поверх обычного Интернета, в которой узлы могут обмениваться данными и при этом не раскрывать свой настоящий IP адрес. Вместо IP адресов внутри Невидимого Интернета соединения происходят между виртуальными адресами, которые называются I2P Destination. Можно иметь сколько угодно таких адресов и менять их хоть для каждого соединения, они не предоставляют другой стороне никакой информации о настоящем IP адресе клиента.


    В этой статье описаны базовые вещи, которые нужно знать для написания I2P приложений. Примеры кода приведены на Python с использованием встроенного асинхронного фреймворка asyncio.

    Читать дальше →
  • Реализация нового транспортного протокола NTCP2 сети I2P

      Транспортные протоколы I2P были разработаны почти 15 лет назад, когда основной задачей было сокрытие содержимого трафика, а не факт использования того или иного протокола. DPI(deep packets inspection) и блокировку трафика в то время никто не принимал в расчет. Однако времена меняются и хотя существующие протоколы I2P по прежнему защищены довольно хорошо, возникла необходимость в новом транспортном протоколе, отвечающему на существующие и будущие угрозы, и, в первую очередь, DPI, анализирующий длину пакетов. Помимо этого, новый протокол использует самые современные достижения криптографии. Полное описание протокола здесь. За основу взят Noise, в котором в качестве хэш-функции используется SHA256, а в качестве DH (в терминологии Noise) — x25519.

      image
      Читать дальше →
    • Новая жизнь для XMPP. Делаем мессенджер, который не получится заблокировать

      • Tutorial


      Идея сделать независимый от корпораций P2P мессенджер не нова, однако разработка нового протокола и клиентских приложений для него достаточно дорогой и долгий процесс. А что, если использовать старый добрый XMPP, в котором уже все давно продумано и запилено?


      Но это же не настоящий peer-to-peer, скажете вы, для работы XMPP нужен собственный сервер и домен. Это так, но мы можем запустить сервер на локалхосте, а для связи с серверами других пользователей использовать скрытый сервис в виртуальной сети I2P. Использование I2P избавит нас от необходимости платить за домен с хостингом, а так же защитит наши коммуникации от преступной онлайн-слежки.


      Таким образом, получаем:


      • Гибридный P2P мессенджер, который можно запускать и на пользовательских устройствах, и на полноценном сервере.
      • Фичи, которых не хватает другим P2P мессенджерам: оффлайн сообщения, хранение контактов и истории "в облаке", работа нескольких клиентов с одним аккаунтом.
      • Готовые клиентские приложения на любой вкус.
      • За счет использования I2P, неуязвим для различных *надзоров (сори за мат).

      Приступим же к реализации...

      Читать дальше →
    • Как поднять свой i2p-сайт(eepsite) на VDS(VPS) под Ubuntu(LAMP). Краткий инструктаж для новичков

      Предыстория: намедни написалась книжка относительно нового государственного строя (Государство-домен), который ждет нас в близком будущем. А поскольку Роскомнадзор реагирует на подобные вещи неадекватно – решил завести под свою писанину сайт в приватной сети i2p. По ходу создания пришлось решать некоторые технические вопросы, которые я ниже и рассмотрю, пытаясь сэкономить ваше время, заодно и шпаргалка мне будет.

      Итак, имеется удаленный VPS под Ubuntu, и разместить сайт нужно именно на нем. Ибо, можно, конечно сделать его у себя на ноуте, но когда ноут выключен – сайт ведь недоступен (лично меня это неизменно раздражает в .i2p и .onion).

      Далее я предполагаю, что ваш LAMP уже настроен, и нормально отдает контент в обычный интернет. Т.е. у вас на нем уже крутится пара-тройка обычных (не-i2p) сайтов.

      Сначала ставим i2p на Ubuntu:

      sudo apt-add-repository ppa:i2p-maintainers/i2p
      sudo apt-get update
      sudo apt-get install i2p

      Конфигурируем i2p-роутер как постоянно работающий демон:

      sudo dpkg-reconfigure -plow i2p
      Читать дальше →
    • Импортозамещение в I2P: подпись по ГОСТ Р 34.10-2012

        Эллиптическая криптография, обладая высокой стойкостью и широкой распространенностью, всегда вызывала много споров и спекуляций на предмет возможных закладок для разных кривых и схем подписи. При этом никто не смог привести пример подобной закладки или же доказать их отсутствие. Потому, в отличие от симметричной криптографии, где лидерство безоговорочно принадлежит AES, асимметричная криптография используется разных видов, в зависимости от предпочтений, технических или законодательных требований. Дополнительные типы подписей адресов в I2P предоставляют больший выбор и гибкость для приложений. ГОСТ поддерживается в openssl через EVP интерфейс, однако в версии 1.1 он исключен из стандартной поставки, кроме того существующая реализация предполагает хранение и передачу публичных ключей и подписей в формате DER, а I2P работает непосредственно с числами, определяя необходимые параметры из типа подписи.
        Читать дальше →
        • +17
        • 7,9k
        • 8
      • I2P: Ускорение асимметричной криптографии с помощью таблиц

          Асимметричная криптография в I2P всегда приводила к замедлению работы: алгоритм Диффи-Хельмана при установлении транспортных сессий и, на мой взгляд, неудачный выбор схемы Эль-Гамаля в I2P адресах. Это особенно заметно при работе на слабом железе и floodfill-ах. Предложенный в статье подход основан на использовании некоторых особенностей I2P и позволяет добиться существенного ускорения работы и снижения нагрузки на процессор.

          Читать дальше →
          • +16
          • 6,8k
          • 3
        • Размещаем сайт в анонимной сети I2P (+ параноидальный режим)



            Предположим, что ты уже зашел несколько раз в I2P, початился там с ребятами в irc, проникся идеей ламповой невидимой и задумался о собственном (в)кладе в I2P. В раздумьях об этом ты посидел пару дней перед раскрытым блокнотом — узнав попутно из новостей, что не только флибуста, но и рутрекер был запрещен, — и наконец вспомнил про то что ты Сноуден и основатель викиликс (весьма неожиданный поворот, признаюсь, я сам не ожидал от тебя такого), и уже давно ищешь плацдарм для размещения общественно значимой информации. Например, ты решил выкладывать куда-нибудь картинки с котиками, которых ты налайкал в твиттере (Сноуден лайкает котиков в твиттере, ты знал?). И выбор твой пал на I2P.
            Читать дальше →
          • Как пользоваться i2pd: исчерпывающая инструкция под MS Windows

            • Tutorial


            I2p — это сеть со специализацией на анонимности внутрисетевых ресурсов, этим она отличается от сети tor, основной задачей которой являются не внутренние ресурсы, а построение безопасного доступа к интернету. Зная об этих двух особенностях, люди могут гораздо эффективнее работать в обеих сетях.

            В i2p ты можешь заниматься множеством вещей: посещать и создавать сайты, форумы и торговые площадки, принимать почту, чатиться и скачивать торренты, и многое многое другое. Программа i2pd способна работать с большим числом программ и сервисов.
            Читать дальше →
          • Как в первый раз запустить i2pd: инструкция под Debian/Ubuntu

            • Tutorial


            I2p — это сеть со специализацией на анонимности внутрисетевых ресурсов, этим она отличается от сети tor, основной задачей которой являются не внутренние ресурсы, а построение безопасного доступа к интернету. Зная об этих двух особенностях, люди могут гораздо эффективнее работать в обеих сетях.

            В i2p ты можешь заниматься множеством вещей: посещать и создавать сайты, форумы и торговые площадки, принимать почту, чатиться и скачивать торренты, и многое многое другое. Программа i2pd способна работать с большим числом программ и сервисов.
            Читать дальше →
          • I2P: Подпись и проверка подписи EdDSA

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

              Алгоритм подписи EdDSA


              В отличие от RSA, где секретный и публичный ключ можно использовать непосредственно, здесь приходится использовать более сложную схему и вводить некоторый дополнительный объект. EdDSA концептуально реализует алгоритм DSA, распространяя его на случай кривых. В качестве подписи выступает пара чисел (R,S), для EdDSA каждое длиной 32 байта, итого длина подписи — 64 байта. Подписываются не сами данные, а хэш он них. В качестве хэш-функции используется SHA512. Далее малым буквами будут обозначаться числа, а большими буквами — соответствующая точка на кривой, полученная умножением числа на базовую точку B.
              Читать дальше →
              • +11
              • 5,5k
              • 1
            • I2P: Прозрачная реализация подписи EdDSA

                В последнее время все большую популярность набирает электронная подпись Ed25519, основанная на разновидности эллиптической кривой, предложенной Бернштейном. По мере увеличения числа узлов I2P с данным видом подписи возникла необходимость ее поддержки в своей реализации I2P, поскольку Ed25519 не входит в состав популярных криптографических библиотек. Как правило используются разновидности ref10 из библиотеки SUPERCOP, реализованной самим Бернштейном на ассемблере, и затем портированной на другие языки. Данная реализация работает хорошо и быстро, однако у нее есть главный недостаток — она непонятна. Действительно, если заглянуть в исходный код, то можно увидеть большое количество однотипных строк, оперирующих с множеством «магических» чисел, понять же, что они означают, без углубления в теорию не представляется возможным. Целью данной статьи является математически прозрачная реализация Ed22519, используя лишь стандартные операции с большими числами, присутствующие в любой криптографической библиотеке, со скоростью работы, достаточной для практического использования в I2P.
                Читать дальше →
              • Интервью со Станиславом Шалуновым — разработчиком технологии, используемой в BitTorrent и Apple

                  Друзья Кэшбэк-сервиса Кубышка — FRISCO (Первый Русский Инкубатор в Кремниевой Долине), — взяли интервью у Станислава Шалунова, основавшего компанию, разработавшую технологию для передачи данных p2p, которая была куплена компанией BitTorrent. Сейчас эта технология применяется в продуктах компаний BitTorrent и Apple.

                  В данный момент Станислав работает над компанией Open Garden, и приложением FireChat, которыми пользуются уже более 7 млн. пользователей для передачи данных между находящимися неподалеку друг от друга устройствами.


                  Читать дальше →
                • Анонимные платежи: Dash или Bitcoin+Миксеры?

                    image

                    Иногда важно сохранять не только свою личную анонимность, но также анонимность своих финансов. Когда вашим деньгам требуется анонимность — ошибки недопустимы.

                    ПОТРЕБНОСТЬ

                    Правительства многих стран результативно работают над установлением тотального мониторинга и контроля за движением денег как своих граждан, так и граждан других государств. Общественному мнению навязывается стереотип: «Если кто-то что-то скрывает, значит наверняка он — преступник, уклоняется от уплаты налогов, спонсирует терроризм или замешан в прочих грехах». В некоторых странах использование наличных, драгметаллов, криптовалют, офшоров и других инструментов, затрудняющих финансовый мониторинг, автоматически наводит на вас подозрения.

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

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

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

                    Хорошо, я не буду углубляться в философию, а просто констатирую тот факт, что у большинства людей и бизнесов имеется желание (а зачастую — необходимость) сохранить анонимность своих финансов. И причина этого не в том, что они замышляют что-то плохое, а в том, что они сами не хотят стать жертвами чужих злонамеренных или преступных планов.
                    Читать дальше →
                  • Для чего используют TOR?

                      Вступление


                      Я не буду разводить параноидальные сказки о том, что NSA и ФСБ за всеми следит. Просто примем за базовый тезис, что tor и i2p — «наше всё». К сожалению, в контексте TORа часто можно слышать только про silkroad и детскую порнографию. Мол, рассадник, раскачивающий и покушающийся.

                      Я управляю несколькими tor-exit node'ами и i2p маршрутизаторами. Чтобы избежать вопросов, мой работодатель к ним не имеет никакого отношения: все эти ноды — исключительно за мой счёт, в свободное от работы время. Самой старой из них уже почти год, самой молодой — примерно 4 месяца. За это время я не получил ни одного abuse report'а (я сам работаю в хостинговом бизнесе, так что хорошо представляю себе процесс реакции на «абузу» — она в первую очередь пересылается клиенту).

                      Не смотря на отсутствие abuse'ов, вопрос оставался: для чего люди используют TOR?

                      Контроль над exit node'ой позволяет посмотреть на проходящий трафик. Понятно, что мы исключаем весь шифрованный трафик (TLS, SSH), а так же весь трафик на .onion узлы. Однако, среди остального мы можем посмотреть на примерное распределение ресурсов по популярности.

                      Забегая вперёд, слегка упрощённый ответ на вопрос статьи:


                      (более подробная табличка — в конце статьи)

                      Методология измерения

                      Читать дальше →
                    • Собственная реализация https с использованием crypto++ для начальной загрузки I2P

                        Каждый новый узел I2P при первом запуске должен откуда то получить начальный список узлов. Для этого существуют специальные сервера (reseed), адреса которых жестко прописаны в коде. Раньше загрузка осуществлялась по http, однако с недавних пор reseed-ы стали переходить на https. Для успешной работы «пурпурного» I2P также потребовалось внести соответствующие изменения. Используемая там криптографическая библиотека crypto++ не поддерживает ssl. Вместо использования дополнительной библиотеки типа openssl, фактически дублирующей криптографию, был выбран рассмотренный ниже вариант.
                        Начальная загрузка это единственное место в I2P, где используется https.
                        С другой стороны, статья будет интересно тем кому интересно понять, как работает ssl и попробовать самому.

                        Читать дальше →
                      • Прокси сервер для свободного интернета

                        Однажды мне окончательно надоели странички вроде «данный ресурс заблокирован по требованию», которые стали попадаться все чаще и чаще. А еще все больше стало упоминаний про «глубинный интернет», i2p, tor, onion, анонимные p2p сети и вообще повеяло хакерской романтикой детства, когда интернет был чем-то загадочным и был доступен только с двух часов ночи со скоростью 31200…

                        В общем, была поставлена цель: сделать прокси сервер, через который можно заходить на любые сайты (включая сайты в доменах .i2p и .onion) в обход любых блокировок. Цель обеспечения анонимности не ставилась.

                        Ужа с ежом удалось скрестить, и вот теперь я, как и 17 лет назад, исследую глубинные слои интернета. Кстати, если говорить про i2p, то скорость по ощущениям не намного больше, чем у интернета 17 лет назад. История циклична.

                        Статья не призывает к каким-либо действиям политического или криминального характера и предназначена для тех, кто не любит рамок и ограничений и сам выбирает что и как читать.

                        Как это работает:

                        Основным прокси сервером явлется squid.
                        Через cache_peer (вышестоящий прокси) squid подключается к i2p и tor. tor является Socks прокси, а squid — http прокси, поэтому между squid и tor встраивается прослойка privoxy.
                        Также мы имеем обновляемый ACL список всех заблокированных ресурсов в русском интернете.
                        Squid обрабатывает запросы от браузеров следующим образом:
                        Если запрашивается URL в домене .i2p, то запрос передается по цепочке в i2p.
                        Если запрашивается URL в домене .onion, то запрос передается по цепочке в tor.
                        Если запрашивается запрещенный URL, то запрос передается по цепочке в tor.
                        Все остальные запросы отправляются напрямую самим squid.

                        Инструкция как сделать интернет без ограничений своими руками:
                        Читать дальше →
                      • Краткая инструкция: GitHub через I2P

                          Навеяно публикацией «Github опять заблокирован».

                          Новость о блокировке гитхаба заставила задуматься об изготовлении костылей.

                          Почему-то сразу пришла в голову мысль об I2P.

                          И это действительно оказалось несложно.
                          Читать дальше →
                        • «Пурпурный» I2P — окно в мир C++ приложений

                            Известно, что официальный I2P написан на Java, что само по себе отталкивает потенциальных пользователей, тем самым снижая полулярность сети, чем могла бы быть. Кроме того Java приложения достаточно требовательны к ресурсам, потому запуск I2P на слабых устройствах сопряжен с трудностями, а порой и невозможен. Также выяснилось что Java в Африке не та же самая Java, и поддержка стойкой криптографии зависит от страны, из-за чего пришлось отложить массовый переход на ECDSA.
                            Поэтому реализация I2P на C++ всегда была актуальной задачей. Из множества попыток «пурпурный I2P» (Purple I2P) на настоящий момент является наиболее успешной и пригодной для практического использования. Название обусловлено цветом рубашки на иконке I2P, чтобы отличать от официального I2P, где цвет — красный и обозначает семейство приложений, использующих данную реализацию I2P. i2pd же представляет собой I2P маршрутизатор общего назначения.

                            Читать дальше →
                          • Построение собственной коммуникационной сети поверх I2P

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

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

                              Читать дальше →
                            • Сервис анонимной аренды хостинга с i2p-доступом

                                (внимание: сервиса нет, есть только идея)

                                Во время публикации информации в обход цензуры, возникает проблема: как опубликовать информацию без раскрытия своей личности и данных, ведущих к раскрытию личности? IP адрес можно считать достаточной информацией для выяснения личности обратившегося к серверу. С учётом, что все хостеры обычно вполне кооперируются с тоталитарными правительствами, процесс установления владельца/автора того или иного сайта не представляет проблем. Наивные обещания компаний «не раскрывать данные клиентов» требуют очень высокого доверия, кроме того, не всегда могут быть исполнены (lavabit тому примером).

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

                                Коммерческая компания покупает услуги хостинга (VDS, dedicated server и т.д.), конфигурирует там i2p роутер плюс ssh-сервер, работающий через i2p, и отдаёт реквизиты своему клиенту, который заказывает и оплачивает услуги только через i2p. Оплата происходит любой криптовалютой (пока условимся, что bitcoin), всё взаимодействие происходит через i2p сеть.

                                Описание со стороны компании


                                Компания имеет сайт в i2p, принимает биткоины. При поступлении оплаты компания заказывает услугу у указанного поставщика (в обычном интернете), настраивает i2p, отдаёт реквизиты клиенту. По запросу клиента сервер перезагружается/переустанавливается, так же возможна пересылка почты с саппортом. В самом продвинутом варианте — API для управления.

                                Описание со стороны клиента


                                Зайдя на i2p сайт клиент заказывает хостинг «в интернете», получает доступ на свой сервер через i2p, где размещает нужную информацию.

                                Описание со стороны тоталитарного режима


                                В интернете есть сайт. Сайт находится на сервере. Сервер принадлежит хостеру, был заказан компанией-посредником, после чего продан анониму за биткоины, у которых в истории фигурируют несколько миксеров и операции внутри i2p-сети. Можно изъять сервер, можно наказать компанию (если она находится в юрисдикции тоталитарного режима), найти автора по логам, записанному трафику и посредством ханипотов не получается.

                                Доверие серверу

                                Читать дальше →

                              Самое читаемое