Criptografia para as massas

O WhatsApp ficou mais seguro que o Telegram?

No último dia 5 de abril o WhatsApp anunciou uma atualização do aplicativo que entrega a promessa feita ano passado de fornecer comunicação criptografada para todos os seus usuários. Teria o WhatsApp virado o jogo contra aplicativos concorrentes, em especial o Telegram, no quesito segurança? Se você não tá interessado em muito detalhe e quer só um resumo da história, pode pular pro final, mas continue lendo pra entender melhor a discussão.

O WhatsApp foi comprado pelo Facebook em 2014 e anunciou parceria com a Open Whisper Systems, com o objetivo de integrar no WhatsApp o protocolo Signal, criado pelo consórcio e utilizado no aplicativo homônimo, uma versão melhorada do antigo TextSecure.

Usuários estão recebendo este aviso

A Open Whisper Systems sempre foi respeitada na comunidade hacker pelo prestígio do seu fundador, o Moxie Marlinspike, mas se tornou mundialmente conhecida por ter sido mencionada repetidas vezes por Edward Snowden nas muitas entrevistas concedidas após o escândalo do vazamento dos documentos da NSA. A preferência de Snowden tem fundamento técnico, mas antes vale uma reflexão sobre as principais propriedades de segurança para aplicativos deste tipo.

Proteção anti-bisbilhotagem

Suponhamos que você esteja preocupado com o conteúdo das mensagens que você troca, sejam elas transações comerciais, casos extra-conjugais ou planos para um protesto de rua passível de repressão política por agentes do Estado.

Essas mensagens fazem um longo caminho desde o momento em que você as escreve, até seu destino final, passando por diversas camadas diferentes de tecnologia, sob o controle (ou ao alcance) de diversas entidades diferentes: saem do aplicativo, passam pelo sistema operacional do teu smartphone, passando pelo hardware do dispositivo, conectando-se a uma rede Wi-Fi, cujo roteador se conecta a uma empresa de telecomunicações, que possivelmente se conecta a outra empresa para entregar a mensagem ao destinatário final, pelo mesmo caminho que seguiu até aqui, de maneira inversa.

Boi na linha!

No meio do caminho elas são passíveis de interceptação por diversas empresas e/ou pessoas: Facebook, Apple, Google, Samsung, TIM, Polícia Federal ou até mesmo o técnico de informática responsável pelo Wi-Fi do café de onde a mensagem foi recebida ou enviada.

Cada uma dessas camadas de tecnologia tem características próprias de proteção, com muitas dependências entre si, e quando falamos de garantir a segurança da comunicação entre duas pessoas, precisamos avaliar todas elas. Além disso, decisões tomadas pelos usuários na maneira como essas tecnologias são configuradas ou utilizadas tem grande influência no processo, e esse vai ser o foco desse artigo.

A conclusão da integração tecnológica do WhatsApp com o protocolo Signal cuida de apenas um desses elementos, a chamada criptografia em trânsito, onde as mensagens são codificadas antes de serem enviadas, de forma que não possam ser lidas no meio do caminho por terceiros. Essa criptografia em trânsito pode ser do teu celular até servidores do WhatsApp, o que permitiria à empresa ler o conteúdo das suas mensagens, antes de codificá-las novamente e encaminhá-las para seu destino final; ou ser fim-a-fim, permitindo que apenas o emissor e o destinatário tenham acesso ao seu conteúdo.

O uso de criptografia fim-a-fim neste tipo de aplicação sempre foi um desafio de usabilidade muito grande, pois os usuários precisam negociar e verificar uma chave de codificação entre si, e até então não podemos dizer que os aplicativos de mensagens tiveram exatamente êxito na solução deste problema.

A criptografia fim-a-fim é também cercada de grande polêmica envolvendo sua regulamentação, pois uma vez que o WhatsApp (ou qualquer outra empresa) deixe de ter acesso ao conteúdo das mensagens que você troca, ela também perde a capacidade de atender a requisições judiciais pedindo acesso a essa comunicação, quando as partes envolvidas estão sob investigação criminal. Por ser a maior novidade do WhatsApp e sua funcionalidade mais controversa, vamos abordá-la primeiro.

O protocolo Signal

