O backdoor do WhatsApp? Na verdade, trata-se de uma compensação de segurança

Logo do WhatsApp contra um fundo verde.

Logo da EFF.A Electronic Frontier Foundation é uma organização norte-americana sem fins lucrativos que defende a liberdade e os direitos civis no mundo digital. O Manual do Usuário traduz conteúdo selecionado do blog da fundação — matérias pertinentes sobre temas importantes.

Por Erica Portnoy e Joseph Bonneau


O jornal britânico The Guardian publicou uma matéria sensacionalista na última sexta-feira alegando a descoberta de um backdoor no WhatsApp que permitiria a agências de inteligência bisbilhotar mensagens criptografadas. O Gizmodo disse, em seguida, que não havia backdoor algum, mas sim um comportamento intencional ali. O que aconteceu, afinal?

O dilema da mensagem perdida

O problema em questão é a resposta do WhatsApp ao dilema sobre o que aplicativos devem fazer quando o número do celular de alguém muda (ou esse alguém reinstala o app, ou troca de aparelho).

Imagine que Alice envie uma mensagem a Bob criptografada com a chave K1 de Bob. A mensagem de Alice é armazenada criptografada no servidor até que Bob possa se conectar e baixá-la. Esse comportamento é exigido por qualquer app que permita comunicações assíncronas (o que significa que você pode enviar uma mensagem a alguém enquanto ele está offline), coisa que quase todos os apps de mensagem populares suportam.

Infelizmente, Bob acabou de derrubar seu smartphone em um lago. Mais tarde, Bob pega um smartphone novo e reinstala o WhatsApp. Nesse aparelho novo, o app cria uma nova chave K2. Há dois comportamentos possíveis aqui:

  • Falhar pela segurança. O servidor pode apagar a mensagem pendente, pois ela foi criptografada com a K1 que já não existe mais. Bob nunca verá a mensagem. Se Alice ativou as notificações para trocas de chaves, ela será alertada de que Bob está usando uma nova chave. Ela saberá que a mensagem não foi entregue e terá a opção de reenviá-la. É assim que o Signal faz.
  • Proceder. O servidor dirá ao smartphone de Alice que Bob tem uma nova chave K2 e para que ele criptografe novamente a mensagem para a K2. O smartphone de Alice fará isso e Bob receberá a mensagem. Se Alice ativou as notificações para trocas de chaves, ela será avisada de que a chave de Bob mudou. É assim que o WhatsApp faz.

Repare que o segundo comportamento torna o serviço mais confiável: é uma maneira a menos de falha na entrega de uma mensagem.

O problema aqui é que o segundo comportamento abre uma brecha de segurança: Bob não precisa ter perdido de fato seu smartphone para que o servidor aja como se ele o tivesse. Agindo maliciosamente, o servidor poderia fingir que a nova chave de Bob é uma chave que o servidor controla. Então, ele informará Alice sobre essa nova chave, mas não dará a ela a chance de interferir e impedir que a mensagem seja enviada. Seu smartphone reenviará a mensagem automaticamente e o servidor agora é capaz de lê-la. Alice será notificada e poderá, depois, tentar bater a nova chave com a de Bob, mas aí já será tarde demais.

De outra forma, o primeiro comportamento, o de falha, evita esse vetor de ataque em potencial. No que tange à confiabilidade, porém, ele também introduz um cenário em que as mensagens poderiam falhar na hora de serem entregues.

O que fazer se você usa o WhatsApp

Tela para ativar notificações de segurança no WhatsApp.Se você é um usuário de alto risco a quem a segurança pode ser comprometida por uma simples mensagem revelada, talvez seja uma boa considerar aplicativos alternativos. Como mencionamos em nossos guias de Autodefesa contra Vigilância para Android e iOS, atualmente não recomendamos o WhatsApp para comunicações seguras.

Mas se a sua modelagem de ameaças é capaz de tolerar ser notificado após um potencial incidente de segurança, o WhatsApp cumpre um papel louvável de manter suas comunicações seguras. E graças à enorme base de usuários do WhatsApp, usá-lo não é uma evidência imediata de atividades secretas.

Se você quiser ativar as notificações de trocas de chaves do WhatsApp, no app, entre em Configurações (ou Ajustes), depois Conta, Segurança e ative o item “Exibir Notificações de Segurança”.

