簡單的加密網絡聊天。由socket.io提供動力,網絡加密API。該項目是客戶端加密的工作原理以及如何將其集成為聊天服務的一個示例。
Darkwire Server是一個Node.js應用程序。
Darkwire.io Web客戶端用JavaScript編寫了React JS和Redux。
複製server/和client/目錄中的.env.dist文件,而無需.dist擴展,並根據您的需求進行調整。
您必須有一個HTTPS連接才能使Darkwire可以使用,因為它使用的是Crypto瀏覽器API,該API僅在Localhost和HTTPS連接後面可訪問。
您可以使用NVM使用此命令來安裝NODE的正確版本:
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中,我們使用每個人的公鑰加密密鑰。當發送消息時,它包括房間中每個人的加密鍵,然後收件人根據用戶ID為其挑選這些鍵。
Darkwire不能提供與您與之交流的人是您認為的人。身份驗證功能可以納入以後的版本。
Darkwire使用BTOA將文檔編碼為BASE64,並以聊天消息的方式進行加密。
默認可傳輸的文件大小限制為4MB,但可以使用REACT_APP_MAX_FILE_SIZE acize變量在.env文件中更改。
Darkwire使用socket.io使用安全的Websocket(WSS)傳輸加密信息。
房間存儲在服務器上的內存中,直到所有參與者都離開為止,此時房間被摧毀。在房間一生的持續時間內,只有公共鑰匙存儲在服務器內存中。
聊天歷史記錄存儲在每個參與者的瀏覽器中,因此在關閉窗口時(對於該用戶)有效地刪除了聊天歷史記錄。