Криптозащищенный веб-мессенджер — это комплексное программное решение, предназначенное для обеспечения защищённого обмена сообщениями между клиентами в приватной среде. Эта система включает в себя разработанные с нуля криптографические алгоритмы, безопасный протокол обмена ключами, а также серверное приложение, которое обрабатывает взаимодействия с клиентами через надёжный сетевой протокол. Дополнительно, удобное клиентское приложение позволяет пользователям инициировать и управлять защищёнными чатами, шифровать и расшифровывать сообщения, а также гарантировать защиту данных на каждом этапе передачи.
- Два симметричных алгоритма шифрования: Проект включает реализацию двух симметричных алгоритмов шифрования, разработанных с нуля на основе официальной документации данных алгоритмов, без использования сторонних библиотек или готовых реализаций. Эти алгоритмы соответствуют стандартному интерфейсу для симметричного шифрования.
- Протокол Диффи-Хеллмана: В проекте реализован протокол обмена ключами Диффи-Хеллмана для безопасной генерации и распределения сеансовых ключей между клиентами. Протокол разработан с нуля, полностью соответствуя официальной документации, без использования сторонних библиотек или готовых реализаций.
- Управление защищёнными чатами: Серверное приложение обеспечивает создание и управление защищёнными чатами, позволяя двум клиентам обмениваться зашифрованными сообщениями.
- API для безопасного взаимодействия: Сервер предоставляет API, поддерживающий следующие операции:
- Создание нового защищённого чата с возможностью выбора одного из реализованных симметричных алгоритмов шифрования.
- Завершение существующего защищённого чата.
- Подключение и отключение клиентов от защищённого чата.
- Управление безопасным распределением сеансовых ключей, сгенерированных при помощи протокола Диффи-Хеллмана.
- Обработка пользовательских запросов на отправку и получение зашифрованных сообщений между клиентами в чате.
- Асинхронное взаимодействие: Сервер использует асинхронную модель взаимодействия с использованием брокера сообщений
Apache Kafka
для обработки очереди сообщений. Эти сообщения представляют собой фрагменты шифротекста, которые сериализуются и передаются через брокер без дальнейшего хранения. - Полностью разработанный вручную графический интерфейс: Интерфейс приложения был разработан с использованием фреймворка
Vaadin
. Включает три основные страницы:- Страница входа: Регистрация новых пользователей и вход в аккаунт.
- Страница пользователя: Отображает список всех доступных чатов пользователя.
- Страница чата: Обеспечивает интерфейс для обмена сообщениями с другим пользователем в защищённом чате.
- Инициация защищённых чатов: Пользователи могут создавать и подключаться к защищённым чатам, указывая используемый симметричный алгоритм шифрования.
- Шифрование и расшифровка сообщений: Приложение поддерживает шифрование сообщений с использованием различных режимов (ECB, CBC, CFB, OFB и т.д.) и схем набивки (Zeros, PKCS7 и т.д.), реализованных согласно официальной документации. Также оно позволяет расшифровывать сообщения, полученные от сервера, с учетом этих режимов и схем набивки.
- Многопоточная обработка: При возможности операции шифрования и расшифровки выполняются в многопоточном режиме для повышения производительности.
- Работа с файлами: Пользователи могут шифровать и отправлять не только текстовые сообщения, но и файлы, используя стандартные диалоги выбора файлов.
- Отслеживание прогресса: В интерфейсе отображаются индикаторы прогресса для операций шифрования, расшифровки и передачи данных.
- Интеграция с локальной базой данных: Отправленные и полученные сообщения сохраняются в локальной базе данных, которую можно настроить по усмотрению пользователя.
- Пользовательский интерфейс: Приложение предоставляет интуитивно понятный и удобный интерфейс, отображающий активные чаты, сообщения и прогресс выполнения операций.
- Kafka: Используется как брокер сообщений для организации обмена зашифрованными данными между пользователями в асинхронном режиме.
- PostgreSQL: Хранение данных зарегистрированных пользователей, включая логины, пароли и дополнительную информацию, осуществляется в реляционной базе данных
PostgreSQL
. - Redis: Применяется для хранения истории чатов пользователей, обеспечивая быстрый доступ к данным.
- Docker: Все компоненты системы развертываются в контейнерах
Docker
, что упрощает управление средой и обеспечивает согласованность между различными этапами разработки и эксплуатации. - Vaadin: Используется для разработки пользовательского интерфейса, включая страницы входа, списка чатов и страницы чата.
- Внедрение зависимостей (DI): Серверное приложение поддерживает инверсию управления (
IoC
) с использованием внедрения зависимостей (DI
), что позволяет гибко настраивать конфигурацию развертывания с помощью конфигурационных файлов. - Репликация сообщений: Система может быть расширена для поддержки репликации сообщений, хранящихся в брокере сообщений, для повышения надёжности.