WebAuthn, outra proposta para um mundo sem senhas

ElevenPaths    25 septiembre, 2019

Falamos em várias ocasiões sobre o estado atual das autenticações, de como a combinação nome de usuários e senha está ficando antiquada, não só por suas fragilidades relacionadas ao momento de seleção de uma boa senha, mas também pela maneira como se armazena esses dados nos diversos sistemas. Dentre as alternativas propostas para solucionar esses problemas, o WebAuthn nos parece interessante.

Até hoje, todas as estratégias de melhoria ao esquema atual de autenticação foram patches ou “panos quentes”. Os atacantes podem exfiltrar a base de dados com hashes e recuperar senhas mediante ataques rainbow table, basta adicionar um sal à senha. As senhas escolhidas pelo usuário são fracas ou previsíveis? Criemos um conjunto de regras, maiúsculas, números, símbolos que, ao final e paradoxalmente, farão com que o usuário as esqueça e resete sua senha a cada login.

Se há uma constante na ciência e na tecnologia é que tudo muda. Mas a mudança aqui não deve ser manter o sistema e adicionar um segundo fator de segurança, ou uma solução de gestão de identidades que nada mais fazem do que “centralizar” o problema. Sabemos que o desaparecimento da combinação usuário e senha não vai acontecer no curto ou mesmo no médio prazo, as novas soluções para o problema serão adotadas somente após o conhecimento geral das falhas desse sistema que levarão à exploração de alternativas que permitam, progressivamente, nos livrar desse padrão.

Falamos do WebAuthn, iniciativa adotada por Microsoft, Mozilla, Google e Yubico, dentre outros. A ideia é simples: substituir a criação de autenticação de contas em aplicações web baseadas em senhas por um esquema focado em criptografia de chave pública e apoiado em mecanismos de autenticação já existentes nos sistemas como o Windows Hello ou o Apple Touch ID.

Essa técnica tem um efeito importante, ainda que não definitivo, em relação ao armazenamento de credenciais em servidores, já que não se armazena nenhum dado secreto do usuário em bases de dados. O que os atacantes encontrariam seria um conjunto de chaves públicas que não tem qualquer utilizada para acessar a conta alvo e muito menos utilizar esses dados para se conectar a múltiplos websites, o que resolve outro grande mal: o uso repetido de senhas para vários serviços.

Assim, quando o usuário se registra em uma aplicação web, não se solicita qualquer dado de acesso, nesse processo, de forma transparente, serão geradas duas chaves, uma pública que será armazenada na aplicação e outra privada (essa a mais importante) que permanecerá guardada no dispositivo do usuário. Essa última é que servirá para assinar tudo o que sair do dispositivo e a pública se encarregará de constatar a autenticidade no lado do servidor.

No esquema abaixo podemos ver o ciclo de registro em uma aplicação web:

Como podemos ver, o papel central do processo se reserva ao navegador (na realidade em qualquer user-agent que implemente as APIs), que incorpora a API específica de WebAuth para se comunicar com o relaying (a aplicação na qual se deseja efetuar o login) e o “autenticador” que pode ser, por exemplo, um leitor de digitais ou sistema de reconhecimento facial que vai certificar a identidade do usuário.

Após esse registro, o sistema está pronto para realizar a autenticação.

Como podemos ver no esquema, as partes do processo seguem sendo as mesmas. Se trata nesse caso de um ciclo muito similar ao de registro, só que mais simplificado, que dá resposta a um desafio gerado pela aplicação a qual queremos nos conectar e da qual já temos cadastro. O “autenticador”, por exemplo o leitor de digitais, nos pedirá para realizar o teste de identidade e responderá ao desafio. Sem o uso de qualquer senha.

Além disso, pode-se aproveitar as capacidades de pareamento dos dispositivos do usuário. Desse modo, ainda que saiamos da aplicação em um dispositivo (no celular por exemplo), podemos delegar a autenticação usando o mecanismo de autorização desse dispositivo ao acessar de outro local. O site solicitaria a autenticação, mas esse pedido seria desviado ao telefone celular do usuário, que é o dispositivo que originou a criação da conta e contém a chave privada, similar ao conceito de algumas aplicações móveis que usam como segundo fator de autenticação um “pressione aqui para autorizar acesso”.

Sem dúvida nenhuma, é uma vantagem não depender da digitação de um usuário e escolha de senha forte, que não seja compartilhada em diversos sites e que não tenha que ser lembrada (no caso de não se usar um gerenciador de senhas). Por um lado, uma credencial em texto plano pode ser roubada (com o uso de um keylogger ou por descuido do usuário), ou se pode quebra-las se são fracas ou seguem um padrão, por outro lado a forma atual (segura ou não) de armazenar essas senhas (ou seu hash) em uma base de dados segue sendo um quebra cabeças para os desenvolvedores, ainda mais quando essa base de dados acaba sendo publicada por uma invasão ou vazamento.

Com a capacidade biométrica implementada em dispositivos móveis a cada atualização, cresce o potencial de aplicação e integração desse sistema em todo tipo de aplicação, afinal estamos sempre com nossos celulares à mão. Ainda que não estejamos próximos do fim das senhas, iniciativas como o WebAuthn nos levam para um processo de autenticação mais seguro, sem deixar de ser mais cômodo.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *