Экосистема Hyper. Полный пиринг и шифрование
В настоящее время резко выросла потребность людей в защищённых коммуникациях. А с ней и популярность сервисов для защиты связи и шифрования. Это VPN, mesh-сети и пиринговые приложения для прямого обмена зашифрованными сообщениями, файлами и т. д. Один из самых продвинутых наборов такого рода — экосистема Hyper. Есть и другие (о них ниже).
▍ Набор модулей Hyper
Hyper — это набор маленьких JavaScript-модулей, которые можно комбинировать для создания неограниченного количества P2P-приложений, от VPN до коммуникационных инструментов типа P2P-мессенджера Keet. На сегодняшний день Keet — это практически единственное реальное приложение, построенное на Hyper, своего рода демонстрация возможностей платформы.
Теоретически, все модули можно сочетать и смешивать на своё усмотрение. Поскольку это всего лишь JavaScript, разработка приложений так же проста, как и создание веб-приложения.
В набор Hyper входят следующие основные компоненты:
- Hypercore — защищённый распределённый журнал. Создан для обмена большими массивами данных и потоками данных в реальном времени. Из особенностей — разреженная репликация, простая плоская файловая структура для максимальной производительности ввода-вывода, безопасность (подписанные деревья Меркла для проверки целостности журнала в реальном времени), модульность.
- Hyperdrive — безопасная распределённая файловая система, работающая в реальном времени. Другие модели для работы с файлами: Localdrive и Mirrordrive.
- Hyperswarm — распределённый сетевой стек для P2P-коммуникации.
- Hyperbeam — сквозное шифрование в канале между двумя пирами на основе Hyperswarm.
- HyperDHT — Hyperswarm с поддержкой DHT (распределённое обнаружение пиров — distributed holepunching, как в торрентах).
- Hyperbee — B-дерево на базе Hypercore. Позволяет выполнять итерации с сортировкой и многое другое.
- Hypershell — спаунит терминал (оболочку) в любом месте. Полностью одноранговый, аутентифицированный и зашифрованный. Поддерживает все базовые команды:
# Создание ключей hypershell-keygen [-f keyfile] [-c comment] # Создание P2P-сервера hypershell-server [-f keyfile] [--firewall filename] [--disable-firewall] [--protocol name] # Подключение к P2P-шеллу hypershell
[-f keyfile] # Локальный тоннель с перенаправлением на удалённый хост hypershell -L [address:]port:host:hostport # Копирование файлов (скачивание и отправка) hypershell-copy <[@host:]source> <[@host:]target> [-f keyfile]
Это в каком-то смысле демоверсия остальных модулей Hyper. - Autobase — автоматическое преобразование нескольких причинно-связанных журналов Hypercore в один линеаризованный журнал. На выходе Autobase представляет собой простой Hypercore, что означает возможность его использования для преобразования структур данных более высокого уровня (например, Hyperbee) в структуры данных с множественной записью с минимальными дополнительными затратами.
В совокупности эти модули составляют полноценный фреймворк для построения P2P-приложений с шифрованием. Весь код открыт и опубликован на Github.
Разработкой занимается организация Holepunch. Но это не обычная, а «пиринговая» организация, у которой «нет публичных представителей». Только вступив в это сообщество, можно увидеть других его участников, да и то в анонимном виде. В общем, максимальная приватность на грани паранойи. В данный момент у «пиринговой организации» 97 репозиториев.
Как уже упоминалось, единственным реальным приложением на модулях Hyper является P2P-мессенджер Keet.
Keet поддерживает сквозное шифрование и P2P-микроплатежи USDT/Bitcoin Lightning. Клиент выпускается в версиях для Windows, Linux, MacOS, iOS и Android. За счёт пиринговых коммуникаций он обеспечивает максимальное качество видео и передачу файлов любого размера (она ограничена только размером накопителя на стороне получателя и лимитами файловой системы).
▍ VPN по пирингу. Как работают mesh-сети с нулевым доверием
Вышеупомянутый Hyper — это фундаментальная разработка, которая может стать основой для многих приложений. Например, есть целый класс полезных приложений, которые можно назвать «mesh-сети с нулевым доверием» (Zero-Trust Mesh VPN).
Такие системы объединяют три концепции:
- VPN, обеспечивающая полностью зашифрованную и аутентифицированную связь и стабильные IP-адреса;
- mesh-сеть, в которой устройства автоматически находят оптимальные пути для связи друг с другом;
- сетевую модель с нулевым доверием, в которой не требуется доверие ни к каким элементам базовой сети, поскольку весь трафик использует защищённые системы из пунктов 1 и 2.
Приложения типа mesh VPN тоже бывают разные. Например, полностью децентрализованные сети с автоматической маршрутизацией, такие как Yggdrasil и Tinc. С другой стороны, есть P2P-системы с выделенными серверами для централизованного контроля, как Tailscale, Zerotier, Nebula, Netmaker. В связи с бумом на рынке безопасности в последнее время появляется всё больше подобных решений, например, NordVPN Meshnet.
▍ Mesh-сети на радиопротоколе
Есть несколько протоколов, разработанных специально для Интернета вещей и связи маломощных устройств, сенсоров, раций, объединённых в распределённую сеть на большой территории. Эти сети работают по радиопротоколам типа LoRa RF и не нуждаются в центральных узлах. Есть мнение, что в случае глобальной катастрофы на планете такие сети смогут продолжить своё функционирование и станут единственным средством связи между разрозненными лагерями выживших.
В условиях катастрофы или стихийного бедствия самыми надёжными являются наиболее простые технологии и протоколы. Например, Meshtastic — сервис дальней радиосвязи для устройств малой мощности на протоколе LoRa RF. Передача осуществляется на десятки километров, а иногда больше 100 км. Это также подходящий вариант для самоорганизации и связи больших групп людей, которые оказались примерно в одном месте: например, на фестивале или другом массовом мероприятии, а сотовая связь не работает.
Плата для разработки ESP32 с поддержкой LoRa на Aliexpress
Кроме радиопередатчика с антенной можно купить, например, специальный корпус для телефона PinePhone с антенной LoRa или недорогой КПК на LoRa/WiFi.
Настройки канала Meshtastic варьируются от коротковолновой передачи на скорости до 6,8 Кбит/с (самый быстрый режим) до длинных волн со скоростью максимум 0,09 Кбит/с, то есть 90 бит/с.
Наряду с Meshtastic можно упомянуть Nomad Network, прототип устойчивой mesh-сети на протоколах LXMF и Reticulum. В свою очередь, Reticulum — это отдельная от интернета mesh-сеть с сильным шифрованием.
Радиопередатчики для сети Nomad Network по протоколу Reticulum
«Reticulum — это попытка создать альтернативный протокол базового уровня для сетей передачи данных, — говорит Марк Квист, разработчик сетевого стека. — По сути, это не одна сеть, а инструмент для построения сетей. Его можно сравнить с IP, стеком интернет-протокола, на котором работает 99,99% сетей на Земле. Он решает те же проблемы, что и IP, обеспечивая передачу цифровых данных из точки А в точку Б, но делает это совершенно иначе и с совершенно другими предположениями. Реальная сила протокола заключается в том, что он может использовать все виды различных средств связи и соединять их в единую сеть. Может использовать [дальние] приёмопередатчики, модемы, радиосвязь, Ethernet, Wi-Fi или даже моток старой медной проволоки, если у вас есть такая возможность».
▍ E2E-шифрование для распределённых приложений
Специально для шифрования трафика между распределёнными веб-приложениями разработан протокол Shelter (Укрытие). Это оригинальная разработка, которая основана на цепочках смарт-контрактов. Такие цепочки используются для создания и определения концепций в программах подобно тому, как используются классы и объекты в объектно-ориентированном программировании, за исключением того, что эти классы и объекты могут быть совместно использованы на многих устройствах, сохраняя своё состояние даже при сквозном шифровании.
В основе протокола Shelter лежат зашифрованные сообщения SPMessage
, которые определяют контракты и их действия. Каждое SPMessage
используется для отправки одного из опкодов в цепочку контрактов.
Пример цепочки контрактов в Shelter
Самое первое SPMessage
в цепочке контрактов определяет создаваемый контракт и задаёт его начальные данные. Его можно представить себе как конструктор из ООП, используемый для инстанцирования класса.
Все последующие сообщения используются для обновления состояния этой цепочки. Эти сообщения обычно называются «действиями», и их можно представить как вызовы методов в ООП.
Вместе эти сообщения образуют цепочку событий, которая используется для формирования состояния данной цепочки контрактов.
Все действия в Shelter подписываются приватным ключом, который является производным от пароля. Поэтому очень важно использовать соли паролей для защиты от брутфорса. Для получения и хранения солей в Shelter используется подпротокол нулевого знания (Zero-knowledge Password Protocol, ZKPP). Пользователь может доказать серверу, что он знает свой пароль, и таким образом получить соль, необходимую для вычисления закрытого ключа.
На базе Hyper, Shelter и других пиринговых протоколов создаются пиринговые приложения нового поколения, которые эффективно заменяют централизованные сервисы старого поколения. Для этих же целей создан протокол NOSTR (Notes and Other Stuff Transmitted by Relays), который разработчики называют «самым простым P2P-протоколом из существующих». Открытый и простой протокол работает на серверах WebSocket (рилеи), которые обрабатывают и обмениваются очень простыми инструкциями (событиями) такого вида:
{
"id": <32-bytes sha256 of the serialized event data>
"pubkey": <32-bytes hex-encoded public key of the event creator>,
"created_at": ,
"kind": ,
"tags": [
["e", <32-bytes hex of the id of another event>, ],
["p", <32-bytes hex of the key>, ],
... // other kinds of tags may be included later
]
"content": ,
"sig": <64-bytes signature of the sha256 hash of the serialized event data, which is the same as the "id" field>,
}
Это основа транспорта NOSTR. Теоретически, на его основе без особенных усилий можно построить децентрализованный аналог Twitter и другие сервисы, причём с надёжным сквозным шифрованием мирового уровня. NOSTR также рассматривается как более децентрализованная альтернатива, лучшая версия Mastodon. Кстати, и NOSTR, и Shelter позаимствовали для своих протоколов некоторые технологии Bitcoin.
На этой странице перечислены приложения, сделанные на протоколе NOSTR. Это веб-, десктопные и консольные клиенты, мобильные приложения под iOS и Android, десятки реализаций для узлов (рилеев, мостов, гейтов) и многочисленные библиотеки, чтобы интегрировать NOSTR в сторонние приложения, плюс вспомогательные инструменты для обслуживания узлов и клиентов, сервисы верификации NIP-05 и др.
Damus, твиттероподобный клиент для iOS на протоколе NOSTR, со встроенным шифрованием
Похоже, наступает эпоха децентрализованных зашифрованных сетей. Как уже стало понятно, без специальных мер защиты коммуникаций в наше время не обойтись. Между свободой и безопасностью общество во всём мире выбирает безопасность, поэтому везде устанавливают видеокамеры наблюдения, системы распознавания лиц и прослушку.
Telegram-канал с розыгрышами призов, новостями IT и постами о ретроиграх