A criptografia fim-a-fim, apesar de mais segura, traz alguns inconvenientes para os usuários. No Telegram, ela sempre esteve disponível através da função Chat Secreto. Provavelmente uma das razões pela qual ela não é a forma padrão de comunicação é porque o MTProto (protocolo proprietário desenvolvido pelo russo Nikolai Durov, um dos criadores do aplicativo) exige que o destinatário da mensagem esteja online para que uma sessão possa ser estabelecida, antes mesmo que a primeira mensagem possa ser enviada. Se a pessoa estiver offline num vôo de 14 horas, haja paciência. Por isso a forma de comunicação padrão do Telegram apenas codifica as mensagens até os servidores da empresa, que as codificam novamente e as encaminham ao destino final.

Essa limitação é comum em esquemas deste tipo, mas esse não é o principal problema do MTProto. Em criptografia há consenso entre especialistas há décadas que protocolos proprietários são uma péssima ideia. Seria o equivalente a alguém tentar inventar um remédio para reduzir a febre na sua própria casa ao invés de usar Paracetamol. Reza a cartilha que protocolos de criptografia precisam ser desenvolvidos de maneira aberta, amplamente acessíveis e avaliados pela comunidade acadêmica antes que alcancem maturidade suficiente para aplicações de tamanha escala.

Por essas e outras, em avaliações independentes o MTProto tem se saído muito mal. É um protocolo que não cheira bem e ninguém na comunidade especializada vai ficar surpreso se uma vulnerabilidade crítica vier a ser descoberta num futuro próximo.

Rolaram umas gafes

Já o WhatssApp em sua nova versão utiliza o protocolo Signal, baseado em tecnologias predecessoras abertas que foram desenvolvidas por grandes nomes da indústria, como o ZRTP (desenvolvido pelo Phill Zimmermann, criador do PGP, programa usado por Edward Snowden para enviar os documentos da NSA para a imprensa).

Mas a maior inovação do Signal é um mecanismo conhecido como Double Rachet, que permite criptografia fim-a-fim sem que ambas as partes estejam online para que a comunicação possa ser estabelecida. Essa tecnologia permitiu o que é provavelmente a maior adoção de tecnologia criptográfica da história, de maneira extremamente transparente para os usuários. Entre outros benefícios, permite também a criptografia fim-a-fim para grupos, funcionalidade não disponível no Telegram.

Desta forma, o WhatsApp passa a oferecer por padrão segurança superior a do Telegram no que diz respeito a comunicação em trânsito. Em ambos os casos há um porém muito importante que os usuários precisam levar em consideração, e fundamental para os mais paranóicos, que é a questão da verificação das chaves.

Você é você?

Tanto no WhatsApp quanto no Telegram, a única exigência para que uma conta possa ser criada é a confirmação, através do recebimento de uma mensagem SMS, que o usuário é o "dono" de um determinado número de telefone.

Elliot Alderson, hacker rockstar da série Mr. Robot, ganhadora do Globo de Ouro 2015

Desnecessário dizer que esta verificação é porca e ninguém precisa ser o hacker do Mr. Robot pra "sequestrar" a conta de alguém: basta instalar o aplicativo em um celular, digitar o número de uma vítima que tenha esquecido o telefone na mesa na hora do almoço (e seja suficientemente descuidada em permitir que suas mensagens possam ser lidas com o telefone travado ou, pior ainda, não use senhas para travar o dispositivo) e pronto, dependendo das configurações e da plataforma (iOS / Android) você ainda recebe um backup completo de todas as mensagens da vítima. Ela só ficará sabendo do golpe quando tentar abrir seu WhatsApp ou Telegram novamente.

Nesse quesito o Telegram é muito superior ao WhatsApp pois permite que você possa escolher nome de usuário e uma senha de proteção. Esse recurso está disponível na opção "Privacidade e Segurança" na aba "Configurações". Mas se você é usuário de WhatsApp, é fundamental que você configure uma senha de travamento para o teu celular e desative qualquer tipo de pré-visualização de mensagens SMS com o celular travado.

Esse cuidados garantem apenas que será mais difícil alguém sequestrar a sua conta. Resta ainda um risco: que alguém tenha sequestrado a conta de uma pessoa com a qual você está conversando. Tanto o Telegram quanto o WhatsApp permitem que as chaves de codificação fim-a-fim possam ser verificadas através de algum outro canal, pessoalmente ou por telefone por exemplo, a chamada verificação out of band. Fazendo isso, caso o outro lado da conversa seja vítima de um ataque deste tipo, você será notificado que ocorreu uma mudança de chaves e duvidará da segurança de tudo que é transmitido a partir dali.

