Session messenger

Session messenger — открытый децентрализованный мессенджер (бывший Loki Messenger) на базе экосистемы Oxen (бывший Loki blockchain), который поддерживает сквозное шифрование на основе протокола Signal, а также удаление некоторых метаданных. Данный мессенджер позволяет обмениваться сообщениями и различными файлами с минимальным количеством пользовательских метаданных[4].

Session messenger
Тип IM
Разработчик Loki Foundation
Написана на C++
Интерфейс EGL
Операционная система Linux, Windows, Android, MacOS, IOS[1]
Языки интерфейса английский
Первый выпуск 4 февраля 2020[2]
Последняя версия 1.1.0 (17 апреля 2020)
Лицензия GPL v3[3]
Сайт getsession.org

Session messenger не требует телефонный номер или email адрес для регистрации[5].

При создании аккаунта генерируется случайный уникальный ID вида: 05652245af9a8bfee4f5a8138fd5c…[6] После этого можно отправить этот идентификатор контактам, которым вы хотите, или считать и отправить QR-код.

История

Session messenger является преемником Loki messenger. Первая версия вышла 04 февраля 2020 г. в Google Play[2].

Начиная с версии 1.1.0 появился выбор между фоновой синхронизацией сообщений и push-уведомлениями[7]. На Андроиде синхронизация push-сообщений происходит через Firebase Cloud Messaging (FCM) от Google.

Основная информация

В данном мессенджере используется децентрализованная работа на базе блокчейна Oxen (предыдущее название – Loki), а также работа через луковую маршрутизацию. Используется рой из децентрализованных серверов, которые построены на базе Oxen blockchain — Oxen Service Node. В свою очередь работа Oxen blockchain основана на протоколе CryptoNote[8].

Другим основополагающим компонентом Session является протокол луковой маршрутизации и так называемые луковые запросы, которые позволяют клиентам Session скрывать свои IP-адреса путем создания случайного пути через 3 обслуживающих узла в сети[9]. Session также поддерживает асинхронный (offline) режим обмена сообщениями[10].

Передача сообщений в Session messenger

На схеме Алиса использует луковичные запросы для отправки слушающим узлам (Listening Nodes) Боба. Боб получает это сообщение, используя луковые запросы, затем посылает сообщение слушающим узлам (Listening Nodes) Алисы[11].

Протокол Signal позволяет клиентам поддерживать Perfect Forward Secrecy (PFS) и отказную аутентификацию (Deniable Authentication) с режимом обмена сообщениями в асинхронном режиме после первоначального установления сеанса с использованием долгосрочных ключей[11].

Сигнальный протокол выполняет PFS благодаря согласованию о ключах — тройному расширенному Диффи-Хеллману (Extended Triple Diffie-Hellman (X3DH)) и алгоритму двойного храповика (Double Ratchet Algorithm) для получения ключей сообщения[11]. Возвращение приватной информации происходит через специальную схему PIR (Private Information Retrieval). Эти протоколы позволяют пользователю искать в обслуживающих узлах информацию без знания самих узлов, какая информация была выбрана и передана пользователю[12]. В мессенджере также можно создавать групповые чаты с использованием сквозного шифрования[13].

Открытые группы можно создавать от 3-х до 500 участников. Ограничение в 500 участников введено потому, что при очень больших группах есть больша́я доля вероятности, что какой-то из участников может быть злоумышленником или участником с заражённым устройством. Закрытые группы со сквозным шифрованием можно создавать от 3-х до 10 участников[14].

Модификации в протоколе Signal

В дополнение к сигнальному протоколу были сделаны изменения, которые избегают использование центральных серверов, а также для совместного использования связки предварительных общих ключей (prekey bundles). Также к каждому сообщению добавляется служебная информация о необходимой маршрутизации и проверке на корректность создания сообщения[15].

