30.06.2022

Выпуск libgnunetchat 0.1.0, библиотеки для создания децентрализованных чатов

Разработчики фреймворка GNUnet, предназначенного для построения защищённых децентрализованных P2P-сетей, не имеющих единой точки отказа и способных гарантировать неприкосновенность частной информации пользователей, представил первый выпуск библиотеки libgnunetchat 0.1.0. Библиотека позволяет упростить использование технологий GNUnet и сервиса GNUnet Messenger для создания защищённых приложений для чата.

Libgnunetchat предоставляет отдельный уровень абстракции над GNUnet Messenger, включающий типовую функциональность, применяемую в мессенджерах. Разработчику остаётся сосредоточить внимание на создании графического интерфейса с использованием GUI-тулкита на свой выбор, и не заботиться о компонентах, связанных с организацией работы чата и взаимодействием между пользователями. Создаваемые на базе libgnunetchat реализации клиентов остаются совместимыми между собой и могут взаимодействовать друг с другом.

Для обеспечения конфиденциальности и защиты от перехвата сообщений применяется протокол CADET (Confidential Ad-hoc Decentralized End-to-End Transport), позволяющий организовать полностью децентрализованное взаимодействие между группой пользователей с использованием сквозного шифрования передаваемых данных. Пользователям предоставляется возможность отправки сообщений и файлов. Доступ к сообщениям в файлам предоставляется только участникам группы. Для координации взаимодействия между участниками децентрализованной сети может применяться распределённая хэш таблица (DHT) или специальные точки входа.

Кроме Messenger в libgnunetchat также применяются следующие сервисы GNUnet:

  • GNS (GNU Name System, полностью децентрализованная и недоступная для цензуры замена DNS) для определения опубликованных записей в публичных страницах чатов (lobbie), открытия чата и обмена учётными данными.
  • ARM (Automatic Restart Manager) для автоматизации запуска всех сервисов GNUnet, необходимых для работы.
  • FS (File Sharing) для безопасной загрузки, отправки и организации совместного доступа к файлам (вся информация передаётся только в зашифрованном виде, а использование протокола GAP не позволяет отследить кто разместил и скачал файл).
  • IDENTITY для создания, удаления и управления учётными записями, а также для верификации параметров другого пользователя.
  • NAMESTORE для локального хранения адресной книги и информации о чатах и для публикации записей на страницах чатов, доступных через GNS.
  • REGEX для публикации информации об участниках, позволяющей быстро сформировать публичный групповой чат на определённую тему.

Основные возможности первого выпуска libgnunetchat:

  • Управление учётными записями (создание, просмотр, удаление) и возможность переключения между разными учётными записями во время работы.
  • Возможность переименование учётной записи и обновления ключа.
  • Обмен контактами через публичные страницы чатов (lobbie). Информация о пользователе может быть получена как в формате текстовой ссылки, так и в виде QR-кода.
  • Контакты и группы могут управляться отдельно, возможна привязка разных ников к разным группам.
  • Возможность запроса и открытия прямого чата с любым участником из адресной книги.
  • Абстрагирование представлений пользователя и чата для упрощения обёртки в желаемый интерфейс.
  • Поддержка отправки текстовых сообщений, файлов и организации совместного доступа к файлам.
  • Поддержка отправки подтверждения о прочтении сообщения и возможность проверка статуса получения сообщения.
  • Возможность автоматического удаления сообщения через заданное время.
  • Гибкие возможности по управлению файлами в чате, например, можно организовать отображение эскиза содержимого с оставлением самого содержимого в зашифрованном виде.
  • Возможность подключения обработчиков для отслеживания всех операцй (загрузка, отправка, удаление из индексов).
  • Поддержка приёма приглашений для подключения к новым чатам.

Дополнительно можно отметить релиз готового мессенджера GNUnet Messenger 0.7, основанного на библиотеке libgnunetchat и предлагающего интерфейс на базе GTK3. Из зависимостей также присутствуют gstreamer, libhandy и libnotify. Программа поддерживает создание чатов и групп чатов, управление адресной книгой, рассылку приглашений на вступление в группы, отправку текстовых сообщений и голосовых записей, организацию совместного доступа к файлам, переключение между несколькими учётными записями. Для любителей адресной строки отдельно развивается консольный мессенджер на базе libgnunetchat, который пока находится на начальной стадии развития.


Источник.