Como tornar um aplicativo de mensagens realmente seguro semelhante ao Signal?
Publicados: 2021-10-05A privacidade e a segurança da comunicação online são temas importantes atualmente, e por um motivo. Como sabemos criar um aplicativo criptografado , gostaríamos de compartilhar nossa experiência e oferecer dicas neste artigo. Falaremos sobre o estado atual da indústria, métodos de criptografia e possíveis riscos. Para obter uma estimativa de preço, vá até o final do artigo.
O que aconteceu?
No início de 2021, o WhatsApp, o aplicativo de mensagens mais popular do mundo, lançou seus novos termos de serviço. Eles causaram um grande alvoroço, em parte devido à confusão. Depois disso, o CEO da Tesla, Elon Musk, que é um conhecido crítico do Facebook (o WhatsApp é propriedade do Facebook), sugeriu que seus 42,5 milhões de seguidores no Twitter mudassem para o Signal, um mensageiro até então não muito conhecido.
Use Sinal
- Elon Musk (@elonmusk) 7 de janeiro de 2021
Na esteira desse tweet, a Signal - cujo sistema de criptografia o próprio WhatsApp usa , aliás - viu um aumento no número de usuários. Esse aumento foi tão grande que os servidores tiveram dificuldade em lidar com isso. Os desenvolvedores do Signal conseguiram lidar com a situação, mas mostrou que a demanda por sistemas de mensagens seguros está aumentando. Agora, todo mundo quer saber como criar um aplicativo como o Signal. O que nos traz a este artigo.
O que significa ter um mensageiro instantâneo seguro?
A maioria dos aplicativos de mensagens instantâneas hoje usa criptografia de ponta a ponta. O que é? Aqui está um diagrama de uma arquitetura de aplicativo de chat como exemplo:
Simplificando, um mensageiro típico tem três partes principais interconectadas:
O dispositivo do remetente
Um servidor
O dispositivo do destinatário
Uma mensagem é enviada por um remetente a um destinatário por meio de um servidor. Sem criptografia, essa mensagem será transmitida como texto simples e, portanto, pode ser lida por qualquer pessoa com acesso a ela em qualquer ponto do caminho. Com a criptografia, a mensagem é transformada de texto simples em texto cifrado - criptografado com uma chave - para transferência e depois transformada de volta (descriptografada) no dispositivo do destinatário , com uma chave emparelhada.
A criptografia ponta a ponta significa que as chaves de criptografia são armazenadas nas extremidades, ou seja, nos dispositivos dos usuários, em vez de no servidor. Isso faz com que ninguém, exceto o remetente e o destinatário, possa ler as mensagens . Nem mesmo o provedor de serviços que possui o servidor tem acesso a eles. Para hackear essas mensagens, um hacker precisa acessar os dispositivos dos usuários, já que hackear o servidor do provedor de serviço é de pouca utilidade.
O ponto fraco da criptografia de ponta a ponta é sua suscetibilidade a um ataque chamado de man-in-the-middle (MITM) . Hackers qualificados do MITM podem hackear a chave pública armazenada em um servidor e configurar o sistema para reconhecer o hacker como um destinatário legítimo, permitindo que o hacker escute uma conversa e até mesmo participe dela no lugar do destinatário pretendido.
Para combater os ataques MITM , os desenvolvedores do Signal atualizaram ainda mais a criptografia de ponta a ponta de seu protocolo com um algoritmo Double Ratchet. Este algoritmo cria chaves de sessão, além das chaves públicas e privadas criadas quando os usuários instalam o aplicativo. As chaves de sessão são criadas para cada mensagem enviada e se autodestruem quando a sessão é concluída (ou seja, quando a mensagem é recebida), tornando impossível para um hacker descriptografar todas as mensagens se conseguir obter a chave para uma sessão.
O WhatsApp usa criptografia de ponta a ponta para todas as suas mensagens. Na verdade, ele usa o protocolo de criptografia do próprio Signal. Qual é o problema agora?
Diferentes abordagens para criptografia ponta a ponta
É verdade que o WhatsApp não pode espionar o conteúdo de suas mensagens e não pode ouvir suas chamadas no aplicativo. No entanto, a versão do protocolo de criptografia do Signal que o WhatsApp usa criptografa apenas o conteúdo das mensagens . Isso significa que o WhatsApp - e, por extensão, o Facebook e qualquer pessoa com quem eles decidam compartilhar as informações - podem ver com quem você está falando, quando e de onde. Esses metadados podem revelar informações muito pessoais sobre todos os participantes de uma conversa.
Ao mesmo tempo, o aplicativo Signal usa um protocolo atualizado que codifica metadados também, e ninguém - nem mesmo os proprietários do aplicativo - pode decodificá-los sem acesso direto aos dispositivos dos usuários .
Além disso, de acordo com a Política de Privacidade da Signal, quase nenhum metadado é armazenado em seus servidores permanentemente - apenas o tempo necessário para o recebimento de uma mensagem. Em seguida, tudo, exceto a data do último login do usuário, é excluído.
O único outro aplicativo de mensagens que faz isso é o Telegram. No entanto, no Telegram, a criptografia ponta a ponta só é aplicada no modo secreto e não a todos os chats por padrão. Mensagens gerais não são bem criptografadas no Telegram. Pelo menos o Telegram se recusa a compartilhar tais informações com qualquer pessoa, sejam eles governos ou anunciantes.
Hoje, a segurança de aplicativos de mensagens é um tópico enorme - a incapacidade ou falta de vontade de um mensageiro de compartilhar as informações dos usuários com os governos muitas vezes enfrenta limitações e proibições. O Telegram, por exemplo, foi proibido na Rússia, a terra natal de seu criador; os Emirados Árabes Unidos baniram todos os serviços VoIP não estatais. Como resposta, as pessoas em todos os lugares exigem meios de comunicação mais seguros e o mercado de aplicativos de mensagens móveis seguros está crescendo .
Então, como fazer um mensageiro seguro?
A maioria das pessoas usa pelo menos um messenger, provavelmente vários, e o conjunto básico de recursos de um aplicativo de messenger dificilmente o surpreenderá. Portanto, seremos breves nesta seção. Aqui está uma tabela de recursos para uma solução de bate-papo segura :
Recursos | Descrição |
---|---|
Onboarding | Apresente brevemente seu aplicativo; quanto mais curto, melhor, mas torne-o compreensível. |
Inscreva-se / faça login | Uma conta do messenger geralmente está vinculada a um número de telefone. |
Perfis de usuário | Um perfil armazena informações pessoais do usuário e links para recursos importantes, como contatos, configurações e perguntas frequentes. |
Definições | Permita que os usuários ajustem o messenger para sua conveniência. |
Notificações | Em um aplicativo de mensagens, é essencial ter um sistema confiável para notificações instantâneas. |
Bate-papos de texto | Um aplicativo de mensagens moderno é necessário para oferecer suporte a bate-papos individuais e bate-papos em grupo. |
Transferência de arquivo | Os usuários precisam ser capazes de trocar mensagens de texto, bem como compartilhar imagens e documentos. |
Chats / chamadas de voz | Um recurso de VoIP é tão importante hoje quanto enviar mensagens de texto. O som de qualidade requer uma conexão estável, mesmo com velocidades lentas de internet. |
Mensagens de autodestruição | Mesmo com o protocolo Signal, se alguém pegar o telefone de um usuário, poderá ver todas as mensagens anteriores, a menos que os usuários as excluam. Você pode adicionar uma opção para os usuários definirem um cronômetro para destruir mensagens e / ou arquivos de mídia. |
Sincronizar | A maioria das pessoas possui mais de um dispositivo com aplicativos de comunicação instalados. Para que os usuários possam alternar facilmente entre os dispositivos conforme desejarem, você precisará fornecer um recurso de sincronização. |
Autenticação de duas etapas | Para proteger melhor os dados dos usuários em caso de roubo de um dispositivo, ofereça autenticação em duas etapas por impressão digital, senha, código PIN ou código de verificação ou link. |
Se você deseja criar um aplicativo de mensagens ponto a ponto que se destaque da multidão, considere estes recursos:
Adesivos e GIFs. Qualquer outro mensageiro hoje integra o popular serviço GIF Giphy em sua interface para complementar os emoticons. Os adesivos se tornaram populares quando o Telegram começou a oferecê-los gratuitamente (ao contrário do Viber, por exemplo, onde apenas alguns adesivos são gratuitos).
Bate-papos secretos / privados. Quer você criptografe ou não os metadados de seus usuários, na realidade tempestuosa de hoje, pode se tornar o ponto de venda do seu aplicativo ter bate-papos que desaparecem ou bloqueáveis. Por exemplo, o Telegram oferece bate-papos secretos que desaparecem automaticamente se você sair do Telegram em seu dispositivo. Esses bate-papos não são armazenados nos servidores em nuvem do Telegram e, portanto, não podem ser copiados ou sincronizados, mesmo se você estiver conectado em mais de um dispositivo.
Bate-papo por vídeo. Em 2020, com um número esmagador de pessoas forçadas a trabalhar remotamente devido à pandemia, as ferramentas de videoconferência tiveram um grande aumento em popularidade. E muitos lamentaram a falta de chamadas de vídeo - chamadas individuais e em grupo - nos mensageiros populares existentes. Não é de forma alguma um recurso obrigatório, mas certamente será popular entre os usuários.
Como proteger um aplicativo de mensagens
O back-end é onde a mágica acontece nos mensageiros. Os especialistas de back-end são responsáveis pela segurança e confiabilidade do seu aplicativo de bate-papo, pois são eles que sabem criptografar mensagens.
Existem várias maneiras de implementar a criptografia de ponta a ponta e tornar um aplicativo de comunicação seguro . Normalmente, as mensagens criptografadas são armazenadas nos servidores de um mensageiro - os servidores em nuvem são mais seguros e, portanto, recomendados para esse fim - e as chaves de descriptografia estão disponíveis apenas nos dispositivos dos usuários para evitar uma violação de dados no caso de os servidores serem hackeados.
Também é possível deixar de armazenar mensagens em seus servidores completamente e armazená-las nos dispositivos dos usuários. Mas isso significa que seus usuários não poderão restaurar seu histórico de mensagens caso os dispositivos nos quais estão conectados sejam perdidos ou caso eles excluam o aplicativo. Sincronizar mensagens entre dispositivos também será impossível.
Para fazer um aplicativo de mensagens seguro como o Signal, você pode usar a API de mensagens criptografadas do próprio Signal . O protocolo de criptografia de código aberto do Signal é o mais popular entre os desenvolvedores que criam mensageiros, pois é constantemente revisado e auditado por pares. No momento da escrita, os seguintes mensageiros usam o protocolo do Signal para criptografar o conteúdo de suas mensagens:
- Facebook Messenger (apenas bate-papos secretos)
- Skype (apenas conversas privadas)
- Mensagens do Google para Android (SMS)
O Telegram usa seu próprio algoritmo baseado em criptografia AES simétrica de 256 bits, chamado MTProto, para bate-papos secretos. Este algoritmo é de código fechado, entretanto, pelo qual o Telegram foi amplamente criticado.
Custo para fazer um aplicativo de mensagens seguro
O custo para fazer qualquer aplicativo depende muito do tempo necessário para o desenvolvimento . No que diz respeito ao número de recursos, os mensageiros não parecem muito complexos; no entanto, o back-end sozinho para um aplicativo de mensagens bem criptografado pode levar cerca de 520 horas para ser construído .
As opções usuais de linguagem de programação para um back end de messenger são Elixir ou Erlang - Ruby on Rails não é uma boa escolha para uma grande quantidade de dados na forma de mensagens de texto, mídia e chamadas de áudio / vídeo. O WhatsApp usa Erlang, enquanto o Elixir é empregado pela Discord.
Na Mind Studios , desenvolvemos um aplicativo de mensagens com um back-end baseado em Elixir. No entanto, o próprio Elixir é baseado em Erlang com um pouco de Ruby misturado, portanto, um desenvolvedor experiente em Elixir também pode escrever código em Erlang.
Aqui está nossa opinião sobre o tempo necessário para desenvolver um aplicativo de mensagens seguro :
Análise de negócios e criação de especificações - mais de 96 horas
Design UI / UX - mais de 168 horas
Aplicativo móvel do lado do cliente iOS - mais de 450 horas para um MVP com os recursos mais essenciais
Desenvolvimento de back-end - mais de 520 horas
Teste de aplicativo iOS - cerca de 240 horas
O desenvolvimento do Android leva um pouco menos tempo do que o desenvolvimento do iOS, mas os testes demoram mais devido à maior variedade de dispositivos.
Com essa estimativa de tempo aproximada, o custo para construir um aplicativo de bate-papo realmente seguro começará em $ 51.590 e aumentará com recursos extras.
Conclusão
Mensageiros seguros são excepcionalmente importantes, e a demanda por eles é alta hoje e será maior amanhã. Mas a competição também. Nem toda empresa pode fazer aplicativos de mensagens criptografadas. Para desenvolver um aplicativo de mensagens instantâneas seguro como o Signal, você precisará de desenvolvedores com experiência neste nicho .
Você também precisará acompanhar os líderes do setor quando se trata de design. O aplicativo Signal é simples e não é famoso por sua intuitividade, mas conquista usuários que se preocupam mais com sua privacidade do que com sinos e assobios. O WhatsApp e o Telegram, por outro lado, têm uma aparência extravagante e são excepcionalmente intuitivos, além de serem seguros (embora sua segurança possa não estar no mesmo nível do Signal, ainda é impressionante). Portanto, para brilhar neste nicho, seu aplicativo personalizado precisará ser seguro e fácil de usar . Equilibrar esses requisitos não é uma questão insignificante. Mas com a equipe certa, é possível.