Existem apenas dois tipos de situações legítimas onde as chaves podem ser alteradas: quando o usuário troca de telefone e "move" o seu número de para outro aparelho, ou quando o programa é reinstalado. As verificações no WhatsApp são feitas entrando nos dados de contato, selecionando "Criptografia", e escaneando o código do destinatário, caso você esteja pessoalmente com ele, ou confirmando uma sequencia de números através do telefone (ambos os usuários terão o mesmo fingerprint). No Telegram você precisa primeiro entrar no Chat Secreto com o destinatário em questão, abrir as informações de contato e escolher "Chave Criptográfica", que pode ser verificada visualmente através de um QR Code ou confirmando uma sequencia alfanumérica (cada usuário tem um fingerprint diferente).

Dito isso, é importante lembrar que a criptografia fim-a-fim pode ter alguns inconvenientes para os usuários.

Quantos fins mesmo?

Existe uma razão adicional pela qual o Telegram não oferece criptografia fim-a-fim por padrão: ela é uma inconveniência para a sua arquitetura multiplataforma. Muitos usuários do Telegram adoram o fato que tem o aplicativo instalado em um laptop, tablet e smartphone, e todas as conversas ficam sincronizadas entre ambos. Neste cenário, um dos "fins" da comunicação na realidade são três. Por isso, quando você inicia o Chat Secreto a partir do tablet suas conversas permanecem lá (e apenas lá, sem sincronismo).

Já o WhatsApp não permite que o aplicativo funcione em mais de um dispositivo ao mesmo tempo. Por isso a adoção de criptografia fim-a-fim, na prática, não mudou muita coisa para seus usuários. Mas há um porém bem grande que você precisa avaliar com atenção, chamado WhatsApp Web.

O WhatsApp Web permite aos usuários acessarem suas mensagens a partir de um navegador, desde que seu smartphone esteja conectado a Internet. Essa comunicação não possui o mesmo nível de segurança oferecido pela criptografia fim-a-fim. Na verdade, algumas falhas bem críticas já foram encontradas na sua implementação, uma delas permitia inclusive que alguém mal intencionado conseguisse acessar as fotos trocadas pelo aplicativo (ai meus nudes!). O ataque foi demonstrado pelo pesquisador pernambucano Leocádio Tiné no Roadsec São Paulo 2015, a maior conferência hacker da América Latina. Ainda não temos informações se o problema foi corrigido nesta nova versão.

Linux bro, e o código aberto?

Ungido pelas hostes open sourciais?

Telegram e WhatsApp são diferentes em outro ponto bastante importante, que é o acesso ao código fonte. Todos os aplicativos do Telegram tem código fonte aberto, permitindo que qualquer pessoa possa analisar o que ele faz, em busca de problemas de segurança ou funcionalidades secretas que permitiriam monitoramento não autorizado. Embora haja uma promessa de tornar público também o código usado nos servidores da empresa, essa porção da arquitetura permanece fechada.

Já o WhatsApp é um aplicativo de código fechado, dificultando tremendamente essa análise, o que para alguns seria uma grande desvantagem em termos de segurança.

Embora código aberto seja uma característica muito importante, software seguro é produzido a partir de uma mentalidade de segurança, independente do código ser aberto ou não. Embora o Telegram leve vantagem neste quesito, os problemas do MTProto são um ponto de atenção atualmente muito mais sério que o acesso ao código fonte, de forma que considero esta questão secundária no momento.

Já os fundamentalistas do código aberto devem evitar ambos e partir pro Signal, aplicativo homônimo ao protocolo que é o queridinho dos ativistas de privacidade por ter 100% do seu código disponível para análise, entre outras coisas.

Meu namorado sabe a senha do meu celular!

Burlar impressão digital é fácil, pai!

O Telegram tem uma funcionalidade exclusiva e importante para pessoas paranóicas ou que possuam maridos psicóticos, que é a possibilidade de você definir uma senha específica para acesso ao aplicativo. Se você esquecer o celular destravado, ou alguém usar tua impressão digital com você dormindo pra ter acesso ao seu aparelho, na hora que a pessoa abrir o Telegram, outra senha será solicitada.

