Mesh-сети — это всегда хорошо. А если они работают — ещё лучше!

Доброго дня, Сообщество!

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

Подробности — под катом.



Напомните мне — что такое «Medium»?


Medium (англ. Medium — «посредник», оригинальный слоган — Don't ask for your privacy. Take it back; также в английском слово medium значит «промежуточный») — российский децентрализованный интернет-провайдер, предоставляющий услуги доступа к сети Yggdrasil на безвозмездной основе.

Полное наименование — Medium Internet Service Provider. Изначально проект задумывался как Mesh-сеть в Коломенском городском округе.

Образован в апреле 2019 года в рамках создания независимой телекоммуникационной среды путём предоставления конечным пользователям доступа к ресурсам сети Yggdrasil посредством использования технологии беспроводной передачи данных Wi-Fi.

Больше информации по теме: «Всё, что вы хотели знать о децентрализованном интернет-провайдере «Medium», но боялись спросить»

Что?


Децентрализованный интернет-провайдер «Medium» отказывается от использования SSL и удостоверяющих центров в пользу нативного шифрования Yggdrasil — это значит, что теперь шифрование посредством использования SSL осуществляться не будет — вместо этого будет повсеместно использовано сквозное шифрование, предусмотренное спецификациями Yggdrasil.

Топология сети «Medium» с этого момента принимает следующий вид:



Зачем?


Сквозное шифрование внутри сети Yggdrasil необходимо для того, чтобы избежать атак вида Man in the middle, которые позволяют злоумышленнику прослушивать чужой трафик.

Yggdrasil использует Curve25519, XSalsa20 и Poly1305 для обмена ключами, шифрования и аутентификации.

Почему?


Вопрос о необходимости использования шифрования трафика средствами SSL был поднят ещё давно — в те времена, когда «Medium» использовал I2P в качестве основного транспорта.

На тот момент ситуация обстояла следующим образом
image

SSL был необходим для того, чтобы избежать прослушки трафика на роутере «Medium». Схожая проблема есть и у сети Tor — только в отношении выходных узлов.

Трафик шёл от I2P до роутера «Medium» зашифрованным, после — расшифровывался клиентом I2P на том же роутере и передавался клиенту.

Так как соединение между клиентом и роутером «Medium» не было защищено, было предложено использовать криптографический протокол шифрования трафика — SSL, расположенный на седьмом уровне сетевой модели OSI.

В дальнейшем сообщество сети «Medium» полностью отказалось от использования удостоверяющих центров и SSL в пользу нативного шифрования Yggdrasil, так как задумка децентрализованной сети с централизованными удостоверяющими центрами казалась крайне нелепой.



Читайте также:

Всё, что вы хотели знать о децентрализованном интернет-провайдере «Medium», но боялись спросить
Дорогая, мы убиваем Интернет
Децентрализованный интернет-провайдер «Medium» — три месяца спустя

Мы в Telegram: @medium_isp

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


  1. Carduelis
    20.08.2019 10:49
    +4

    Да что ж такое, опять я подумал, что речь про meduim.com, и секунд 20 залипал над вопросом, как же они собираются отказываться-то?


    Может быть стоит добавить что-то в название? Хотя бы символ какой


  1. mmMike
    20.08.2019 10:59
    -1

    За три месяца мы подняли в общей сложности 11 точек сети «Medium» в России и одну — в Латвии
    Yggdrasil is written in Go. The codebase is fairly small and easy to navigate.

    Табличка на https://yggdrasil-network.github.io/about.html повеселила…
    Решения вопроса взаимного доверия между двумя точками (ради чего собственно структура CA и используется) как то не нашел.


    НУ шифрование точка точка… ну и что?


    1. Scondo
      20.08.2019 12:20

      Ну и ничего.

      В условиях самоподписанных сертификатов SSL от точки-точка не отличается.

      А в условиях шифрования точка-точка до DNS-сервера и до конечного узла (при том что адрес есть открытый ключ) DNS становится примерно эквивалентен CA: я доверяю серверу(и это точно он!) который сказал что это имя связано с тем узлом (и узел — точно он).


      1. mmMike
        20.08.2019 12:31

        "Адрес есть открытый ключ" — это как?
        Насколько я понял используются curve25519 ed25519 (альтернатива стандартной реализации ECDH).
        Адрес (даже ip6) в принципе не может служить публичным ключом сам по себе в EC криптографии.
        Так где элемент доверия паре адрес+публичный ключ в децентрализированной сети?


        1. Scondo
          20.08.2019 15:11

          Ну я упростил, но адрес формируется на основе sha512 от открытого ключа.

          1. Begin with 0x02 as the first byte of the address, or 0x03 if it's a /64 prefix.
          2. Count the number of leading 1 bits in the NodeID.
          3. Set the second byte of the address to the number of leading 1 bits in the NodeID (8 bit unsigned integer, at most 255).
          4. Append the NodeID to the remaining bits of the address, truncating the leading 1 bits and the first 0 bit, to a total address size of 128 bits.

          The NodeID is a sha512sum of a node's public encryption key. Addresses are checked that they match NodeID, to prevent address spoofing. As such, while a 128 bit IPv6 address is likely too short to be considered secure by cryptographer standards, there is a significant cost in attempting to cause an address collision. Addresses can be made more secure by brute force generating a large number of leading 1 bits in the NodeID.


  1. saipr
    20.08.2019 11:00
    +1

    «Medium» отказывается от использования удостоверяющих центров в пользу нативного шифрования Yggdrasil

    Т я не понимаю, при чем здесь УЦ? Они ничего не шифруют. Они всего навсего выдают сертификаты, которые затем "Medium" использовал в своихх целях (для SSL/TLS). Сейчас они стали использовать другую технологию, всего навсего. А К услугам УЦ они так или иначе продоолжают прибегать. Так что прав Carduelis что-то не то в названии.


    1. podivilov Автор
      20.08.2019 11:14
      +1

      Спасибо, исправил.


  1. Scondo
    20.08.2019 12:22

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


    1. mmMike
      20.08.2019 12:59

      Установка соединения идет по IP (ip4, ip6)?
      называть адресом имя хоста (32 байта EC), по моему, не корректно.
      Все равно не понятно где возникает элемент доверия тому, что адрес IP = имени хоста (которое сразу публичный ключ).
      Т.е. доверяем хосту DNS?
      В распределенной одноранговой системе заменяем доверие СА на доверие DNS хосту и… И что изменилось принципиально?


      1. Scondo
        20.08.2019 15:02

        Да, доверяем хосту DNS. Потому что CA там и был тот же самый, что и DNS.

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

        Ну и минус двойное шифрование.


  1. domix32
    20.08.2019 13:27

    Но при этом фишинг вполне себе становится вариантом. Выглядит как утка, шифрует как утка, ворует пароли как утка.
    А на что становится похож трафик со стороны? Насколько оно будет устойчиво к фильтрации via DPI?
    События 3 августа в центре Москвы натолкнули на мысль, что неплохо было бы иметь какую-то локально поднимаемую меш-сеть. Способен ли Medium+Yggdrasil обеспечить соединение с сетью поверх локальных нод? То есть когда кучка народа врубает какой-нибудь Bluetooth/WiFi и по нему идет трафик до ближайшего выхода в большой интернет?


    1. podivilov Автор
      20.08.2019 14:09

      Да, Вы всё правильно понимаете — Medium образует уровень L2, а Yggdrasil уже поверх Medium — L3.


  1. Revertis
    20.08.2019 14:41

    Перечитал всю главную Yggdrassil'а, предыдущий пост и этот, но так и не понял, зачем это может понадобиться именно мне.
    1. Полезные ресурсы в той сети есть? Посмотрев на список доменов, понял, что как-то всё наколеночно, и непонятно зачем.
    2. Я могу использовать эту сеть для доступа к моему серверу с Андроид-девайса через мобильный интернет? Например, у меня там и почта и nextcloud и впн через него идёт. А эта сеть мне как-то в этом поможет?

    Кроме того, вся система ДНС у вас вывернута на изнанку. Подтверждается не владение доменом, а владение айпишником.


    1. podivilov Автор
      20.08.2019 14:49

      Прочтите спецификации Yggdrasil и всё встанет на свои места. IPv6-адрес в Yggdrasil извлекается из приватного ключа, поэтому для подтверждения владения хостом, закреплённым за IPv6-адресом, этого более чем достаточно.

      Обратите внимание — DNS не копирует записи из внешних DNS, поэтому «подтверждение владения доменом» — это условность. Пользователь владеет доменом до тех пор, пока находится в сети его хост. Который закреплён за доменным именем.

      Если хост не отвечает более 72 часов — доменное имя освобождается и может быть зарегистрировано любым другим участником сети.

      Всё прозрачно — история изменений ведётся в Git, поэтому смухлевать едва ли получится. Кроме того, у нас есть и зеркалирующие, аутентично настроенные DNS-сервера.

      image


      1. Revertis
        20.08.2019 15:01

        Да, я имел ввиду именно эту информацию.
        Логика вывернута на изнанку. И домены выдаются по принципу «кто раньше встал, того и тапки». Считаете это правильным?

        И хотелось бы ещё ответов на другие мои вопросы.


        1. podivilov Автор
          20.08.2019 15:03

          Да, мы считаем это правильным. Вы можете сейчас зарегистрировать домен yandex.ru? Почему — нет? Просто Яндекс сделал это первым. Здесь разве отличная от этого логика?

          Если у Вас есть аккаунт в Telegram, приглашаем Вас в нашу группу — @medium_group. Мы с радостью ответим на все Ваши вопросы.


    1. Scondo
      20.08.2019 17:08

      Ну если подключить сервер к yggdrasil в режиме оверлея — то можно, да.

      Это один из сценариев использования: нечто среднее между vpn и инетом. (интерфейс открыт всем желающим, но данные зашифрованы)


      1. podivilov Автор
        20.08.2019 20:53

        Всё верно!