É bem fácil criar um aplicativo de chat com criptografia. Você só precisa de conhecimentos na linguagem mobile em que pretende desenvolver o aplicativo e em Python.

Em Python, você cria um webserver com dois endpoints:

1. Um que irá receber a mensagem criptografada e armazená-la no banco de dados (que pode ser um simples arquivo SQLite com 3 colunas: ID, usuário e mensagem).

2. Outro que irá disponibilizar as mensagens do banco de dados para o cliente que as solicitar.

Agora vou falar sobre a parte mobile. Como só conheço Android, vou explicar como criar o cliente para Android:

Crie um projeto e, no layout da MainActivity, coloque um TextView com scroll, que será onde as mensagens serão carregadas e exibidas, e, abaixo, um EditText, onde as mensagens serão digitadas para envio.

Uma classe contendo três métodos:

O método que irá criptografar a mensagem usando AES-256, outro que irá descriptografar a mensagem, e o método que irá gerar a chave para criptografar/descriptografar as mensagens.

Outra classe contendo dois métodos:

Criptografar a mensagem no cliente usando a chave gerada e enviá-la para o webserver para ser armazenada no banco de dados, e outro método para carregar as mensagens criptografadas do banco, que serão passadas ao método junto com a chave de criptografia para descriptografá-las e exibi-las no TextView.

Outra classe que irá gerar um QR code contendo o link do servidor e a chave de criptografia, para que a pessoa com quem você deseja conversar pelo app consiga visualizar as mensagens no cliente dela.

Outra classe que dará a função de ler o QR code e armazenar as informações do link do banco e da chave na memória do app.

Uma thread com loop para carregar as mensagens do banco de dados e exibi-las no TextView.

Outra classe que irá criar um Service contendo um loop que irá verificar a última mensagem no banco de dados, e, se houver mensagem nova, notificará o usuário.

Um menu simples na action bar com um botão para abrir um AlertDialog, que terá três EditTexts:

Link do banco

Nome do usuário

Chave de criptografia/descriptografia

Para enviar a mensagem digitada no EditText, nem precisa criar um botão, apenas use o botão "Enter" do próprio teclado do Android e configure o listener dele para "Send".

E é isso! O app está 100% funcional, se quiser aviadar com mais funcionalidades, fique a disposição.

Reply to this note

Please Login to reply.

Discussion

Respect.

Estou bem desconfiado que vc não trabalha no TRE não.

Só de falar de AES256, webserver (websocket? API?) e SQLite já vi que manja dos paranauê.

Arquitetura simples e funcional.

tenho duas funções lá, e uma delas é programador

Legal, também sou um programador do Estado. É dev a quanto tempo?

Esse gato funça podendo ser programador profissional numa empresa, é programador no Estado e ainda trabalha no TRE

Inacreditável 💩 👌🏻

Bom dia!

Esse é um bom exercício para fazer.

Só dois adendos:

Trocar AES por XChacha20-Poly1305;

E ssl é de graça. Só colocar entre o cliente e servidor. 👍

De curiosidade Xchacha20-Poly1305 é utilizado, por exemplo, para encriptar a nsec.

https://github.com/nostr-protocol/nips/blob/master/49.md

""XChaCha20-Poly1305 is typically favored by cryptographers over AES and is less associated with the U.S. government. It (or it's earlier variant without the 'X') is gaining wide usage, is used in TLS and OpenSSH, and is available in most modern crypto libraries.