Andrey Stolyarov

Андрей Викторович Столяров: сайт автора

Опубликован очередной тарбол исходников FEDAnet, с номером версии 0.0.50. Я научил, наконец, эти fedaservы обмениваться сертификатами нод и проверять хеши, причём так, чтобы непосредственно взятием хеша могла заниматься машина, сидящая хоть за десятью NATами. Это может быть, например, домашняя машина, на которой нодмастер гоняет браузер — ну, он же где-то браузер точно гоняет :-) В принципе даже не обязательно иметь такую машину в каждой ноде, я вот, например, соответствующий инстанс запустил (через fedaproxy), у него теперь каждый может спросить, не знает ли он такую-то ноду, и каждый может ему представить свою ноду, а он её запомнит. Можно это рассматривать как автоматизированную поддержку коллекции сертификатов нод. Если свой такой не поднимать, единственный недостаток тут — что представлять свою ноду другим придётся вручную; это тоже возможно, в управляющей консоли (которая fedactl) появилась соответствующая команда. Если кратко, то реализованы три новых типа peer'ов:

  • trustncc — такой peer, к которому можно сходить с вопросом "не знаешь ли ты такую-то ноду", и если он знает, то пришлёт её ключевую инфу, подписанную его собственным ключом; идея в том, что мы ему доверяем настолько, что готовы принять от него информацию о ноде, не проверяя её хеш;
  • introducer — та самая "мощная машина", к которой пиры одной с ней ноды (это важно) могут обратиться с двумя интересными просьбами: первая — "сходи вон туда, представь там нашу ноду", а вторая — "мне тут прислали ключевую информацию незнакомой ноды, проверь её для меня plz" (в этом случае, если проверка пройдена, такой peer сохраняет у себя сертификат только что проверенной ноды, так что если кто-то к нему придёт как к trustncc, он инфу отдаст);
  • certhub — это такая машина, про которую нам известно, что она принимает (и проверяет) информацию о новых нодах; технически это значит, что, когда к нам кто-то придёт незнакомый, мы ему можем посоветовать сходить туда представить свою ноду, подразумевая, что когда он там представится, мы об этом узнаем, например, сходив туда же уже как к trustncc, и он тогда сможет с нами связаться.

В конфигурационном файле появилось три новых опции: allow_nodehash yes разрешает (вообще, так сказать, глобально) данному инстансу считать хеши, intro_issue yes разрешает инициировать процесс представления ноды в роли клиента (что обычно обходится в четыре вычисления хешей от данных, предложенных сервером — это такая защита от DoSа), и intro_accept yes разрешает инстансу принимать представления в роли сервера (для этого нужна заранее сгенерённая таблица задач и ответов a.k.a. challenge-response table, та самая, которую node-ng генерирует по флажку -f и с которой потом можно работать с помощью программы feda-ct).

Технические подробности по ссылке выше, а также в файлах doc/serv.conf и doc/peer_types.txt. Если будут вопросы — задавайте (лучше там, но можно и здесь), постараюсь ответить.

К сожалению, конкретные соединения всё ещё приходится прописывать вручную, но теперь хотя бы новому участнику сети можно связаться с существующими нодами без ручного вмешательства их нодмастеров; ручной работы потребует только добавление новой ноды в списки. Чтобы сеть начала функционировать (в том числе расширяться) вообще без ручных действий, нужно реализовать рассылку широковещательных сообщений, через которую будут работать в том числе анонсы новых нод и изменения их местонахождения. Это как раз следующий этап; если/когда я с ними справлюсь, сеть достигнет функционирующего состояния (видимо, это будет релиз 0.1.00). Только тут есть такой момент, что, чтобы широковещательная рассылка работала, нужно то, на чём она будет работать — то, что обычно зовут бекбоном сети. Строительством этого бекбона можно уже начинать заниматься. Нам нужно, как я это себе представляю, 10-12 работающих нод, живущих на постоянных адресах. Сейчас ноды фактически только так и могут жить, но когда будет рассылка анонсов, нода сможет существовать за NAT'ом, причём если это однопользовательская нода, то даже restricted cone сойдёт. Но бекбон, через который можно будет попасть в сеть тем, кого там раньше не было, в любом случае требует нод, которые сидят на месте и не перемещаются то и дело. Вот его давайте уже попробуем построить.

Спасибо всем, кто следит за проектом!


From makaki4 profile Wed Mar 25 15:01:29 2026 UTC pencil

fedakeys -c mypoint lock ./somefile

Когда в планах, чтобы заработало? Как я понимаю, трафик пока что ходит в незашифрованном виде. Хочу, чтоб было иначе, и будет, но не знаю, это сильно далёко еще?

parent From Andrey V. Stolyarov profile Wed Mar 25 18:37:32 2026 UTC pencil

userpic

Re: fedakeys -c mypoint lock ./somefile

> Когда в планах, чтобы заработало?

Честно говоря, я про эти недоделки слегка забыл. Фиг знает, а что, правда надо? :-) Всякие pgp/gpg умеют это всё.

> Как я понимаю, трафик пока что ходит в незашифрованном виде.

Где, в FEDAnet? Ну, он там вообще не так чтоб сильно ходит, но когда ходит — то очень даже в зашифрованном. Прям, я бы сказал, зашифрованнее некуда. Ну то есть если у вас пинги проходят между двумя разными машинами по FEDAnet'овским адресам, то образовавшийся канал связи, возможно, не сильно эффективен по оверхеду и может сильно страдать, если где-то по дороге теряется даже совсем немножко пакетов, но что там всё зашифровано — это, как говорится, что есть — того не отнять.

Всего открытого трафика в FEDAnet — обмен временными (живущими до перезапуска fedaserv'а) публичными ключами. Как обменялись ими — всё, дальше уже ничего открытого. Ну, кроме nonce'ов, но эти в силу своей природы открытые, тут никуда не денешься особо.


pencil

пояснение


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

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

Андрей Михайлович Столяров в библиотеке Мошкова

Авторские права © Андрей Викт. Столяров, 2009 — 2026