Em defesa das compensações de segurança

A diferença entre WhatsApp e Signal aqui é um caso de configurações padrões sensatas. O Signal foi projetado para ser, antes de qualquer outra coisa, uma ferramenta de mensagens segura. Os usuários do Signal estão dispostos a tolerar uma menor confiabilidade por mais segurança. Como qualquer um que tenha usado o Signal por algum tempo pode atestar, esses tipos de situações extremas se somam e, no geral, o app parece ser menos confiável.

O WhatsApp, por outro lado, era uma ferramenta massivamente popular antes de receber a criptografia de ponta-a-ponta. O objetivo era adicionar criptografia de uma maneira que os usuários do WhatsApp sequer soubessem que ela estivesse lá (e a maioria não sabe mesmo). Se a criptografia puder fazer com que as mensagens não sejam entregues de novas maneiras, o usuário comum do WhatsApp verá isso como uma desvantagem. O WhatsApp não está concorrendo com o Signal no mercado, mas ele concorre com muitos apps que não trazem criptografia de ponta-a-ponta como padrão e não têm que lidar com essas compensações, como o Hangouts, Allo ou Facebook Messenger, e nós aplaudimos o WhatsApp por oferecer criptografia de ponta-a-ponta a todos, estejam eles cientes ou não.

De qualquer forma, isso é sem dúvida uma vulnerabilidade no WhatsApp e eles deveriam dar aos usuários a chance de optar por configurações mais restritivas, similares às padrões do Signal.

Mas é impreciso, ao ponto de ser irresponsável, chamar esse comportamento de um backdoor.

Essa é uma clássica compensação de segurança. Todo sistema de comunicação precisa fazer compensações do tipo. Segurança perfeita não faz bem algum se a ferramenta resultante é tão difícil que ninguém a usa. Caso famoso, o PGP fez poucas compensações desde o início e ele parece seguir o caminho do Dodo (o da extinção) como resultado.

Idealmente, os usuários devem ter tanto controle quanto possível. Mas o WhatsApp precisa ter configurações padrões e a escolha deles é defensável.

Detectando o mau comportamento mais facilmente com a transparência de chave

Logo do projeto Key Transparency, do Google.Coincidentemente, o Google acabou de anunciar o lançamento do seu novo projeto Key Transparency (transparência de chave). Esse projeto endereça uma grande compensação de segurança: dado que muitos usuários não verificam as chaves criptográficas dos seus contatos nem evitam ataques antes que eles aconteçam, o projeto oferece uma maneira de criar garantias nos protocolos de mensagens de que o mau comportamento de um servidor será permanente e publicamente visível após o ocorrido. Para uma aplicação de mensagens, isso significa que você pode auditar um relatório e ver exatamente quais chaves o serviço provedor publicou para a sua conta e quando.

Trata-se de um conceito muito poderoso e que oferece verificações adicionais à situação acima: Bob e qualquer um com as permissões devidas saberão se a conta dele sofreu abusos para vazar mensagens que Alice enviou a ele, sem ter que verificar as chaves criptográficas.

É importante notar que a transparência não evita que o servidor seja atacado: ela apenas garante que os ataques serão visíveis após o ocorrido a mais pessoas, mais prontamente. Para alguns usuários, isso não é suficiente e eles devem continuar a demandar configurações mais restritivas para prevenir ataques ao custo de tornar a ferramenta mais difícil de usar. Mas a transparência pode ser uma grande vitória na forma de um remédio contra a vigilância em massa de usuários que não aceitarão qualquer redução na experiência de usuário ou confiabilidade em prol de segurança.

Adicionar a transparência de chave não impedirá que um usuário seja atacado, mas flagrará um servidor que conduzir um ataque.

Ainda temos um longo caminho na construção do aplicativo de mensagens perfeitamente usável e seguro e o WhatsApp, como todos apps do tipo, precisa fazer compensações. Na medida em que a comunidade de apps de mensagens seguros continua a trabalhar em direção a essa solução ideal, não deveríamos descartar os atuais tachando-os de backdoors e inseguros em suas imperfeitas, porém sinceras tentativas.


Publicado originalmente no Deeplinks Blog da EFF em 14/01/2017.

