FIDO2
FIDO2 é uma framework que tem o objetivo de aumentar a segurança de aplicações Web através de dispositivos que permitem o usuário provar quem ele é sem a necessidade de um usuário e/ou senha.
tl;dr - Experiência do usuário FIDO2 FEITIAN
Esse post só foi possivel graças a FEITIAN que me disponibilizou um device FIDO2 para testes.
E caso você queira saber como é a experiência do usuário utilizando um FIDO2, nesse caso da FEITIAN, veja o video abaixo:
Estou utilizando esse modelo BioPass FIDO Security Key
Autenticações multi-fator (MFA)
Para explicar por que ele é seguro, é necessário entender os tipos de MFA. Existem três tipos conhecidos de MFA:
- Nivel 1 – Algo que você conhece – Inclui senhas, PINs ou palavras. Qualquer coisa que você possa lembrar e depois digitar, dizer, fazer, executar ou lembrar quando necessário.
- Nivel 2 – Algo que você tem – Inclui objetos físicos, como chaves, smartphones, cartões inteligentes, unidades USB e dispositivos de token.
- Nivel 3 – Algo que você é – Inclui qualquer parte do corpo humano que pode ser oferecida para verificação, como impressões digitais, escaneamento da palma da mão, reconhecimento facial, escaneamento de retina, escaneamento de íris e verificação de voz.
A segurança de uma autenticação aumenta de acordo com os niveis.
As chaves de segurança FIDO2 trafegam entre os niveis 2 e 3, pois além de necessitar do dispositivo fisico (Tipo 2), ainda é necessário provar algo que você é (Tipo 3). Seja através da camera do celular ou da biometria.
FIDO2
O principal objetivo do FIDO2 é eliminar o uso de senhas na Internet. Ele foi desenvolvido para introduzir padrões abertos para autenticação. O processo de autenticação FIDO2 elimina as ameaças tradicionais. Substituindo a senha pelo dispositivo. E como consequencia protege contra ataques comuns em senha. Como phishing, man-in-the-middle e csrf.
O FIDO2 é um padrão de autenticação aberto. Quem cuida desse padrão e define como ele deve funcionar é a FIDO Alliance. Essa aliança é um conjunto de duas especificações. W3C Web Authentication (API WebAuthn) e no Client to Authentication Protocol (CTAP).
O CTAP é um protocolo usado para comunicação entre um cliente (navegador) ou uma plataforma (sistema operacional) com um autenticador externo, como o FEITIAN FIDO2.
Security Key FIDO2
Um dispositivo FIDO2 é um dispositivo com sensor integrado. Pode ser hardware com token e suporte para FIDO ou um dispositivo com impressão digital ou reconhecimento facial, como Apple TouchID e Windows Hello.
Um servidor FIDO é capaz de validar a autenticidade de um dispositivo.
Como funciona o processo
Toda vez que um usuário se registra em um novo serviço (Google, GitHub, etc), o security key FIDO gera um novo par de chaves para esse serviço. As chaves são necessariamente exclusivas desse serviço e não são compartilhadas entre os serviços.
Ao efetuar o registro, esse par de chaves é gerado. A chave pública é enviada ao serviço para ser armazenada e usada no futuro ao autenticar esse usuário.
O processo de solicitar um novo par de chaves é conhecido como Attestation. As opções do Attestation chega até o security key a partir da integração entre o site e WebAuthn.
O attestation realiza duas coisas:
-
Se um invasor interceptar uma mensagem e substituir a mensagem, ele não poderá trocar a nova chave pública pela sua própria, pois a assinatura do attestation não corresponderia.
-
Permite que o serviço confie no autenticador que está sendo usado.
O site em posse da chave pública consegue validar a assinatura do Security Key. Um processo muito simples caso você já conheça o processo de Criptografia Assimétrica.
O security key é o único dispositivo no mundo capaz de produzir uma assinatura que o site consiga validar através da chave pública dele, tornando o processo extremamente seguro.
E por outro lado se esse site ou aplicativo não conter senhas dentro de seu banco de dados, o valor desse banco é dimunuido, uma vez que um ataque bem sucedido não irá vazar as credenciais dos usuários evitando ataque e fraudes em outros serviços.
Video oficial do WebAuthn
Veja esse video do youtube, ele pode ajudar a clarear um pouco sobre esse processo.
Conclusão
Apesar da sopa de letrinhas e um bando de termos. A prática é que o FIDO2 é muito seguro. Geralmente segurança vem acompanhado de cerimônias: Mais passos, pior para a usabilidade. O usuário tenta burlar.
Mas o FIDO2 está longe de sofrer desse problema, pelo contrário, além de ser mais simples é também mais seguro.
A parte ruim é o preço, que acaba sendo um pouco salgado para as terras tupiniquins.
Esse é um device que sem dúvida é um acessório que faz parte da minha vida, tanto quanto meu celular.
O próximo post será um conteúdo técnico, onde será feito a integração entre o ASP.NET Identity e FIDO2.