简单的加密网络聊天。由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)传输加密信息。
房间存储在服务器上的内存中,直到所有参与者都离开为止,此时房间被摧毁。在房间一生的持续时间内,只有公共钥匙存储在服务器内存中。
聊天历史记录存储在每个参与者的浏览器中,因此在关闭窗口时(对于该用户)有效地删除了聊天历史记录。