Официальный серверный компонент для Phantom Secure Messenger. Этот сервер — не просто центральный узел, а гибридный P2P-хаб, написанный на Go. Его основная задача — обеспечить надежную связь в условиях, когда прямые P2P-соединения невозможны, и помочь клиентам находить друг друга в децентрализованной сети.
Сервер спроектирован с упором на приватность и безопасность: он не имеет доступа к ключам шифрования и не может читать сообщения. Это просто умная и защищенная "труба" для доставки зашифрованных пакетов.
-
Гибридная P2P-архитектура:
- Bootstrap-узел: Помогает новым клиентам подключиться к P2P-сети.
- P2P Relay (ретранслятор): Использует
libp2p circuit relay v2для соединения клиентов, находящихся за сложными NAT. - Fallback-механизм: Если P2P-соединение невозможно, сервер временно хранит и доставляет офлайн-сообщения.
- Умная маршрутизация: Активно уведомляет клиентов о возможности прямого P2P-соединения, снижая нагрузку на себя.
-
Постквантовая безопасность:
- Использует постквантовые подписи CRYSTALS-Dilithium5 для аутентификации ключевых ответов сервера, защищая от MitM-атак даже в эпоху квантовых компьютеров.
-
Современный сетевой стек:
- Поддержка gRPC как через надежный TCP (HTTP/2), так и через быстрый QUIC (HTTP/3).
- Полная интеграция с libp2p для P2P-коммуникаций.
-
Защита и отказоустойчивость:
- Встроенные ограничители скорости (rate limiters) для защиты от DoS-атак на регистрацию и запросы ключей.
- Проверка криптографической подписи каждого пакета.
- Защита от захвата аккаунтов путем проверки PQC-ключей при перерегистрации.
- Автоматическая генерация TLS-сертификатов и ключей подписи.
-
Приватность по умолчанию:
- Сервер оперирует только хэшами клиентов и не хранит личную информацию.
- Полностью совместим с архитектурой End-to-End шифрования и не может расшифровать трафик.
Этот проект лицензирован под GNU Affero General Public License v3.0 (AGPLv3). Это сделано для того, чтобы гарантировать, что сеть Phantom и её улучшения всегда будут оставаться открытыми. Если кто-то запускает публичный экземпляр этого сервера с изменениями, он обязан поделиться этими изменениями с сообществом.