13.08.2020

Выпуск P2P-платформы GNUnet 0.13. Продвижение GNS в качестве интернет-стандарта


Комитет IETF (Internet Engineering Task Force), занимающийся развитием протоколов и архитектуры Интернет, начал процесс стандартизации системы доменных имён GNS (GNU Name System), развиваемой проектом GNUnet в качестве полностью децентрализованной и недоступной для цензуры замены DNS. В настоящий момент опубликован первый черновой вариант стандарта, после стабилизации которого будет сформирован RFC, имеющий статус «Предложенного стандарта».

GNS может применяться бок о бок с DNS и использоваться в традиционных приложениях, таких как web-браузеры. Целостность и неизменность записей обеспечивается за счёт использования криптографических механизмов. В отличие от DNS в GNS вместо древовидной иерархии серверов применяется направленный граф. Преобразование имён сходно с DNS, но запросы и ответы выполняются с сохранением конфиденциальности — обрабатывающий запрос узел не знает кому отдаётся ответ, а транзитные узлы и сторонние наблюдатели не могут расшифровать запросы и ответы.

DNS-зона в GNS определяется при помощи связки из открытого и закрытого ключей ECDSA на основе эллиптических кривых Curve25519. Использование Curve25519 воспринимается некоторыми как весьма странный шаг, так как для ECDSA применяют другие типы эллиптических кривых, а в паре с Curve25519 обычно используют алгоритм цифровых подписей Ed25519, более современный, более безопасный и более быстрый, чем ECDSA. С точки зрения криптостойкости также вызывает сомнение выбор размера ключа — 32 байта вместо 64 байт, обычно используемых для Ed25519, а также применение каскадного симметричного шифрования, используя алгоритмы AES и TwoFish в режиме CFB.

Подобный подход объясняется необходимостью реализации иерархических ключей, дающих возможность использовать корневой открытый ключ для извлечения дочернего открытого ключа, пользуясь свойством линейности кривой Curve25519. Данная особенность позволяет получать дочерние открытые ключи без знания закрытых корневых ключей. Указанная техника также применяется в Bitcoin. 32-байтовый размер ключа выбран для того чтобы ключ вмещался в одну запись DNS.

Дополнительно можно отметить новый выпуск фреймворка GNUnet 0.13, предназначенного для построения защищённых децентрализованных P2P-сетей. Создаваемые при помощи GNUnet сети не имеют единой точки отказа и способны гарантировать неприкосновенность частной информации пользователей, в том числе исключить возможные злоупотребления со стороны спецслужб и администраторов, имеющих доступ к узлам сети. Выпуск отмечен как содержащий значительные изменения протокола, нарушающие обратную совместимость с версиями 0.12.x.

GNUnet поддерживает создание P2P-сетей поверх TCP, UDP, HTTP/HTTPS, Bluetooth и WLAN, может работать в режиме F2F (Friend-to-friend). Поддерживается обход NAT, в том числе с использованием UPnP и ICMP. Для адресации размещения данных возможно использование распределённой хэш таблицы (DHT). Предоставляются средства для развёртывания mesh-сетей. Для выборочного предоставления и отзыва прав доступа применяется сервис децентрализованного обмена атрибутами идентификации reclaimID, использующий GNS (GNU Name System) и шифрование на основе атрибутов (Attribute-Based Encryption).

Система отличается низким потреблением ресурсов и использованием многопроцессной архитектуры для обеспечения изоляции между компонентами. Предоставляются гибкие средства для ведения логов и накопления статистики. Для разработки конечных приложений GNUnet предоставляет API для языка Си и биндинги для других языков программирования. Для упрощения разработки вместо потоков предлагается использовать циклы обработки событий (event loop) и процессы. В состав входит тестовая библиотека для автоматического развёртывания экспериментальных сетей, охватывающих десятки тысяч пиров.

Кроме GNS на базе технологий GNUnet также развивается несколько готовых приложений:

  • Сервис для анонимного обмена файлами, не позволяющий проанализировать информацию за счёт передачи данных только в зашифрованном виде и не дающий отследить кто разместил, искал и скачал файлы благодаря использованию протокола GAP.
  • Система VPN для создания скрытых сервисов в домене «.gnu» и проброса туннелей IPv4 и IPv6 поверх P2P-сети. Дополнительно поддерживаются схемы трансляции IPv4-в-IPv6 и IPv6-в-IPv4, а также создание туннелей IPv4-поверх-IPv6 и IPv6-поверх-IPv4.
  • Сервис GNUnet Conversation для совершения голосовых вызовов поверх GNUnet. Для идентификации пользователей используется GNS, содержимое голосового трафика передаётся в зашифрованном виде. Анонимность пока не предоставляется — другие пиры могут отследить соединение между двумя пользователями и определить их IP-адреса.
  • Платформа для построения децентрализованных социальных сетей Secushare, использующая протокол PSYC и поддерживающая распространение уведомлений в режиме multicast с применением end-to-end шифрования для того, чтобы доступ к сообщениям, файлам, чатам и обсуждениям могли получить только авторизированные пользователи (те кому сообщения не адресованы, включая администраторов узлов, не смогут их прочитать);
  • Система для организации шифрованной электронной почты pretty Easy privacy, применяющая GNUnet для защиты метаданных и поддерживающая различные криптографические протоколы для верификации ключей;
  • Платёжная система GNU Taler, предоставляющая анонимность для покупателей, но отслеживающая транзакции продавцов для обеспечения прозрачности и предоставления налоговой отчётности. Поддерживается работа с различными существующими валютами и электронными деньгами, в том числе с долларами, евро и биткоинами.

Основные новшества GNUnet 0.13:

  • Введён в строй реестр GANA (GNUnet Assigned Numbers Authority), отвечающий за назначение имён и адресов для GNUnet.
  • Реализация децентрализованной системы доменных имён GNS приведена в соответствие со спецификацией, предложенной в IETF. Налажена работа NSS-плагина «block». Добавлены новые флаги SUPPLEMENTAL для записей, которые явно не опубликованы под заданной меткой, но возвращаются резолвером. В утилиту gnunet-namestore добавлен вывод предупреждения при добавлении записей TLSA или SRV вне записи BOX.
  • В механизме отзыва ключей (GNS/REVOCATION) функция доказательства выполненной работы переведена на использование алгоритма хэширования Argon2.
  • В сервисе децентрализованного обмена атрибутами идентификации (RECLAIM) размер тикета увеличен до 256 бит.
  • Транспортный плагин, использующий для передачи данных протокол UDP, перемещён в категорию экспериментальных из-за наличия проблем со стабильностью;
  • Формат файла ключей и метод сериализации закрытых ключей ECDSA унифицирован с другими библиотеками (старые ключи перестанут работать).
  • В качестве реализации алгоритмов шифрования на основе эллиптических кривых задействована библиотека libsodium.
  • Добавлена возможность сборки утилит с библиотекой cURL, не связанной с gnutls.
  • Возвращён сервер непрерывной интеграции Buildbot.
  • В сборочные зависимости включены библиотеки libmicrohttpd, libjansson и libsodium.

Источник: https://www.opennet.ru/opennews/art.shtml?num=53320

Добавить комментарий