Aumentar a fasquia da segurança com Argon2.

O Argon2 é a função de hashing mais segura para proteger palavras-passe e chaves de encriptação.

2023-08-23
Estamos felizes em informar que atualizamos a função de hashing em Tutanota para Argon2 - o algoritmo mais seguro. Este é o primeiro passo para nos tornarmos um provedor de e-mail seguro pós-quântico, pois esta função de hashing pode gerar chaves de criptografia muito maiores usadas para proteger seus e-mails, calendários e contatos do Tutanota.

Como sabem, estamos a planear tornar-nos no primeiro fornecedor de e-mail e nuvem seguro pós-quântico, e estamos muito felizes por anunciar que alcançámos o primeiro marco neste projeto!

Com esta atualização, sua senha - que é usada para gerar as chaves de criptografia que criptografam todos os seus dados em Tutanota - não será mais protegida com bcrypt, mas com Argon2: um algoritmo novo e avançado que levará a uma segurança ainda melhor.

Por que estamos a mudar para Argon2?

Quando Tutanota surgiu, bcrypt era a melhor maneira de transformar uma senha em uma chave criptográfica. Ele transforma sua senha em 192 bits de aparência aleatória que podemos usar para fins criptográficos. Isto é muito mais entropia do que as palavras-passe da maioria das pessoas alguma vez terão, por isso é certamente suficiente, certo?

Bem, como parte de nos tornarmos seguros em termos quânticos, queremos mudar todas as nossas chaves AES para 256 bits, porque as chaves de 128 bits deixarão de ser seguras assim que um computador quântico capaz de executar o algoritmo de Grover passar a existir. Mas, os matematicamente inclinados entre vós notarão que 256 é maior que 192.

** O que podemos fazer, então?

Podemos esticar esses 192 bits fazendo um hashing com SHA-256, por exemplo, e isso seria ótimo na maioria dos casos.

Mas porquê fazer isso se podemos fazer melhor?

Entra o Argon2

O Argon2 foi o vencedor do concurso de hashing de palavras-passe - e por boas razões. Este algoritmo é atualmente recomendado pela maioria das directrizes modernas, incluindo a Fundação OWASP.

O Argon2 traz uma série de melhorias em relação ao bcrypt, como a resistência à memória e a resistência a canais laterais.

O Argon2 pode ser usado em todos os clientes?

Uma vez definido o algoritmo que queríamos utilizar, ficámos com o problema de como utilizá-lo em todas as plataformas suportadas: Android, iOS, clientes desktop e web. O principal problema é que não existe uma implementação em JavaScript, ou pelo menos nenhuma que considerássemos utilizar. Há, no entanto, uma série de ligações JavaScript para a implementação C de referência, compilada para WebAssembly.

O WebAssembly é uma tecnologia que permite que o código escrito em praticamente qualquer linguagem de programação seja executado num navegador da Web.

Foi o que decidimos usar também, mas optámos por escrever a nossa própria cola mínima para obter os melhores tempos de carregamento com o código mais limpo.

Porque é que estamos a utilizar o WebAssembly?

O WebAssembly é suportado por todos os principais navegadores há muito tempo. É por isso que optamos por essa solução, pois ela trouxe os melhores resultados para todos os usuários do Tutanota em termos de segurança e velocidade.

Um pequeno contratempo é que, embora o WebAssembly seja suportado por todos os principais navegadores, ele ainda não está disponível em algumas situações, por exemplo, no Modo de Bloqueio no iOS.

Considerámos evitar completamente este requisito compilando o código C para JavaScript puro (asm.js), mas isso tornaria a aplicação demasiado lenta para ser prática.

No entanto, vamos utilizar implementações nativas para as aplicações móveis, o que nos proporciona um melhor desempenho e elimina a necessidade desses clientes.

Para que todos possam utilizar a nossa nova e mais segura proteção por palavra-passe com o Argon2, estamos a informar as pessoas em todos os ambientes que possam ter problemas com o WebAssembly de que vão precisar desta solução para melhorar o seu nível de segurança.

O que é que os outros fornecedores estão a fazer?

Ao contrário de fornecedores como o Google ou o Outlook, não utilizamos a sua palavra-passe apenas para autenticação, mas também para gerar a chave que desbloqueia todos os seus dados encriptados, pelo que precisamos de uma função de derivação de chave baseada na palavra-passe, em vez de uma função de hashing da palavra-passe ou de um protocolo de autenticação baseado na palavra-passe.

Para este requisito - como explicado acima - Argon2 está muito à frente de bcrypt e tornará os seus dados encriptados ainda mais seguros.

Até à data, nenhum dos nossos concorrentes utiliza o Argon2, pelo que, com este passo de atualização para o Argon2, estamos a provar mais uma vez que somos o fornecedor de correio eletrónico mais seguro.

O que é que tem de fazer?

A maioria dos utilizadores não terá de fazer nada; simplesmente beneficiarão do aumento da segurança quando esta for implementada.

Algumas pessoas que utilizam sistemas que têm um problema com o WebAssembly poderão ver um aviso.

Se estiveres a receber este aviso no navegador Tor, podes:

  • Mudar para o nível de segurança Padrão no navegador Tor, ou
  • Iniciar outro navegador, usando a instância Tor em execução como um proxy.

Se você está no Modo de Bloqueio no iOS, nós recomendamos fortemente usar o aplicativo Tutanota, não o navegador. Se você usar o navegador no Modo de Bloqueio do iOS, você precisará adicionar uma exceção para o cliente web do Tutanota.

Se você tiver problemas no Android, atualize seu WebView (que só é necessário ao usar o navegador no Android).

Certifique-se de usar um dos navegadores suportados ou o cliente desktop do Tutanota.

Estamos felizes por podermos aumentar o seu nível de segurança ao mudar de bcrypt para Argon2!