Пользователь
46,6
рейтинг
18 июня 2013 в 17:34

Разработка → Hyperboria: Маршрутизация


Продолжая цикл статей об Hyperboria, в этой статье будут рассмотрены следующие аспекты:
1) Количество IP адресов в Hyperboria, как они генерируются.
2) Коллизии и как с ними бороться.
3) Почему используется служебный (приватный) диапазон IPv6 адресов.
4) Роутеры и Hyperboria.
5) Маршруты и DHT.
6) Защищенность сети.

Количество IP адресов в Hyperboria


Общее количество доступных адресов в Hyperboria — 1 329 227 995 784 915 872 903 807 060 280 344 576
IP адреса в сети hyperboria генерируются с помощью псевдо-случайного генератора случайных чисел, используя при генерации Mac адрес вашего сетевого адаптера.

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

Коллизии и как с ними бороться


Раз мы выяснили что в сети могут быть одновременно два одинаковых IP адреса, то что как же будет ходить трафик между ними?

1) Первый случай — у клиентов разные приватные ключи

Трафик будет транслироваться аналогично принципу Multicast на оба IP адреса, но только лишь обладатель верного приватного ключа сможет его прочитать, остальная часть будет отброшена cjdns.

2) Второй Случай — у клиентов одинаковые приватные ключи

Система будет себя вести по принципу Multicast, трафик смогут прочитать оба узла

Другими словами — что бы взломать сеть и расшифровать ваш трафик — нужно получить ваш приватный ключ.

Определить наличие двойника можно с помощью трассировки до вашего ipv6 адреса с другого узла, затем выключить свой узел и сделать трассировку снова, она должна отличатся. Либо по аналогичной схеме использовать ping6.

Почему используется служебный (приватный) диапазон IPv6 адресов


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

Роутеры и Hyperboria


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

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

После установки прошивки, роутер создает 2 беспроводных интерфейса, 1 — для создания обычной wi-fi сети, 2 — для подключения к другим нодам.

Роутер сканирует сеть на наличие известных нод каждые 30 секунд и пытается к ним подключится, если подключение проходит успешно — происходит обмен ключами и устанавливается связь.

Клиентам за роутером выдается серый приватный ipv6 адрес который, т.е роутер работает в режиме Nat, если же у клиента установлен клиент cjdns то подключение к роутеру происходит с помощью второй сети.

Маршруты и DHT


Предположим вы подключены к ноде 1, а ваш друг к ноде 650, вам нужно передать ему информацию.
Схема получения маршрута будет выглядеть следующим образом:
1) Ваш узел попробует поискать в своей таблице маршрутизации путь к вашему другу
2) Если он там не найден произойдет запрос по DHT сети к узлу выше уровнем (или ко всем узлам, к которым вы подключены)
3) Если маршрут все еще не найден произойдет рассылка всем в сети пакета на поиск узла, первый пришедший авторизованный ответ — считается верным

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

Защищенность сети


В сети Hyperboria невозможно провести следующие атаки:
1) MITM — если внутри вашего маршрута возникнет не доверенный узел то он не сможет обрабатывать пакеты ему не принадлежащие
2) Подключение к подставному узлу — Если даже вы сообщили ему публичный ключ, он все равно не может читать информацию которая принадлежит вам.
3) DPI в сети не может работать по причине №2
4) Ваш IPv6 адрес невозможно сопоставить с реальным

Итоги


В ближайшем времени должна выйти портированная версия приложения для Windows, это позволит простым пользователям в два клика подключится к сети.

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

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

И напоследок, вот так выглядила сеть 2 недели назад http://hype.rusblock.com/cjdnsmap/map_old.png а вот так сейчас http://hype.rusblock.com/cjdnsmap/map.svg
Узел 9c0e — публичная нода


Согласно топику http://habrahabr.ru/post/183474/ можно попробовать построить свою Hyperboria Mesh сеть в России. Она не должна попадать под законы о провайдерах или о связи, из-за того, что канал предоставляется от пользователя — пользователю, понятие «сеть» не применимо к Hyperboria.

