Executando verificação de segurança...
18

Pitch: Minha contribuição para esse mundo: Segurança ponta a ponta de verdade (Pelo menos em trocas de mensagem de texto)

Porquê estou publicando isso?

Olá meu nome é Augusto e atualmente vejo pouca divulgação científica entre os devs aqui na minha região e também muitos trabalhos de conclusão de curso sendo feito com temas irrelevantes somente para a obtenção do diploma, então venho apresentar um pouco do meu TCC para vocês para que assim, talvez, eu possa estar ajudando vocês e vocês me ajudando…

O problema 🧑‍💻

A segurança e privacidade do usuário na internet é um tópico cada vez mais importante nos dias atuais, tendo até tópicos e issues sendo criado nesse projeto…

Justamente pelo grande aumento do uso de computadores com internet e muitos serviços sendo disponibilizados online, como exemplo os comunicadores instantâneos: whatsapp, telegram, messenger…

Porém com o aumento do uso de internet também tem aumentado o número de computadores infectados por malwares, tendo um estudo da Kingsoft de 2016 mostrando que em média 2-5 milhões de computadores são infectados por dia.

Atualmente sabemos que esses comunicadores instantâneos utilizam criptografia entre um dispositivo e outro, porém não podem garantir que o dispositivo que recebeu ou enviou a mensagem já não esteja infectado por um malware…

Podendo esse malware saber a mensagem que o usuário vai enviar antes mesmo dele pressionar ENTER com a utilização de um keylogger ou até mesmo gravando a tela do usuário com “screenlogger”.

A Proposta 🗿🍷👉 ⌨️ 👉 🤖 👉 💻

Minha proposta busca uma solução para o problema citado acima, podemos com a utilização de um arduino conectado ao computador criar um middleware entre um teclado externo e o computador para realizar a criptografia de mensagens que precisam realmente ser seguras e privadas...

O arduino receberia a entrada de dados do usuário através do teclado e realizaria a criptografia da mensagem antes mesmo que ela fosse realmente digitada no computador, podendo ele visualizar e alterar a mensagem original através de um display também conectado ao arduino.

Mas e a outra ponta?

A outra ponta que receberia essa mensagem também teria que ter um mesmo dispositivo, porém no caso de quem recebe a mensagem existiria um programa em que você cola a mensagem recebida e envia para o arduino para que o mesmo realize a descriptografia da mensagem e mostre a mensagem original também através do display.

Desenvolvimento da solução

Versão 1

Já existe uma versão 1 funcional do projeto que está usando:

  • Arduino UNO,
  • Display lcd IC2
  • Cabo otg
  • Criptografia rot47
  • Linguagem Python e Arduino

Essa versão do projeto era a minha POC e usei somente esses componentes e a linguagem Python e Arduino e ela "resolveu" o problema com dos keylogger e screenlogger.

Que você pode acessar e conferir aqui: Repositório no Gitub, Não esquece de me seguir e deixar a star no repo para apoiar

Versão 2

Atualmente estou desenvolvendo a versão 2 e de apresentação para o meu tcc utilizando:

  • Arduino UNO
  • USB host shield
  • Display lcd IC2
  • Criptografia AES
  • linguagem Python e Arduino

Utilizando o USB host shield quero trazer mais praticidade e com a AES uma criptografia de uso real (Mesmo sabendo de sua defasagem atual)

Que você pode também pode acessar e conferir aqui: Repositório no Gitub, novamente não esquece de me seguir e deixar a star no repo para apoiar

Demostração

Já de antemão desculpem a qualidade mas segue um vídeo demonstração da POC no youtube
Vídeo demonstração no youtube

Carregando publicação patrocinada...
2

achei a ideia muito boa, mais uma coisa que tenho percebido é que, infelizmente, se nao for transparente pro usuario utilizar, ele não utiliza, ou seja, se precisar de algum esforço e não gerar um retorno positivo ele simplesmente não usa.
Claro que segurança é um otimo retorno, mais só da valor quem realmente foca nisso.

1

Bom dia Tomion, muito obrigado pelo comentário, e você teria alguma ideia de como eu poderia agregar valor ao projeto para que os usuários "casuais" também queiram usar?

1

Que show! eu não havia aberto o repositório do git porquê só estudo programação há 2 meses e não compreendo a estrutura dos projetos ainda, aliás e nem sei operar o git também :3.

Mas eu achei sensacional o seu projeto e seus possiveis usos.

1

mantendo a criptografia antes do computador eu acho difícil, acabaria divergindo muito do seu projeto inicial, claro que isso nao é um problema (meu Tcc foi na area de ia pra compiladores e a conclusao acabou sendo que o algoritmo que usei não era bom pro problema).
o que acaba sendo mais viavel é oq o whatsapp faz, ele gera uma chave exclusiva pra cada conversa, e mantem o envio das mensagens criptografadas.
Talvez voce consiga fazer algo legal no mobile, visto que vc conseguiria criar um teclado virtual e inserir a criptografia nos eventos de teclado, da pra explorar a brincadeira

