Рабочий прототип секретного мессенджера

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!



Доброго времени суток, друзья!

Хочу поделиться с вами результатами небольшого эксперимента.

Суть эксперимента заключается в использовании Web Cryptography API для шифрования отправляемых в чате сообщений.

Я исходил из предположения, что по-настоящему приватный чат можно реализовать либо при наличии полного контроля над клиентом, сервером и базой данных, либо при условии отправки на сервер зашифрованных данных.

По разным причинам, я выбрал второй вариант.

Код проекта находится здесь.

Демо можно посмотреть здесь (база данных по понятным причинам отключена).

Чат выглядит так:



Клиент реализован на ванильном JavaScript (для более широкого охвата аудитории), сервер реализован с помощью Express, в качестве базы данных используется облачная MongoDB, для взаимодействия с ней — Mongoose.

Для обмена сообщениями и на клиенте, и на сервере используется Socket.io.

При запуске приложения пользователю предлагается заполнить два поля: имя и секретный ключ. Секретный ключ генерируется (выводится в консоль) при нажатии соответствующей кнопки. Он имеет примерно такой вид: 0A9sJbvjSJOjH5PY. Опционально, данные пользователя можно сохранить в локальном хранилище.

Ключ используется для шифрования и дешифровки сообщений. Зашифрованные сообщения имеют примерно такой вид: GfTbL+JpFEUPnb96OEz7YqOV~C85B2xPf4kk3PYqhw/QFcu7e7l+8klk3XXhFiocdED0=. Пользователи должны использовать одинаковые ключи, в противном случае, выбрасывается DOMException.

Возможности чата:

  • Отправка/получение зашифрованных сообщений
  • Регистрация подключения/отключения пользователя
  • Отображение списка подключенных пользователей
  • Регистрация количества подключений
  • Возможность удаления сообщений отправившим их пользователем и т.д.

Проект находится на начальном этапе и представляет собой рабочий прототип, а не полноценное приложение.

Дополнительный функционал включает в себя сервис-воркера и настройки безопасности для сервера.

Буду рад любой форме обратной связи.

Благодарю за внимание и хорошего дня.
Источник: https://habr.com/ru/post/541552/


Интересные статьи

Интересные статьи

Есть несколько способов добавить водяной знак в Битрикс. Рассмотрим два способа.
Статья о том, как упорядочить найм1. Информируем о вакансии2. Ведём до найма3. Автоматизируем скучное4. Оформляем и выводим на работу5. Отчитываемся по итогам6. Помогаем с адаптацией...
В 2019 году люди знакомятся с брендом, выбирают и, что самое главное, ПОКУПАЮТ через интернет. Сегодня практически у любого бизнеса есть свой сайт — от личных блогов, зарабатывающих на рекламе, до инт...
В Челябинске проходят митапы системных администраторов Sysadminka, и на последнем из них я делал доклад о нашем решении для работы приложений на 1С-Битрикс в Kubernetes. Битрикс, Kubernetes, Сep...
Эта статья посвящена одному из способов сделать в 1с-Битрикс форму в всплывающем окне. Достоинства метода: - можно использовать любые формы 1с-Битрикс, которые выводятся компонентом. Например, добавле...