Tradução por Rodrigo Ghedin.

O Manual do Usuário é um blog independente que confia na generosidade dos leitores que podem colaborar para manter-se no ar. Saiba mais →

Acompanhe

  • Telegram
  • Twitter
  • Newsletter
  • Feed RSS

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

10 comentários

  1. Então, se eu ativar as notificações de trocas de chaves do WhatsApp, serei notificado sempre que meus contatos comprarem um celular novo? : )

    1. Sim! Só que o sistema não diferencia o motivo da troca de chave, só diz que ela mudou. Aí pode ser por causa de um smartphone novo ou apenas que pessoa reinstalou o WhatsApp.

  2. Então, se eu ativar as notificações de trocas de chaves do WhatsApp, serei notificado sempre que meus contatos comprarem um celular novo? : )

  3. Um ponto importante e que foi bem ressaltado é que segurança e usabilidade podem ser complexas de andarem juntas.

    Pra maioria dos usuários acredito eu um sistema bom é aquele que ele (usuário) consegue utilizar.

    Na minha realidade convivo entre dois mundos: tecnologia com pessoas ligadas e questões de privacidade e “usuários comuns” que querem que tudo apenas funcione. E cada um tem as suas razões e são plenamente válidas.
    Apenas pra exemplificar: minha mãe quer apenas usar o whatsapp pra falar comigo de forma ágil e não quer saber se há ou não privacidade envolvida nisso, pra ela é apenas um meio de falar comigo.
    Pra mim como forma pessoal já tenho preocupações sobre como fica a privacidade e pelo menos das pessoas próximas tenho a preocupação de orientar sobre boas práticas, afinal a segurança da privacidade delas impacta diretamente na minha.

    São preocupações diferentes entre esses tipos de usuários.
    Acredito eu que deve haver concessões e um meio termo que permita a usabilidade sobrepor em partes a segurança até que se seja aperfeiçoado a forma de prover a comunicação para que a mesma se torne mais segura

  4. Eu ainda acho que o compromisso do WhatsApp é errado. Vou colar minha
    opinião que eu postei no HN aqui[1], desculpe o inglês macarrônico. Dei
    uma editada leve para postar aqui, e tem uma discussão curta no HN seguindo meu post:

    While people discuss about a possible state-actor stronghanding WhatsApp and the semantics of “backdoor”, the “design feature” of not showing the key changes are making real victims, at least in Brasil:

    The attacker first duplicates the mobile phone number of the first victim, probably by social
    engineering their phone company. This part may look difficult to do, but it is not hard if you realize you do not need to target anyone special – everyone uses WhatsApp, so any number gives a high probability of success.

    After getting the first victim number, the attacker installs WhatsApp, which gladly verifies the user via SMS – WA has no login and no password, so anyone receiving the SMS can impersonate anyone
    else.

    As Whatsapp does not send any alert of key change by default, the attacker is free to impersonate to to anyone person – in this case, he simply asks for some borrowed money to be transferred to a bank account, which will be paid soon. The recipient has no reason to distrust the message – it is being sent by his friend in the same chat window as they always talked to, even the logs are there. There is no message to warn about the potential issue, by design!

    This is no hypothesis – this is actually happening for some time, now.[2] This design feature surely has some loyal users.

    [1]https://news.ycombinator.com/item?id=13418888

    [2]http://www.correiobraziliense.com.br/app/noticia/cidades/201…

    1. Só acho que você se equivocou em um ponto: por padrão o WhatsApp mostra sim as mudanças de chave, quando ocorrem.

      1. A resposta oficial do WhatsApp diz que isso não está configurado por padrão. No meu está, mas eu também sei que, quando o WA liberou a criptografia pela primeira vez, eu fui e habilitei as opções de segurança.

      2. Não é. Ele só avisou todo mundo quando implementou a criptografia de ponta-a-ponta. Mudanças depois disso não são notificadas se você não marcar a opção, conforme especificado no texto.

        1. Ghedin, aqui no Android eu nunca havia observado essa opção e olhando a mesma aqui ela já esta habilitada por padrão.

          E eu sempre notei que um contato vez ou outra aparece um aviso “mudança na chave de criptografia”.

          Talvez entre plataformas possa haver diferenças

Do NOT follow this link or you will be banned from the site!