Para usuários avançados, o Telegram oferece ainda coisas como auto-destruição de mensagens lidas e avisos quando alguém dá um print na tela, ambas disponíveis apenas no Chat Seguro. Mas lembre-se que qualquer um pode bater uma foto da tela do teu celular, limitando a efetividade destes recursos.

Usuários de grupos também gostam bastante do fato que no Telegram seu número de celular não fica disponível para todos os participantes (embora isso não impeça ninguém de te enviar uma mensagem privada, o que é menos pior que receber a ligação de algum doido de madrugada). No Telegram os grupos também tem uma série de recursos como hashtags, menções, GIFs animados, anexos gigantescos e a possibilidade de ter grupos de até 1000 usuários.

Fora isso, é importante lembrar que as mensagens armazenadas no teu celular encontram-se decodificadas, ou caso sejam armazenadas de maneira codificada, as chaves de decodificação também estão salvas no aparelho. Esse é o pano de fundo do grande dilema Apple X FBI: acesso ao aparelho em si.

As últimas versões de iPhone (rodando as últimas versões de iOS) são o que usuários convencionais tem hoje de mais seguro disponível nas prateleiras. A nova versão do WhatsApp faz uso de todos esses recursos, codificando suas mensagens armazenadas no aparelho com a tua senha de travamento. Quando você liga o aparelho e digita a senha pela primeira vez, ela fica armazenada temporariamente dentro do chip do leitor de impressões digitais, para que você não precise digitá-la novamente toda vez que pegar o telefone.

Um teste interessante é desligar teu iPhone, ligá-lo novamente (sem digitar a senha de travamento) e pedir para algum amigo te enviar uma mensagem via WhatsApp. Você perceberá que não receberá notificação alguma, e que seu amigo também não receberá o aviso de entrega. Isso acontece porque, até o momento em que essa senha é digitada, nem o aplicativo do WhatsApp rodando localmente no seu iPhone tem acesso às mensagens (e às chaves de codificação) armazenadas no teu celular.

Há também um ponto cujo funcionamento não está claro, que é a possibilidade de você fazer backup das tuas conversas para a nuvem. Ainda não há detalhes técnicos informando se essa cópia é feita com as mensagens codificadas ou não, onde ficariam as chaves de decodificação e, caso o backup seja codificado, como os usuários recuperariam essas mensagens, já que as chaves precisariam estar armazenadas em algum outro lugar. Quem está muito preocupado com o tema deve desabilitar esse recurso até que detalhes técnicos adicionais sejam divulgados.

Resume aí

A integração do protocolo Signal ao WhatsApp é a maior adoção em massa de tecnologia criptográfica já feita, levando codificação fim-a-fim de última geração a milhões de usuários de forma transparente, sem que eles precisem fazer muita coisa para desfrutar dessa proteção.

Embora o Telegram tenha o código fonte dos aplicativos aberto, ele não disponibiliza codificação fim-a-fim por padrão (apenas na função Chat Secreto). Além disso, o protocolo MTProto, responsável pela segurança da comunicação, há tempos levanta suspeitas na comunidade especializada, embora nenhum ataque viável tenha sido provado até agora para mensagens em trânsito.

Se você gosta da arquitetura multiplataforma do Telegram, a criptografia do aplicativo atualmente ainda é melhor que qualquer outra alternativa que envie informações sem codificação (como e-mail por exemplo). E claro, o Telegram tem aqueles Stickers e Bots que o povo ama de paixão ;-) Se você é um usuário avançado (e paranoico), o Telegram tem funcionalidades adicionais importantes, como autenticação dupla e senha de proteção para abertura do aplicativo, além de auto-destruição de mensagens e avisos quando alguém tira um print da tela, disponíveis na função Chat Secreto, que oferece criptografia fim-a-fim há tempos.

Mas se você quer o que há de melhor em segurança sem muita complicação, o WhatsApp com um iPhone de última geração é o que há de melhor disponível para usuários convencionais. Só não esqueça de configurar uma senha de travamento difícil de adivinhar e desativar a pré-visualização de SMSs do teu telefone (dã)!


Esse artigo contou com a revisão técnica do professor Diego F. Aranha, "Corvolino", Luciano Viana e Caio “g3ol4d0” Lüders.