Применяемые меры защиты в Session Messenger

  1. Анонимность отправителя: долгосрочный идентификационный ключ отправителя известен только участникам разговора и IP-адрес отправителя неизвестен другим сторонам, исключая первый прыжок (входная нода) в луковом запросе. Однако, входная нода не знает ни адреса назначения, ни содержание сообщения[16].
  2. Анонимность получателя: IP-адрес получателя неизвестен другим сторонам, исключая первый прыжок (входная нода) в луковом запросе. И также, входная нода не знает адреса назначения или содержание сообщения[16].
  3. Целостность данных: сообщения получаются нетронутыми и не модифицированными, а если сообщение было модифицировано в процессе передачи, оно помечается как испорченное и отбрасывается[16].
  4. Хранилище: зашифрованные сообщения временно хранятся в нодах и доступны в течение указанного времени Time To Live (TTL)[16].
  5. Сквозное шифрование: сообщения (за исключением запросов на добавление друзей) обладают свойствами Off the Record (OTR) протокола, называемые Perfect Forward Secrecy (PFS) и отказной аутентификации (Deniable authentication)[16].

Дополнительные возможности

Мульти-устройства

Session поддерживает мульти-устройства (multi-device). Таким образом можно использовать его и на компьютере, ноутбуке, телефоне, а также на других устройствах одновременно[17]. Для этого необходимо, чтобы была проведена синхронизация ключей между двумя устройствами. С точки зрения пользователя нужно, чтобы оба устройства имели одинаковую ключевую пару публичного и приватного ключа.

Мульти-устройства в Session messenger

На схеме изображена пересылка информации с использованием нескольких устройств. Алиса посылает сообщение с её первичного устройства для Боба, у которого включено несколько устройств одновременно. Алиса отправляет сообщение для первичного и вторичного устройства Боба. Она также отправляет сообщение себе, для своего вторичного устройства для оставления своего сообщения на другом устройстве. (Для упрощения рисунка здесь не показаны луковые запросы, а также репликация сообщений через рой).

Передача вложений

Отправка файлов поддерживается до 10 МБ. Перед отправкой файл шифруется случайным AES ключом. После этого отправитель отправляет файл через луковые запросы (onion requests). В ответ файловый сервер передаёт ссылку на контент, возвращаемую тоже через луковые запросы. После этого отправитель отправляет сообщение получателю через существующую сессию. Это сообщение содержит ссылку на контент, его хэш и ключ расшифровки. Получатель использует луковые запросы для получения зашифрованного сообщения с файл-сервера, а затем расшифровывает его с помощью полученного ключа дешифровки от отправителя. Получатель также проверяет хэш вложения для проверки того, что файл не был модифицирован при передаче[18].

Другие возможности

В мессенджере есть возможность создавать исчезающие сообщения с периодом от 5 секунд до 1 недели. Для защиты от спама максимальное время хранения сообщений в рое перед их доставкой составляет 96 часов[19]. Это время можно выбрать в настройках приложения в пределах 12 часов — 96 часов (Message TTL).

Session поддерживает бэкап на некоторые популярные облачные бэкап-сервисы. Бэкап шифруется с помощью симметричного ключа (полученного из долгоживущего приватного ключа (long-term private key), который в свою очередь шифруется с помощью парольной фразы, состоящей из 12 произносимых случайных слов[20].

В мессенджере предусмотрена защита от Sybil attack, а также защита от спама[21].

Достоинства Session messenger

  1. Децентрализация на основе блокчейна.
  2. Поддержка сквозного шифрования и протокола Signal.
  3. Для регистрации в системе не требуется телефонного номера или email.
  4. Поддержка групповых чатов со сквозным шифрованием (до 10 человек).
  5. Поддержка луковых запросов.
  6. Кроссплатформенность.

Недостатки Session messenger

  1. Невысокая производительность и, как следствие, доставка сообщений с заметной задержкой.
  2. Повышенное потребление сетевого трафика (характерна для всех децентрализованных мессенджеров).

См. также

Ссылки

Примечания

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.