CHAT da web criptografado simples. Alimentado por Socket.io, a API da criptografia na web. Este projeto é um exemplo de como a criptografia do lado do cliente funciona e como você pode integrá -lo como um serviço de bate -papo.
O servidor Darkwire é um aplicativo Node.js.
O cliente da Web Darkwire.io está escrito em JavaScript com React JS e Redux.
Copy .env.dist Arquivos no server/ e nos diretórios client/ diretórios sem as extensões .dist e adapte -os às suas necessidades.
Você deve ter uma conexão HTTPS para que o Darkwire funcione, pois está usando a API do navegador Crypto, que é acessível apenas em localhost e atrás de uma conexão HTTPS.
Você pode usar o NVM para instalar a versão correta do nó usando este comando:
nvm install # If the right node version is not already installed
nvm use
npm install yarn -g # To install yarn
Instalar dependências
$ yarn
Iniciar servidor e cliente
$ yarn setup
$ yarn dev
Basta executar o seguinte:
$ docker-compose up
Isso criará automaticamente os arquivos .env padrão para você.
Criar compilações de produção de servidor e cliente
$ yarn build
Start Server
$ yarn start
Construa.
$ docker build --tag darkwire.io:latest .
Então execute. Exemplo:
$ docker run --init --name darkwire.io --rm -p 3001:3001 darkwire.io
Você pode usar qualquer uma das variáveis de ambiente disponível no server/.env.dist e client/.env.dist . Os padrões estão disponíveis no Dockerfile
Por favor, relate quaisquer problemas de segurança para [email protected] .
O Darkwire usa uma combinação de criptografia assimétrica (RSA-OAEP), chaves de sessão simétrica (AES-CBC) e chaves de assinatura (HMAC) para segurança.
Aqui está uma visão geral de um bate -papo entre Alice e Bob (também se aplica a bate -papos em grupo):
Os bate -papos em grupo funcionam da mesma maneira, porque na etapa 5 criptografamos chaves com a chave pública de todos. Quando uma mensagem é enviada, ela inclui teclas criptografadas para todos na sala, e os destinatários escolhem os para eles com base no seu ID de usuário.
Darkwire não fornece nenhuma garantia de que a pessoa com quem você está se comunicando é quem você acha que é. A funcionalidade de autenticação pode ser incorporada em versões futuras.
Darkwire codifica documentos no Base64 usando o BTOA e é criptografado da mesma maneira que as mensagens de bate -papo.
O limite de tamanho de arquivo transferível padrão é de 4 MB, mas pode ser alterado no arquivo .env com a variável REACT_APP_MAX_FILE_SIZE .
Darkwire usa o Socket.io para transmitir informações criptografadas usando WSSockets Secure Webs (WSS).
Os quartos são armazenados na memória no servidor até que todos os participantes saíram, momento em que a sala é destruída. Somente as chaves públicas são armazenadas na memória do servidor durante a vida da sala.
O histórico de bate -papo é armazenado no navegador de cada participante, por isso é efetivamente apagado (para esse usuário) quando a janela é fechada.