Разработчики фреймворка 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-кода.
- Контакты и группы могут управляться отдельно, возможна привязка разных ников к разным группам.
- Возможность запроса и открытия прямого чата с любым участником из адресной книги.
- Абстрагирование представлений пользователя и чата для упрощения обёртки в желаемый интерфейс.
- Поддержка отправки текстовых сообщений, файлов и организации совместного доступа к файлам.
- Поддержка отправки подтверждений о чтении сообщений и проверка статуса получения сообщения.
- Возможность автоматического удаления сообщения через заданное время.
- Гибкие возможности по управлению файлами в чате, например, возможно отображение эскиза содержимого с оставлением самого содержимого в зашифрованном виде.
- Возможность подключения обработчиков для отслеживания всех операцй (загрузка, отправка, удаление из индексов).
- Поддержка приёма приглашений для подключения к новым чатам.