Открыта часть серверного кода сервиса мгновенного обмена сообщениями Wire
Коммуникационный сервис Wire, предлагающий end-to-end шифрование для обмена сообщениями, голосовых звонков и видеовызовов, сообщил об открытии кода серверной части, в дополнение к коду клиентских приложений, протокола и внутренних библиотек, открытых ранее под лицензией GPLv3. Код серверных компонентов открыт под лицензией AGPLv3, которая требует открытия не только кода обособленных производных продуктов, но и web-сервисов, построенных на основе AGPL-компонентов. Код написан на языке Haskell.
В настоящее время опубликован не весь серверный код, а лишь набор отдельных библиотек и сервисов, используемых на стороне бэкенда. Открытие кода производится по мере выполнения работы по чистке и документированию кодовой базы. В ближайшие месяцы планируется открыть и все остальные части серверных компонентов Wire. Более того, в отдалённой перспективе планируется подготовить версию Wire, предназначенную для развёртывания на своём оборудовании, что позволит создавать обособленные сервисы мгновенного обмена сообщениями, не привязанные к инфраструктуре Wire.
Открытию кода серверной части способствовало успешное проведение независимого аудита реализации применяемого в Wire протокола Proteus и Cryptobox API. Аудит не выявил каких-то концептуальных или особо опасных проблем, в основном благодаря применению в Wire распространённых стандартных криптографических алгоритмов (ChaCha20, HMAC-SHA256, Curve25519 и HKDF) и библиотеки libsodium.
Из уже открытых компонентов можно отметить:
- nginz — открытый API для обращения через Reverse Proxy;
- galley — организация общения;
- proxy — интеграция со сторонними API;
- brig — ведение учётных записей (код в процессе публикации);
- gundeck — Push Notification Hub (код в процессе публикации);
- cannon — система Push-уведомлений на основе WebSocket;
- cargohold — хранилище ресурсов (код в процессе публикации);
- libs — 16 вспомогательных разделяемых библиотек.
- Ведётся работа над открытием компонентов для поиска и обнаружения пользователей, взаимодействия с push-сервисами Apple и Google, маршрутизации сообщений и событий, хранения сопутствующих данных, управления профилями и устройствами.
© OpenNet