Простой зашифрованный веб -чат. Powered By Socket.io, веб -криптография API. Этот проект является примером того, как работает шифрование на стороне клиента и как вы можете интегрировать его в качестве службы чата.
Darkwire Server - это приложение Node.js.
Веб -клиент Darkwire.io написан в JavaScript с React JS и Redux.
Скопируйте файлы .env.dist в server/ и client/ каталогах без расширений .dist и адаптируйте их к вашим потребностям.
У вас должно быть подключение к HTTPS для работы Darkwire, потому что он использует API Crypto Browser, который доступен только на Localhost и за подключением HTTPS.
Вы можете использовать NVM для установки правильной версии узла, используя эту команду:
nvm install # If the right node version is not already installed
nvm use
npm install yarn -g # To install yarn
Установить зависимости
$ yarn
Начать сервер и клиент
$ yarn setup
$ yarn dev
Просто запустите следующее:
$ docker-compose up
Это автоматически создаст для вас файлы по умолчанию .env .
Создать сервер и клиентские сборки производства
$ yarn build
Начальный сервер
$ yarn start
Построить это.
$ docker build --tag darkwire.io:latest .
Затем запустите его. Пример:
$ docker run --init --name darkwire.io --rm -p 3001:3001 darkwire.io
Вы можете использовать любую из переменных среды, доступной в server/.env.dist и client/.env.dist . По умолчанию доступны в Dockerfile
Пожалуйста, сообщите о любых вопросах безопасности [email protected] .
Darkwire использует комбинацию асимметричного шифрования (RSA-OAEP), симметричных сеан-клавиш (AES-CBC) и подписания клавиш (HMAC) для безопасности.
Вот обзор чата между Алисой и Бобом (также относится к групповым чатам):
Групповые чаты работают одинаково, потому что на шаге 5 мы шифруем ключи от всех. Когда сообщение отправляется, оно включает зашифрованные ключи для всех в комнате, а затем получатели выбирают те, которые для них на основе их идентификатора пользователя.
Darkwire не дает никакой гарантии того, что человек, с которым вы общаетесь, является тем, кем, по вашему мнению, они есть. Функциональность аутентификации может быть включена в будущие версии.
Darkwire кодирует документы в BASE64 с использованием BTOA и зашифруется так же, как и сообщения чата.
Предел передачи файла REACT_APP_MAX_FILE_SIZE умолчанию составляет 4 МБ, но может быть изменен в .env
Darkwire использует Socket.io для передачи зашифрованной информации с использованием безопасных веб -питания (WSS).
Комнаты хранятся в памяти на сервере, пока все участники не уйдут, после чего комната будет уничтожена. Только общедоступные ключи хранятся в памяти сервера в течение всей жизни комнаты.
История чата хранится в браузере каждого участника, поэтому он эффективно стерт (для этого пользователя), когда их окно закрыто.