Session messenger

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

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

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

При создании аккаунта генерируется случайный уникальный ID[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[en])[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. Повышенное потребление сетевого трафика (характерна для всех децентрализованных мессенджеров).

См. также[править | править код]

Ссылки[править | править код]

Примечания[править | править код]

  1. Официальная страница загрузки Session messenger. Дата обращения: 5 мая 2020. Архивировано 12 мая 2020 года.
  2. 1 2 Session messenger в Google Play. Дата обращения: 5 мая 2020. Архивировано 22 мая 2020 года.
  3. Loki-project на GitHub. Дата обращения: 5 мая 2020. Архивировано 18 июня 2020 года.
  4. Whitepaper (удаление метаданных), стр.1
  5. Whitepaper, стр.24
  6. Session: An Open Source Private Messenger That Doesn’t Need Your Phone Number. Дата обращения: 5 мая 2020. Архивировано 2 мая 2020 года.
  7. Изменения в Session messenger (Google Play). Дата обращения: 5 мая 2020. Архивировано 22 мая 2020 года.
  8. Whitepaper, стр.3
  9. Whitepaper, стр.4
  10. Whitepaper, стр.9
  11. 1 2 3 Whitepaper, стр.10
  12. Whitepaper, стр.27
  13. Whitepaper, стр.12
  14. Whitepaper, стр.15
  15. Whitepaper, стр.11-12
  16. 1 2 3 4 5 Whitepaper, стр.1
  17. Whitepaper, стр.16
  18. Whitepaper, стр.18, 23
  19. Whitepaper, стр.23
  20. Whitepaper, стр.20
  21. Whitepaper, стр.3-4