Read this in other languages: English, Русский
Ранее выпущенный в рамках платформы блокчейн iZ³, StarWave - это протокол обмена сообщениями, который предоставляет возможность создавать зашифрованные каналы высокой скорости между узлами в p2p-режиме.
Сеть разработана таким образом, чтобы быть не убиваемой и безопасной, и она основана на принципах автоматического построения маршрутов и шифрования данных. Одной из основных особенностей является то, что сеть работает поверх множества других сетей, таких как web2, сеть Tor и т. д., поэтому ее можно использовать в любой среде.
Это референсная реализация узла протокола StarWave на Node.js.
Сообщение - это структура данных, которая содержит в себе информацию о типе сообщения, адресе отправителя и получателя, времени отправки, и само сообщение. Сообщение может содержать в себе любые данные, включая текст, файлы, изображения и т. д.
ВНИМАНИЕ: Пожалуйста, не путайте с сообщением в смысле мгновенного сообщения в мессенджерах. Имеется в виду именно формат обмена данными между сервисами и приложениями.
StarWave 2 использует адреса и ключи шифрования на основе криптографии Ethereum. Адрес - это строка длиной 20 байт, а ключ - строка длиной 32 байта. Адрес используется для идентификации узла в сети, а ключ используется для шифрования данных.
Протокол является многоуровневым, каждый из уровней обеспечивает определенные функции. На текущий момент представлены следующие уровни:
- Ядро
- Сетевые модули
- Протокол шифрованных каналов
- Сокеты и приложения
Ядро обеспечивает основные функции менеджмента сообщений, управление роутером, обеспечение проверки подписи, построения маршрутов узлов и проверки целостности.
Эти модули представляют собой внутренние и внешние реализации обмена данными между узлами. Сетевые модули должны обеспечивать:
- Поиск узлов в соответствии с поддерживаемым протоколом
- Построение списка адресов подключенных узлов (желательно с проверкой подписи)
- Непосредственную передачу сообщений между узлами
- Переподключение к узлам при обрыве соединения и контроль сетевых ошибок
На данный момент представлен реализацией обмена ключами по методу Диффи-Хеллмана и шифрованием данных по алгоритму AES-256 с DH_PRIME_LENGTH = 512 бит. Шифрование обеспечивается встроенным криптомодулем алгоритмом aes-256-cbc. Ключ шифрования = sha256(DH_NODE_KEY). Подключенные сессии шифруются каждая своим ключом и хранится в памяти узла.