Открыта часть серверного кода сервиса мгновенного обмена сообщениями 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