A web não para de mudar a W3C que é a principal organização para a padronização da Web, disponibilizou no dia 4 de março de 2019 uma nova recomendação, uma API de Autenticação da Web (também conhecida como WebAuthn).
O que é o WebAuthn?
[wp_ad_camp_3]
A API de Autenticação da Web (também conhecida como WebAuthn) é uma especificação escrita pelo W3C e pela FIDO, com a participação de grandes empresas como o Google, Mozilla, Microsoft dentre outros. A API permite que os servidores registrem e autentiquem usuários usando criptografia de chave pública ao invés de uma senha.
Ele permite que os servidores integrem-se aos autenticadores fortes agora integrados em dispositivos, como o Windows Hello ou o Touch ID da Apple. Em vez de uma senha, um par de chaves público-privado (conhecido como credencial) é criado para um site/aplicação web. A chave privada é armazenada com segurança no dispositivo do usuário; uma chave pública e um ID de credencial é gerada aleatoriamente é enviada ao servidor para armazenamento. O servidor pode então usar essa chave pública para provar a identidade do usuário.
A chave pública não é secreta, porque é efetivamente inútil sem a chave privada correspondente. O fato de o servidor não receber segredo tem implicações de longo alcance para a segurança de usuários e organizações. Os bancos de dados não são mais tão atraentes para os hackers, porque as chaves públicas não são úteis para eles.
O WebAuthn faz parte da estrutura FIDO2 , que é um conjunto de tecnologias que permitem a autenticação sem senha entre servidores, navegadores e autenticadores. A partir de janeiro de 2019, o WebAuthn é suportado no Chrome, Firefox e Edge, com suporte futuro no Safari.
Registrando uma credencial do WebAuthn
[wp_ad_camp_2]
Em um fluxo de registro de usuário baseado em senha, um servidor normalmente apresentará um formulário a um usuário solicitando um nome de usuário e senha. A senha seria enviada ao servidor para armazenamento.
No WebAuthn, um servidor deve fornecer dados que vinculem um usuário a uma credencial (um par de chaves público-privado); esses dados incluem identificadores para o usuário e a organização (também conhecidos como “terceira parte confiável”). O site, em seguida, usaria a API de autenticação da Web para solicitar que o usuário crie um novo par de chaves. É importante notar que precisamos de uma string gerada aleatoriamente do servidor como um desafio para evitar ataques de repetição.
Autenticando com uma credencial do WebAuthn
[wp_ad_camp_1]
Após o término do registro, o usuário agora pode ser autenticado. Durante a autenticação, uma declaração é criada, o que prova que o usuário possui a chave privada. Essa declaração contém uma assinatura criada usando a chave privada. O servidor usa a chave pública recuperada durante o registro para verificar essa assinatura.
O que é criptografia de chave pública?
A criptografia de chave pública foi inventada nos anos 70 e foi uma solução para o problema dos segredos compartilhados. É um pilar da segurança moderna da Internet; Por exemplo, toda vez que nos conectamos a um site HTTPS, ocorre uma transação de chave pública.
Criptografia de chave pública usa o conceito de um par de chaves; uma chave privada armazenada com segurança pelo usuário e uma chave pública que pode ser compartilhada com o servidor. Essas “chaves” são números longos e aleatórios que têm um relacionamento matemático entre si.
Olhando para o futuro
Embora a Autenticação da Web seja uma ferramenta importante, é sempre importante lembrar que a segurança não é uma tecnologia única; É uma maneira de pensar que deve ser incorporada em cada etapa de como o software é projetado e desenvolvido. A autenticação da Web pode ser uma parte importante desse processo, forçando 80% dos ataques de hackers a se adaptar ou a morrer.
Fora introdução todo conteúdo desse post é uma tradução do site webauthn.guide e você pode encontrar o texto original clicando aqui.
Nos próximos posts vou estar trazendo aplicações práticas e tutoriais para implementação da funcionalidade com PWA’s e sistemas Web.