X:/Chat ist eine Webanwendung, die HTML, CSS und JavaScript im Front-End und Node.js im Back-End verwendet. Dadurch können Benutzer sicher miteinander kommunizieren (obwohl ich neu in Node.js bin und die Sicherheit nicht garantieren kann).
JavaScript und lokaler Speicher sind absolut obligatorisch , damit die Web -App funktioniert. Lokaler Speicher wird verwendet, um öffentliche Schlüssel, private Schlüssel, Einstellungen und vieles mehr zu speichern.
Wenn Sie die Funktion "Anonymous Chat" verwenden, wird vom Server absolut nichts gespeichert. Ich wollte die sichere Kommunikationsform erstellen, die ich mir vorstellen konnte, und schließlich entschied ich mich, nicht einmal Konversationsprotokolle durch den anonymen Chat zu speichern. Wenn Sie auf die Schaltfläche "Anonymous Chat" klicken, werden Sie auf "/anonymous" umgeleitet, wobei eine ID für Sie zusammen mit einem öffentlichen Schlüssel und einem privaten Schlüssel generiert wird. Diese werden ausschließlich in Ihrem Browser (im lokalen Speicher) gespeichert. Der Server speichert keine dieser Informationen. Das einzige, was der Server speichert, ist die Konversations -ID und die Erstellungszeit. Dies geschieht, damit Gespräche nach einer Stunde ablaufen. Nachdem das Laden abgeschlossen ist, können Sie Ihre URL an jeden senden, den Sie möchten, und lassen Sie sie mit Ihnen verbunden. Sobald sie dies tun, erhalten sie auch ein öffentliches/privates Schlüsselpaar, das für sie sowie eine ID generiert wird. Sie erhalten dann ihren öffentlichen Schlüssel und ihren Ausweis. Wenn Sie eine Nachricht senden, verschlüsseln Sie sie mit ihrem öffentlichen Schlüssel RSA-2048, den sie dann (lokal) mit ihrem privaten Schlüssel entschlüsseln. Da die Nachricht auf der Clientseite verschlüsselt ist, weiß der Server nie, was gesagt wird. Das Aktualisieren der Seite löscht die Nachrichten für diejenigen, die aktualisiert wurden, da die Nachrichten nirgendwo gespeichert sind. Aufgrund der Tatsache, dass nichts auf dem Server gespeichert wird, bedeutet dies, dass Benutzer ihre IDs und dergleichen problemlos ändern können, weshalb dieses Projekt eher von kleinen Gruppen als von der Öffentlichkeit verwendet wird. Wenn der Server anonyme Gespräche speichern, würde der Vorteil der von Benutzern unveränderlichen Konversationen verlegt werden, aber dies würde bedeuten, dass der Server sie ändern kann und dass Protokolle vorhanden würden. Möchten Sie Ihrem Freund oder einem zufälligen Server lieber vertrauen?
Der normale Chat ähnelt eher Ihrer generischen Chat -Anwendung. Nachrichten werden weiterhin auf der Client-Seite mit RSA-2048 verschlüsselt, und die privaten Schlüssel der Benutzer werden mit AES-256-CTR verschlüsselt, die den SHA512-Hash des Benutzerkennworts als Entschlüsselungsschlüssel verwendet. Das Kennwort des Benutzers wird mit BCrypt mit 10 Salzrunden gespeichert. Kurz gesagt, es sei denn, der Servercode wird geändert oder etwas, um den privaten Schlüssel des Benutzers zu erfassen, es gibt absolut keine Möglichkeit, den Inhalt einer Konversation zu erhalten. Die Einstellungen, Kontakte und andere Daten des Benutzers werden im JSON -Format in Textdateien für einen einfachen Zugriff gespeichert. Diese werden in Klartext gespeichert, aber es wäre einfach, sie mit dem Kennwort und der AES des Benutzers zu verschlüsseln. Wenn Sie dies Wirklichkeit werden möchten, denken Sie daran, dass bereits Funktionen geschrieben wurden, um es einfacher zu machen. Sie können die Funktionen "Aes_encrypt (Plaintext, Passwort)" und "AES_DECRYPT (verschlüsselt, Passwort)" verwenden, die ich an alles, was Sie wollen, einfach verschlüsseln/entschlüsseln habe.
Es kann einige Fehler oder ein unerwartetes Verhalten geben, aber dies ist zu erwarten, dass dies schließlich mein erster Node.js -Projekt ist. Wenn Sie versuchen, die App zu brechen, werden Sie höchstwahrscheinlich Erfolg haben. Es gibt nicht so viele Validierungsprüfungen und so, dass ich es mir möchte, aber es gibt genug, um die Konten und Gespräche des Benutzers zu schützen. Ich entschuldige mich im Voraus, wenn etwas schief geht.