X:/bate-papo é um aplicativo da web que usa HTML, CSS e JavaScript no front-end e Node.js no back-end. Ele permite que os usuários se comuniquem de maneira segura (embora eu seja novo no Node.js e não possa garantir a segurança).
JavaScript e armazenamento local são absolutamente obrigatórios para o aplicativo da web funcionar. O armazenamento local é usado para armazenar chaves públicas, chaves privadas, configurações e muito mais.
Se você usar o recurso "bate -papo anônimo", absolutamente nada será armazenado pelo servidor. Eu queria fazer a forma de comunicação mais segura que eu conseguia pensar e acabei optando por não armazenar registros de conversas no bate -papo anônimo. Quando você clica no botão "Chat anonymous", é redirecionado para "/anônimo", onde um ID é gerado para você, junto com uma chave pública e uma chave privada. Estes são salvos exclusivamente no seu navegador (no armazenamento local). O servidor não armazena nenhuma dessas informações. A única coisa que o servidor armazena é o ID da conversa e o tempo de criação. Isso é feito para que as conversas possam ser definidas para expirar após uma hora. Após a conclusão do carregamento, você pode enviar seu URL para quem quiser e que eles se conectem a você. Uma vez que o fazem, eles também recebem um par público/privado gerado para eles, bem como um ID. Você recebe sua chave pública e sua identificação. Quando você envia uma mensagem, você a criptografa usando a chave pública RSA-2048, que eles descriptografam do lado deles (localmente) usando sua chave privada. Como a mensagem é criptografada no lado do cliente, o servidor nunca sabe o que está sendo dito. A atualização da página exclui as mensagens para quem se refresca, pois as mensagens não são armazenadas em nenhum lugar . Devido ao fato de que nada é armazenado no servidor, isso significa que os usuários podem alterar facilmente seus IDs e tal, e é por isso que esse projeto foi feito para ser usado por pequenos grupos, e não pelo público em geral. Ter as conversas anônimas do armazenamento de servidores forneceria o benefício das conversas imutáveis pelos usuários, mas isso significaria que o servidor pode modificá -las e que os logs existiriam. Então você prefere confiar em seu amigo ou em algum servidor aleatório?
O bate -papo normal é mais parecido com o seu aplicativo de bate -papo genérico. As mensagens ainda são criptografadas no lado do cliente com o RSA-2048, e as chaves privadas dos usuários são criptografadas com AES-256-CTR, que usa o hash shA512 da senha do usuário como chave de descriptografia. A senha do usuário é armazenada usando BCRYPT com 10 rodadas de sal. Em resumo, a menos que o código do servidor seja modificado ou algo para capturar a chave privada do usuário, não há absolutamente nenhuma maneira de obter o conteúdo de uma conversa. As configurações, contatos e outros dados do usuário são armazenados no formato JSON em arquivos de texto para facilitar o acesso. Eles são armazenados em texto simples, mas seria fácil criptografá -los com a senha do usuário e os AES. Se você deseja tornar isso realidade, lembre -se, já existem funções escritas para facilitar. Você pode usar as funções "aes_encrypt (texto simples, senha)" e "aes_decrypt (criptografado, senha)" "que escrevi para criptografar/descriptoar facilmente o que quiser.
Pode haver alguns bugs ou algum comportamento inesperado, mas isso é de se esperar, este é, afinal, meu primeiro projeto Node.js. Se você tentar quebrar o aplicativo, provavelmente terá sucesso. Não há tantas verificações de validação e como eu gostaria, mas há o suficiente para proteger as contas e conversas do usuário. Peço desculpas antecipadamente se algo der errado.