Einfacher verschlüsselter Web -Chat. Angetrieben von Socket.io, der Web -Kryptographie -API. Dieses Projekt ist ein Beispiel dafür, wie Client -Seitenverschlüsselung funktioniert und wie Sie sie als Chat -Dienst integrieren können.
Darkwire Server ist eine Node.js -Anwendung.
Der Darkwire.io -Web -Client ist in JavaScript mit React JS und Redux geschrieben.
Kopieren Sie .env.dist -Dateien in server/ und client/ Verzeichnissen ohne die .dist -Erweiterungen und passen Sie sie an Ihre Anforderungen an.
Sie müssen eine HTTPS -Verbindung haben, damit Darkwire funktioniert, da sie die Krypto -Browser -API verwendet, die nur auf Localhost und hinter einer HTTPS -Verbindung zugänglich ist.
Sie können mit NVM die richtige Version des Knotens mit diesem Befehl installieren:
nvm install # If the right node version is not already installed
nvm use
npm install yarn -g # To install yarn
Abhängigkeiten installieren
$ yarn
Server und Client starten
$ yarn setup
$ yarn dev
Führen Sie einfach Folgendes aus:
$ docker-compose up
Dadurch wird automatisch die Standard .env -Dateien für Sie erstellt.
Erstellen Sie Server- und Client -Produktionsergebnisse
$ yarn build
Server starten
$ yarn start
Bauen Sie es.
$ docker build --tag darkwire.io:latest .
Dann führen Sie es aus. Beispiel:
$ docker run --init --name darkwire.io --rm -p 3001:3001 darkwire.io
Sie können eine der Umgebungsvariablen verwenden, die im server/.env.dist und client/.env.dist verfügbar sind. Die Standardeinstellungen sind in Dockerfile verfügbar
Bitte melden Sie alle Sicherheitsprobleme an [email protected] .
DarkWire verwendet eine Kombination aus asymmetrischer Verschlüsselung (RSA-OAEP), symmetrischer Sitzungsschlüssel (AES-CBC) und Signierschlüssel (HMAC) für die Sicherheit.
Hier finden Sie einen Überblick über einen Chat zwischen Alice und Bob (auch für Gruppen -Chats gilt):
Gruppen -Chats funktionieren genauso, denn in Schritt 5 verschlüsseln wir Tasten mit dem öffentlichen Schlüssel aller. Wenn eine Nachricht gesendet wird, enthält sie verschlüsselte Schlüssel für alle im Raum, und die Empfänger wählen dann die für sie basierend auf ihrer Benutzer -ID aus.
DarkWire bietet keine Garantie dafür, dass die Person, mit der Sie kommunizieren, ist, wie Sie glauben. Die Authentifizierungsfunktionalität kann in zukünftige Versionen aufgenommen werden.
DarkWire codiert Dokumente in Base64 mit BTOA und wird genauso verschlüsselt wie Chat -Nachrichten.
Die standardmäßige übertragbare Dateigrößengröße ist 4 MB, kann jedoch in .env -Datei mit der Variablen REACT_APP_MAX_FILE_SIZE geändert werden.
DarkWire verwendet Socket.io, um verschlüsselte Informationen mit Secure WebSockets (WSS) zu übertragen.
Räume werden auf dem Server im Speicher gespeichert, bis alle Teilnehmer gegangen sind. An diesem Punkt wird der Raum zerstört. Für die Dauer des Lebensdauers werden nur öffentliche Schlüssel im Serverspeicher gespeichert.
Der Chat -Verlauf wird in den Browser jedes Teilnehmers gespeichert, sodass er (für diesen Benutzer) effektiv gelöscht wird, wenn ihr Fenster geschlossen ist.