Chat Web crypté simple. Propulsé par Socket.io, l'API de cryptographie Web. Ce projet est un exemple du fonctionnement du cryptage côté client et de la façon dont vous pouvez l'intégrer en tant que service de chat.
Darkwire Server est une application Node.js.
Le client Web darkwire.io est écrit en javascript avec React JS et Redux.
Copiez les fichiers .env.dist dans server/ et client/ les répertoires sans les extensions .dist et les adaptez à vos besoins.
Vous devez avoir une connexion HTTPS pour que Darkwire fonctionne car il utilise une API de navigateur Crypto qui est accessible uniquement sur LocalHost et derrière une connexion HTTPS.
Vous pouvez utiliser NVM pour installer la bonne version de Node en utilisant cette commande:
nvm install # If the right node version is not already installed
nvm use
npm install yarn -g # To install yarn
Installer des dépendances
$ yarn
Démarrer le serveur et le client
$ yarn setup
$ yarn dev
Exécutez simplement ce qui suit:
$ docker-compose up
Cela créera automatiquement les fichiers .env par défaut pour vous.
Créer des versions de production de serveurs et de clients
$ yarn build
Démarrer le serveur
$ yarn start
Construisez-le.
$ docker build --tag darkwire.io:latest .
Ensuite, exécutez-le. Exemple:
$ docker run --init --name darkwire.io --rm -p 3001:3001 darkwire.io
Vous pouvez utiliser l'une des variables d'environnement disponibles dans server/.env.dist et client/.env.dist . Les valeurs par défaut sont disponibles dans dockerfile
Veuillez signaler tout problème de sécurité à [email protected] .
Darkwire utilise une combinaison de cryptage asymétrique (RSA-OAEP), de clés de session symétriques (AES-CBC) et de clés de signature (HMAC) pour la sécurité.
Voici un aperçu d'une conversation entre Alice et Bob (s'applique également aux chats de groupe):
Les chats de groupe fonctionnent de la même manière car à l'étape 5, nous cryptons les clés avec la clé publique de chacun. Lorsqu'un message est envoyé, il comprend des clés cryptées pour tout le monde dans la pièce, et les destinataires choisissent ensuite ceux pour eux en fonction de leur identifiant utilisateur.
Darkwire ne garantit aucune garantie que la personne avec qui vous communiquez est qui vous pensez être. La fonctionnalité d'authentification peut être incorporée dans les versions futures.
DarkWire code des documents dans Base64 à l'aide de BTOA et est chiffré de la même manière que les messages de chat sont.
La limite de taille de fichier transférable par défaut est de 4 Mo, mais peut être modifiée dans le fichier .env avec la variable REACT_APP_MAX_FILE_SIZE .
Darkwire utilise Socket.io pour transmettre des informations chiffrées à l'aide de WebSockets sécurisés (WSS).
Les chambres sont stockées en mémoire sur le serveur jusqu'à ce que tous les participants soient partis, à quel point la pièce est détruite. Seules les clés publiques sont stockées dans la mémoire du serveur pendant la durée de la vie de la pièce.
L'historique du chat est stocké dans le navigateur de chaque participant, il est donc effectivement effacé (pour cet utilisateur) lorsque leur fenêtre est fermée.