APIs WebAuthn para autenticação sem palavra-passe no Windows
As palavras-passe podem deixar os seus clientes vulneráveis a violações de dados e ataques de segurança por parte de utilizadores maliciosos.
Há muito que a Microsoft é uma defensora da autenticação sem palavra-passe e introduziu as APIs da plataforma W3C/Fast IDentity Online 2 (FIDO2) Win32 WebAuthn no Windows 10 (versão 1903).
A partir do Windows 11, versão 22H2, as APIs WebAuthn suportam algoritmos ECC.
O que isso significa?
Ao utilizar as APIs WebAuthn, os parceiros de programador e a comunidade de programadores podem utilizar o Windows Hello ou as Chaves de Segurança FIDO2 para implementar a autenticação multifator sem palavra-passe para as respetivas aplicações em dispositivos Windows.
Os utilizadores destas aplicações ou sites podem utilizar qualquer browser que suporte APIs WebAuthn para autenticação sem palavra-passe. Os utilizadores terão uma experiência familiar e consistente no Windows, independentemente do browser que utilizarem.
Os programadores devem utilizar as APIs WebAuthn para suportar chaves de autenticação FIDO2 de forma consistente para os utilizadores. Além disso, os programadores podem utilizar todos os transportes disponíveis de acordo com as especificações FIDO2 (USB, NFC e BLE), evitando a sobrecarga de interação e gestão.
Observação
Quando estas APIs estão a ser utilizadas, os browsers ou aplicações do Windows 10 não têm acesso direto aos transportes FIDO2 para mensagens relacionadas com FIDO.
O panorama geral
O Protocolo 2 do Cliente para o Authenticator (CTAP2) e o WebAuthn definem uma camada de abstração que cria um ecossistema para credenciais fortemente autenticadas. Neste ecossistema, qualquer cliente interoperável (como uma aplicação nativa ou um browser) que seja executado num determinado dispositivo cliente utiliza um método padronizado para interagir com qualquer autenticador interoperável. Os autenticadores interoperáveis incluem autenticadores incorporados no dispositivo cliente (autenticadores de plataforma) e autenticadores que se ligam ao dispositivo cliente através de ligações USB, BLE ou NFC (autenticadores de roaming).
O processo de autenticação é iniciado quando o utilizador faz um gesto de utilizador específico que indica consentimento para a operação. A pedido do cliente, o autenticador cria chaves criptográficas fortes e armazena-as localmente.
Após a criação destas chaves específicas do cliente, os clientes podem pedir atestados para registo e autenticação. O tipo de assinatura que a chave privada utiliza reflete o gesto de utilizador que foi efetuado.
O diagrama seguinte mostra como o CTAP e o WebAuthn interagem. As setas pontilhadas azuis claros representam interações que dependem da implementação específica das APIs da plataforma.
Relações dos componentes que participam na autenticação sem palavra-passe
Uma dança Combinada WebAuthn/CTAP2 inclui o seguinte elenco de personagens:
Dispositivo cliente. O dispositivo cliente é o hardware que aloja uma determinada autenticação forte. Portáteis e telemóveis são exemplos de dispositivos cliente.
Entidades confiadoras e clientes. As entidades confiadoras são aplicações Web ou nativas que consomem credenciais fortes. As entidades confiadoras são executadas em dispositivos cliente.
Como entidade confiadora, uma aplicação nativa também pode atuar como um cliente WebAuthn para fazer chamadas WebAuthn diretas.
Enquanto entidade confiadora, uma aplicação Web não pode interagir diretamente com a API WebAuthn. A entidade confiadora tem de mediar o negócio através do browser.
Observação
O diagrama anterior não ilustra a autenticação de Sign-On Único (SSO). Tenha cuidado para não confundir as entidades confiadoras FIDO com entidades confiadoras federadas.
API WebAuthn. A API WebAuthn permite que os clientes façam pedidos aos autenticadores. O cliente pode pedir ao autenticador para criar uma chave, fornecer uma asserção sobre uma chave, capacidades de relatório, gerir um PIN, etc.
Plataforma/anfitrião CTAP2. A plataforma (também denominada anfitrião na especificação CTAP2) é a parte do dispositivo cliente que negoceia com os autenticadores. A plataforma é responsável por comunicar de forma segura a origem do pedido e chamar as APIs CTAP2 Concise Binary Object Representation (CBOR). Se a plataforma não tiver conhecimento ctap2, os próprios clientes assumem mais encargos. Neste caso, os componentes e interações apresentados no diagrama anterior podem ser diferentes.
Autenticador de plataforma. Normalmente, um autenticador de plataforma reside num dispositivo cliente. Exemplos de autenticadores de plataforma incluem tecnologia de reconhecimento de impressões digitais que utiliza um leitor de impressões digitais de portátil incorporado e tecnologia de reconhecimento facial que utiliza uma câmara de smartphone incorporada. Os protocolos de transporte entre plataformas, como USB, NFC ou BLE, não conseguem aceder aos autenticadores da plataforma.
Autenticador de roaming. Um autenticador de roaming pode ligar a vários dispositivos cliente. Os dispositivos cliente têm de utilizar um protocolo de transporte suportado para negociar interações. Exemplos de autenticadores de roaming incluem chaves de segurança USB, aplicações de smartphone compatíveis com BLE e cartões de proximidade compatíveis com NFC. Os autenticadores de roaming podem suportar CTAP1, CTAP2 ou ambos os protocolos.
Muitas entidades confiadoras e clientes podem interagir com muitos autenticadores num único dispositivo cliente. Um utilizador pode instalar vários browsers que suportem o WebAuthn e, simultaneamente, ter acesso a um leitor de impressões digitais incorporado, a uma chave de segurança ligada à corrente e a uma aplicação móvel com BLE ativada.
Interoperabilidade
Antes de WebAuthn e CTAP2, existiam U2F e CTAP1. U2F é a especificação universal de segundo fator da FIDO Alliance. Existem muitos autenticadores que falam CTAP1 e gerem credenciais U2F. O WebAuthn foi concebido para ser interoperável com Os Autenticadores CTAP1. Uma entidade confiadora que utiliza o WebAuthn ainda pode utilizar credenciais U2F se a entidade confiadora não precisar da funcionalidade apenas FIDO2.
Os autenticadores FIDO2 já foram implementados e as entidades confiadoras WebAuthn podem exigir as seguintes funcionalidades opcionais:
- Chaves para várias contas (as chaves podem ser armazenadas por entidade confiadora)
- PIN do Cliente
- Localização (o autenticador devolve uma localização)
- Segredo do Código de Autenticação de Mensagens (HMAC) baseado em hash (ativa cenários offline)
As seguintes opções podem ser úteis no futuro, mas ainda não foram observadas na natureza:
- Aprovação transacional
- Índice de verificação do utilizador (os servidores podem determinar se os dados biométricos armazenados localmente mudaram ao longo do tempo)
- Método de verificação do utilizador (o autenticador devolve o método exato)
- Limites de desempenho biométrico (a entidade confiadora pode especificar uma falsa aceitação aceitável e taxas de rejeição falsas)
Implementação da Microsoft
A implementação do Microsoft FIDO2 tem estado a ser criada há anos. O software e os serviços são implementados de forma independente como entidades compatíveis com normas. A partir da versão 1809 (outubro de 2018) do Windows 10, todos os componentes da Microsoft utilizam a versão mais recente do WebAuthn Candidate. É uma versão estável que não se espera que mude normativamente antes de a especificação ser finalmente ratificada. Uma vez que a Microsoft está entre as primeiras do mundo a implementar FIDO2, algumas combinações de componentes populares que não são da Microsoft ainda não serão interoperáveis.
Eis um esquema aproximado de onde vão os bits da Microsoft:
Implementação da Microsoft de APIs WebAuthn e CATP2
Entidade confiadora WebAuthn: Conta Microsoft. Se não estiver familiarizado com a Conta Microsoft, este é o serviço de início de sessão para Xbox, Outlook e muitos outros sites. A experiência de início de sessão utiliza JavaScript do lado do cliente para acionar o Microsoft Edge para comunicar com as APIs WebAuthn. A Conta Microsoft requer que os autenticadores tenham as seguintes características:
- As chaves são armazenadas localmente no autenticador e não num servidor remoto
- Os cenários offline funcionam (ativados através do HMAC)
- Os utilizadores podem colocar chaves para várias contas de utilizador no mesmo autenticador
- Se for necessário, os autenticadores podem utilizar um PIN de cliente para desbloquear um TPM
Importante
Uma vez que a Conta Microsoft necessita de funcionalidades e extensões exclusivas para autenticadores FIDO2 CTAP2, não aceita credenciais CTAP1 (U2F).
Cliente WebAuthn: Microsoft Edge. O Microsoft Edge pode processar a interface de utilizador para as funcionalidades WebAuthn e CTAP2 que este artigo descreve. Também suporta a extensão AppID. O Microsoft Edge pode interagir com os autenticadores CTAP1 e CTAP2. Este âmbito de interação significa que pode criar e utilizar credenciais U2F e FIDO2. No entanto, o Microsoft Edge não fala o protocolo U2F. Por conseguinte, as entidades confiadoras têm de utilizar apenas a especificação WebAuthn. O Microsoft Edge no Android não suporta WebAuthn.
Observação
Para obter informações autoritativas sobre o suporte do Microsoft Edge para WebAuthn e CTAP, veja a Documentação do programador legado do Microsoft Edge.
Plataforma: Windows 10, Windows 11. O Windows 10 e o Windows 11 alojam as APIs WebAuthn da Plataforma Win32.
Authenticators de Roaming. Poderá reparar que não existe nenhum autenticador de roaming da Microsoft . A razão é porque já existe um ecossistema forte de produtos especializados em autenticação forte e todos os clientes (sejam empresas ou indivíduos) têm requisitos diferentes de segurança, facilidade de utilização, distribuição e recuperação de contas. Para obter mais informações sobre a lista cada vez maior de autenticadores certificados FIDO2, veja Produtos Certificados FIDO. A lista inclui autenticadores incorporados, autenticadores de roaming e até fabricantes de chips que tenham designs certificados.
Referências para programadores
As APIs WebAuthn estão documentadas no repositório do GitHub Microsoft/webauthn . Para compreender como funcionam os autenticadores FIDO2, reveja as duas especificações seguintes:
- Autenticação Web: uma API para aceder a Credenciais de Chave Pública (disponível no site W3C). Este documento é conhecido como a especificação WebAuthn.
- Protocolo CTAP (Client to Authenticator Protocol). Este documento está disponível no site da FIDO Alliance , no qual as equipas de hardware e plataforma estão a trabalhar em conjunto para resolver o problema da autenticação FIDO.