2

Me fez lembrar a maquina enigma que já existia desde a década 20, mas se popularizou mesmo com uso pelo alemães a partir da década de 30... A ideia de criptografia antes mesmo da transmissão e possuir as chaves também fora do computador é uma receita perfeita. Meus parabéns pelo seu trabalho, criatividade e perspicácia.

1

Bom dia Diletante, muito obrigado pelo comentário e sim tem inspiração no conceito da enigma machine, sendo que até o nome do repo no github é ModernEnigmaMachine kkkkk

1

Parabéns AugustoSavi, muito legal!

Eu não conheço os detalhes sobre a criptografia AES, porém, imagino que ao criptografar uma mensagem o resultado é um array de bytes que representa a mensagem codificada. Então, se você apenas tentar mostrar esse linguição de bytes como texto, vai ter caracteres "quebrados", já que pode haver bytes que não são associados a caracteres ASCII.

Como é tratado esse problema? A mensagem codificada é convertida para texto de alguma forma?

1

Boa noite, man não sei se entendi muito bem sua pergunta...
Mas digamos que eu queira enviar enviar uma mensagem que precisa ser secreta pelo whatsapp, com o software no pc eu ativo o modo criptografia do Arduino e a mensagem digitada no teclado aparece antes no display do Arduino(sem ser enviada para o pc), quando eu clico enter a mensagem é criptografada com uma chave e enviada via serial para o pc, com um programa em python eu recebo essa string e digito ela(criptografada) e envio para o outra pessoa...

A pessoa que recebeu essa mensagem criptografa vai ter que ter o mesmo software e dispositivo, com isso ela ativa o modo descriptografia, copia e envia a mensagem recebida para o arduino, com isso o Arduino vai descriptografar a mensagem e mostrar no lcd descriptografada.

Alguns caracteres especias podem ser perdidos sim nesse processo do aes ou ate não ser suportado pelo lcd 16x2 (emojis e afins), atualmente não existe uma trativa para isso...(quem sabe em trabalhos futuros...)

Mas pensando por cima teria que de usar um hardware mais potente com um lcd de alta resolução(Oled, tft)

1

Obrigado pela resposta AugustoSavi, realmente acho que não ficou claro minha pergunta, peço perdão. Mas vou te dar uma sugestão que resolve o problema que eu citei e o problema que você citou:

Alguns caracteres especias podem ser perdidos sim nesse processo do aes ou ate não ser suportado pelo lcd 16x2

Sugiro o seguinte, ao criptografar a mensagem, você pega os bytes do resultado e codifica eles usando base64, dessa forma tu sempre vai obter um texto ASCII válido. Logo, ao invés de mostrar no display a mensagem criptografada você mostra a mensagem criptografada e codificada em base64. Dessa forma, não corre risco de ter caracteres inválidos e ter o problema que eu citei.

Por fim, no receptor da mensagem, vai ter que decodificar usando base64 antes de descriptografar. O que acha?

1
1

Parabéns pelo projeto, um ótimo tema e muito importante!

Saudade de ler sobre Arduino, fiz meu curso de técnico em Automação Industrial e mexi muitos anos nele, inclusive tenho um kit completo, mas está apenas guardado. Hoje em dia fico mais no mundo do software do que no do hardware.

1
1
1

Parabéns pela ideia!! Tem um nicho que você pode pegar, que é o de quem ainda utiliza o FAX (sim, ele existe). Consultórios de Advocacia, Clínicas Médicas, Serviços Militares e até mesmo o Governo, ainda utiliza a velha tecnologia, para o envio seguro de documentos assinados.

Isso porque o FAX (ou fac-símile) utiliza a transmissão de imagem e não de dados, pela linha telefônica, o que a faz ser mais confiável que um e-mail autenticado.

Grandes empresas que fazem a troca de documentos de alto valor (confidenciais), também utilizam a tecnologia. Ex: FIFA (e tem uma questão, caso alguma empresa atenda a FIFA e não tenha FAX, ela tem que enviar o documento por Correios com aviso e mão própria).

Então, um equipamento como o seu, que "intercepta" as informações digitadas no teclado e cria um dado criptografado, já ajuda bastante na troca de textos.

É interessante pensar em algo para assegurar o envio de imagem, talvez entre um scanner e um PC, para criptografar o documento escaneado.

Mas corra... a blockchain está aí.. rsrs

Por ser uma tecnologia inovadora, o blockchain tem ganhado espaço no cenário mundial por se mostrar como um excelente aliado na hora de guardar informações e preservar dados de empresas ou terceiros.

Mais do que apenas atuar no segmento das criptomoedas, o blockchain pode contribuir para armazenar e validar registros de diversos outros tipos, como os documentos.

Já existem empresas que utilizam o blockchain para realizar a validação de documentos, assegurando economia de tempo, redução de custos e maior segurança e confiabilidade à operação. Essas são as principais vantagens de validar documentos através dessa tecnologia.

Dá pra pensar na Blockchain ao seu favor, também...