Еще о Hyperboria:


Hyperboria: Интернет 2.0
Hyperboria: Как все устроено
Форум о сети
Shift @shifttstas
карма
57,0
рейтинг 46,6
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Спецпроект

Самое читаемое Разработка

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

  • +3
    Согласно топику habrahabr.ru/post/183474/ можно попробовать построить свою Hyperboria Mesh сеть в России.

    Собственно где мануал как это сделать и HCL?
    • 0
      Предлагаю просто писать город / район желающих организовать сеть в России если таким образом будет понятно где можно организовать сеть, можно было бы начать с Москвы.

      Инструкция по созданию сети варьируется в зависимости от железа, если будет инициативная группа, то можно выбрать железо и начать творить
      Общая инструкция для OpenWRT есть тут github.com/cjdelisle/cjdns-openwrt

      Вот реально работающая сеть в Сиэтле www.seattlemesh.net/ на Ubiquiti Nanostation
      • 0
        И еще: CJDNS работает на 2 уровне OSI при создании Mesh сетей
      • +1
        Про начать с МСК идея здравая, линки же как я понимаю могут быть не только по 802.11 но и через Интернет?
        • 0
          Могут, но надо именно Full Mesh попробовать сделать
      • +2
        Было-бы лучше огранизовать какой-либо веб-ресурс для этого.
        Мне это видится так: гуглокарта, в которой за каждым городом закреплена ссылка на тему на форуме, где можно найти информацию о нодах. Или ещё лучше: информация о нодах закреплена в информаци о городе, а информация добавляется после проверки модераторами.
  • –3
    Имхо, затея с приватным диапазоном — бред. Что мешало запросить диапазон нормальный?
    • +1
      Почему?
    • 0
      • 0
        Ответ неверный. Если бы хамачевский диапазон был реально зарегистрирован на хамачей, проблемы бы не было. Точно так же можно зарегистрировать сеть /32, например, которой хватит достаточно надолго, причём получить вполне реальные адреса в результате и не иметь проблем с другими приватными сетями, заметьте.
        • +1
          Получать реальные адреса тут не нужно, т.к. они всё равно не будут использоваться.
          • 0
            Именно для этого их и надо получить (= зарегистрировать), чтобы они не использовались никем другим.
    • +4
      совершенно не бред, количество адресов — огромное, адресация — прозрачная и отсутствие конфликтов
      • 0
        Отнюдь. Конфликты будут с другими приватными сетями. В этом и парадокс приватных сетей — они провоцируют на конфликты, хотя их пользователи используют их, чтобы конфликтов избежать.
        • 0
          С обычными приватными? Или с чем?
          • 0
            С точно такими же другими приватными. Потому что кто-то обязательно заиспользует такой же диапазон.
            • 0
              Диапазон Hamachi больше никто не использует кроме привычного ipv4 т.е глупо делать систему которая изначально конфликтует с существующей.
              • 0
                Ммм? Я вроде не говорил ничего о Hamachi. Но вообще, именно так, Hyperboria уже конфликтует, потому что она использует диапазон, который может использовать кто угодно для каких угодно целей, но не для таких целей, которые Hyperboria преследует.
                • +1
                  Вы верите что домашние сети будут построены на основе ipv6 private ip?
                  Сначала пусть глобальная сеть то на них перейдет…
                  • 0
                    Я надеюсь, что нет, потому что иначе нас всех ждут серьёзные проблемы. Тем не менее, это ещё один довод не использовать приватные адреса.
                  • 0
                    Не могу найти — а какой конкретно префикс они себе захапали?
                    • 0
                      fc2c::/что-то, судя по всему
                      • 0
                        Спасибо, Кэп!
                        А конкретнее?
                        • 0
                          Ну а какая разница-то? Суть ведь не меняется. Приду я в локалку, в которой внезапно приватный диапазон используется, например, под NAT64, и не смогу к нему получить доступ.
                          • 0
                            Собственно, шансы словить такое зависят от длины маски. Все-таки если они взяли /9 (после TTL 0 и нулевых портов для общения между соседями я не удивлюсь), это намного печальнее, чем /48 c очень рандомной комбинацией цифр в первых 48-и битах.
                            Да и не будет unique local так популярен, как сейчас популярны адреса из RFC1918. Смысла нет.
                          • 0
                            Хм. 1329227995784915872903807060280344576 = 2^120. Они реально взяли себе fc00::/8. Ну хоть не /7, и на том спасибо, блин…
  • +5
    ключь


    ну блиииин
    • +5
      Прошу прощения, исправил, но лучше бы в Личные Сообщения
  • +1
    4) Ваш IPv6 адрес невозможно сопоставить с реальным

    Почему так получается? Разве нельзя сопоставить событие отправки пакета внутри сети и событие отправки пакета, в котором будет содержаться пакет Hyperboria, пусть даже в зашифрованном виде?
    • 0
      Hyperboria постоянно общается через DHT с другими пирами, если к вам подключены еще пиры то узнать что и куда ходит довольно проблематично, но быть может и реально.

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

      Хотя опять же, из-за большого шума в сети и потока трафика маловероятно что можно идентифицировать даже сидя со снифером
      • 0
        Мне вот интересно, если в сети N узлов и между ними как-нибудь равномерно ходят пакеты с суммарной скоростью M pps, то сколько нужно вбросить в сеть пакетов до заданного хоста, чтобы узнать его физическое положение, наблюдая за всей сетью. Ведь здесь можно использовать разные средства: размер пакетов, тайминги между ними, время задержки между отправкой и приёмом (оно ведь небольшое должно быть, да?).
        • 0
          Надо физически зайти к каждому пиру по цепочке и сделать пинг дальше для определения v4 адреса
      • +2
        Если используется не mesh, т.е. оверлейный доступ через инет.
        Простому хакеру Васе может быть и нет. Но, если мы говорим про спец. службы ну или любого другого человека\организации имеющего доступ к большим точкам обмена трафиком, то ситуация такая же как с тором (http://habrahabr.ru/post/182704/ см синих человечков с надписью NSA).

        Если про mesh, то я уже писал — отслеживаем пакеты по адресам (они то не могу быть зашифрованы, в отличие от содержимого) последовательно «потусив» с пеленгатором в радиусе нескольких метров от каждой точки. Получаем даже не IP адрес, а физическое расположение пользователя.

        Задайте все-таки авторам прямой вопрос, пожалуйста, без Ваших домыслов: в случае уровня доступа спец. служб типа АНБ, ФБР или Интерпола сеть остается анонимной или нет?
        Вы сами в начале писали, что сеть не анонимная, потом в каждом посте пытаетесь убедить в обратном.
  • 0
    Два глупых вопроса:
    1) Увидел слово OpenWRT. У меня стоит DD-WRT, причём ставил я его по принципу «прошивка от производителя глючит, надо её заменить чем-нибудь». Что делать?
    2) Чем это отличается от Netsukuku?
    • 0
      +1 Pastafarianist
      кто-нибудь может сравнить это с netsukuku?
      • +3
        netsukuku мертв, например
      • +1
        Эта сеть развивается, комиты есть каждый день, разработчиков море, ну и есть реально работающий прототип, в отличия от той сети.
        Сейчас еще пишется своя dns система которая бы всем устроила white paper уже есть
        • –2
          А разве это — не работающий прототип?
          • +1
            Last commit: eriol authored 4 years ago
            Немножко не развивается. Ну и да, там python — это не очень хорошо для всяких мелких устройств на базе openwrt.
            • 0
              Про Python замечание справедливое, но какое отношение имеет дата последнего коммита к существованию рабочего прототипа?
              • 0
                К тому, что активной разработки нет, при обнаружении багов править баги некому
    • 0
      1) Для DD-WRT есть ещё optware. Очень многое ставится оттуда и вполне нормально работает. Но если у софта есть какие-то специфические требования (например, загрузить свой модуль ядра, который до этого нужно ещё собрать) — то это легко может превратиться в неслабый геморрой. А если вопрос вдруг доходит до границы «пересобрать прошивку целиком из исходников с нужными мне модулями» — то вот тут как раз уже лучше посмотреть на OpenWRT, покуда это там гораздо проще.
  • +1
    Если маршрут все еще не найден произойдет рассылка всем в сети пакета на поиск узла, первый пришедший авторизованный ответ — считается верным

    А если первым ответит злодей?
    • 0
      Его пакет будет откинут из-за не соответствия ключей
  • +2
    Если маршрут все еще не найден произойдет рассылка всем в сети пакета на поиск узла

    Словами «it doesn't scale» этого не передать :) Не забываем — речь идет о беспроводных сетях, а не о 10G+ проводных магистралях. Броадкасты планетарного масштаба — пипец какой-то.
    В дальнейшем, запрос можно будет повторить только через 10 минут, и время каждый раз будет увеличиваться при повторном запросе.

    А какие механизмы запрещают слать по 10000 запросов в секунду? Маленький безопасничек во мне нервничает…

    И вы лучше объясните попроще, как у вас свитчи работают. Ибо читаю я доку, и что-то не могу осилить стоящую за этим делом математику.
    • 0
      Запрещают слать узлы к которым подключен пир, смысл заключается в том, что с огромной вероятностью данный маршрут уже имеется, а если рассматривать dos атаку то она тоже не выйдет.

      Сейчас сам изучаю этот материал.
      • +1
        если рассматривать dos атаку то она тоже не выйдет.

        Почему? Что мешает запрашивать несуществующие узлы?
        • 0
          Ну пойдет запрос на узнавание маршрута несуществующих узлов, дальше что? :) DHT сеть работает шустро, запорашивать один и тот же адрес — нельзя, если маршрут к узлу к которому уже запорашивали путь и он не был найден — об этом сразу придет ответ без доп запроса. Так что можно сделать только dos не DDOS атаку.
          • +1
            У системы 1 329 227 995 784 915 872 903 807 060 280 344 576 доступных адресов. Если просто с высокой скоростью перебирать все адреса, то:
            1) По миру разойдется много мусорных пакетов. Они будут грузить транспорт, тратить ресурсы узлов. Не здорово. Сейчас даже внутри ЦОДов стараются ограничивать широковещательные домены. Помните не шибко новую статью про 100гб/с DDOS, от которого и магистральные операторы откладывали кирпичи?
            2) «если маршрут к узлу к которому уже запорашивали путь и он не был найден — об этом сразу придет ответ без доп запроса» — каждый узел запомнит около 1 329 227 995 784 915 872 903 807 060 280 344 576 ненайденных маршрутов? DoS атака удалась — у всей сети в глобальном масштабе кончилась память :)
            • 0
              Интересный момент, уточню у разработчиков.
            • 0
              Не знаю, как реализована защита но думаю можно использовать некий принцип «нагрева» и «охлаждения».

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

              Если ответ пришел и адрес существует, начинаем «нагревать», сокращая время.

              Таким образом клиенты-сканеры сети сразу заморозятся еще на первых роутерах, а честные так сказать граждане будут бегать на максимальных скоростях по сетке.
              • 0
                Это — обычный dampening по сути. С ним связана масса проблем. Если настройка будет не дефолтной, то наверняка многие не настроят это. Если дефолтная, то какое значение ставить? Пограничный хоп — одно. Центральные, видящие десятки соседей — другое, через них в штатном режиме будет ходить намного больше легитимных пакетов. Если они начнут что-то блокировать — это катастрофа. Запоминать вдобавок к запрошенным адресам адрес запросившего? Сильная дополнительная нагрузка, и как быть со спуфингом?

                В итоге мы приходим к тому, что сама архитектура (если я ее правильно понял) изначально ущербна, и нужны какие-то костыли.
                • 0
                  Тут вкусность такого решения именно в том, что в отличии от сегодняшней сети с центральными маршрутизаторами мы имеем начальные точки вхождения, которые обслуживают намного меньшее число клиентов и их рост насколько я понимаю не планируется иначе в чем смысл децентрализации. Главное не пустить сканера дальше по сети!
                  Ну и опять же можно включить такую технологию в стандарт сети.
                  • 0
                    в отличии от сегодняшней сети с центральными маршрутизаторами

                    Что за «центральные маршрутизаторы» в сегодняшнем интернете? Почему я не в курсе?
                    Ну да, есть определенное количество магистралей, к которым сходится многое (оптика на тысячи километров, а то и через океан — дорогое удовольствие, консолидации избежать невозможно вне зависимости от используемой технологии), но интернет все равно децентрализован в смысле маршрутизации. Вы можете добраться до человека в соседнем доме, сидящего на другом провайдере, как через 3-4 хопа через прямой стык где-то в вашем районе, так и через Франкфурт (это вовсе не шутка) — как пожелает оператор. Маршруты будут проходить через разные железки.
  • +1
    А как скоро будет доступна прошивка?
    • +1
      Да она и сейчас доступна, но в режиме бета, палки релиз будет вместе с рассылкой прямо-роутеров
  • 0
    Скажите, а какая скорость между двумя пирами?
    Предусмотрен direct connection?
    • 0
      Скорость ограничена суммарной скоростью соединения между вами, прямые соединения — конечно, обменяйтесь ключами — будет прямое соединение
      • 0
        т.е. в таком случае я узнаю реальный IP удаленной стороны?
        • 0
          Я имел ввиду что надо обменяться
          1) IP
          2) Ключем
          3) Паролем
  • +1
    Есть у меня серьёзное опасение на счёт заказной инициализации данного проекта. Уж больно слабая реализация защиты и анонимности по принципу «да ладно, мы же всё равно ничего не делаем такого, кому мы нужны» и т.п.
    Идеаологически сеть подаётся правильно и успех скорее всего будет… но как специалист в области безопасности с двенадцатилетнем стажем не могу не отметить, что сеть как будто специально спроектирована под возможность вскрытия грубой (читай «специальной дорогой») силой, которая есть у спецслужб. Аналогично как вскрывается голосовой поток GSM и т.д.

    В концепции Netsukuku изначально были заложены методы предотвращения любой возможности отслеживания, кроме физического и эксперты по безопасности сходились на том, что придраться даже после глубокого анализа не к чему,… аналогично как спецы из ведущих американских вузов проверяют код FreeNET и не находят там изъянов в безопасности в режиме даркмод.
    Плата за полную децентрализованность и анонимность известна — практически никто не понимает принципов работы, так как они действительно сложны и продуманы; плюс дополнительные сложности для конечных пользователей, так как работа в сети требует дополнительных действий (типа отсылки ключей в даркмоде и т.п.)
    Netsukuku предлагала уникальный фрактальный протокол маршрутизации, который на своём уровне гарантировал анонимность. Деанонимизация была доступна лишь на более высоком (физическом) уровне.
    В Hyperboria анонимизация строится из надстроек из костылей, которые паразитируют на нагрузке и на дополнительных протоколах, плюс отсутствует рандомная смена конечных адресов раз в несколько минут. Конечно, костыль (в виде смены MAC и реконнекта) решит и этот вопрос… но как же это всё… не по человечески (читай «неразумно»), что ли!

    P.S. Уж лучше работающая Hyperboria, чем Netsukuku, которая стремиться к идеалу, но досконально в её дебрях разбираются только 12 человек во всём Мире. Возможно именно так удастся вырастить специалистов, которым фрактальные и анархические протоколы маршрутизации покажутся простыми, как когда-то кому-то простыми показались все современные протоколы, современники создания которых считали их верхом аналитической мысли.

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.