Опубликован выпуск эталонной реализации протокола Yggdrasil 0.4, позволяющего поверх обычной глобальной сети развернуть отдельную децентрализованную приватную IPv6-сеть, для защиты конфиденциальности в которой применяется сквозное шифрование. Для работы через сеть Yggdrasil могут использоваться любые существующие приложения, поддерживающие IPv6. Реализация написана на языке Go и распространяется под лицензией LGPLv3. Поддерживаются платформы Linux, Windows, macOS, FreeBSD, OpenBSD и Ubiquiti EdgeRouter.
Yggdrasil развивает новую концепцию маршрутизации для создания глобальной децентрализованной сети, узлы в которой могут соединяться как напрямую между собой в режиме mesh-сети (например, через Wi-Fi или Bluetooth), так и взаимодействовать поверх существующих IPv6 или IPv4 сетей (сеть поверх сети). Отличительной особенностью Yggdrasil является самоорганизация работы, без необходимости явной настройки маршрутизации — информация о маршрутах рассчитывается отталкиваясь от расположения узла в сети относительно других узлов. Устройства адресуются через обычный адрес IPv6, который не меняется в случае перемещения узла (в Yggdrasil задействован неиспользуемый диапазон адресов 0200::/7).
Вся сеть Yggdrasil рассматривается не как объединение разрозненный подсетей, а как единое структурированное остовное дерево, у которого имеется один «корень», а каждый узел имеет одного родителя, а также одного или нескольких потомков. Подобная древовидная структура позволяет построить маршрут к узлу назначения, относительно узла источника, используя механизм «locator», определяющий оптимальный путь к узлу от корня.
Информация о дереве распределяется между узлами и не хранится централизованно. Для обмена данными о маршрутизации применяется распределённая хэш-таблица (DHT), при помощи которой узел может извлечь всю информацию о маршруте к другому узлу. Сама по себе сеть обеспечивает лишь сквозное шифрование (транзитные узлы не могут определить содержимое), но не анонимность (при подключении через интернет, одноранговые узлы, с которыми осуществляется прямое взаимодействие, могут определить реальный IP-адрес, поэтому для анонимности предлагается подключать узлы через Tor или I2P).
Отмечается, что несмотря на нахождение проекта на стадии альфа-разработки, он уже достаточно стабилен для ежедневного использования, но не гарантирует обратную совместимость между выпусками. Для Yggdrasil 0.4 сообществом поддерживается набор сервисов, включая платформу для размещения Linux-контейнеров для хостига своих сайтов, поисковую систему YaCy, коммуникационный сервер Matrix, IRC-сервер, DNS, систему VoIP, BitTorrent-трекер карту точек подключения, шлюз в IPFS и прокси для обращения к сетям Tor, I2P и clearnet.
В новой версии:
- Реализована новая схема маршрутизации, не совместимая с прошлыми выпусками Yggdrasil.
- При установке TLS-соединений с узлами задействована привязка открытых ключей (key pinning). Если привязка при соединении отсутствовала, полученный ключ будет закреплён за соединением. Если привязка была установлена, но ключ ей не соответствует, соединение будет отвергнуто. TLS с привязкой ключей определён как рекомендованный метод подключения к пирам.
- Полностью переработан и переписан код для маршрутизации и управления сеансами, что позволило увеличить пропускную способность и надёжность работы, особенно для узлов, часто меняющих пиры. В криптографических сеансах реализована периодическая ротация ключей. Добавлена поддержка маршрутизации по источнику (Source routing), которая может использоваться для перенаправления пользовательского IPv6 трафика. Переработана архитектура распределённой хэш-таблицы (DHT) и добавлена поддержка маршрутизации на основе DHT. Реализация алгоритмов маршрутизации вынесена в отдельную библиотеку.
- IP-адреса IPv6 теперь формируются из открытых ключей ed25519, а не их хэша X25519, что приведёт к смене всех внутренних IP после перехода на выпуск Yggdrasil 0.4.
- Предоставлены дополнительные настройки для поиска Multicast-пиров.
Источник: opennet.ru