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