Autenticação FIDO com chaves de acesso

Introdução

O padrão de autenticação FIDO (Fast IDentity Online) define um mecanismo de autenticação rápido e seguro para os usuários acessarem sites e aplicativos.

A FIDO Alliance , com representantes de diversas organizações , desenvolve especificações técnicas abertas e escaláveis ​​que permitem que as pessoas acessem sites e aplicativos por meio de um protocolo comum. Isso significa que qualquer empresa pode usar os padrões FIDO para implementar tecnologias, como chaves de acesso, para autenticação segura.

Uma chave de acesso é uma credencial de login FIDO, vinculada a uma origem (site ou aplicativo) e a um dispositivo físico. As senhas permitem que os usuários se autentiquem sem precisar inserir um nome de usuário, senha ou fornecer qualquer fator de autenticação adicional. Essa tecnologia visa substituir as senhas como o principal mecanismo de autenticação.

Por que a autenticação segura é importante?

As senhas são usadas para autenticação na computação há décadas. No entanto, a autenticação baseada em senha não é a opção mais segura para autenticação, pois os bancos de dados podem ser violados e as senhas podem sofrer phishing.

Muitos usuários fazem login em sites diferentes usando as mesmas senhas. Isso significa que quando um site é violado, todas as outras contas que usam a mesma senha estão em risco. Portanto, mesmo que você tenha construído um sistema de senha seguro, as pessoas ainda correm risco quando uma senha é sua única proteção.

Alguns sites e aplicativos solicitam a verificação em duas etapas solicitando uma segunda credencial que é entregue via SMS, e-mail, aplicativo etc. Embora isso seja mais seguro do que apenas usar uma senha, esse método de verificação em duas etapas ainda é vulnerável a phishing, porque o usuário pode ser convencido a inserir seus detalhes de verificação em duas etapas em um site malicioso.

Como o FIDO cria uma segurança mais forte?

A autenticação baseada em FIDO remove muitos dos problemas decorrentes da autenticação baseada em senha e da autenticação que usa as segundas etapas tradicionais. Em particular:

  • A autenticação FIDO usa criptografia de chave pública.
  • O FIDO ajuda a garantir que as credenciais não sejam compartilhadas com partes mal-intencionadas ou outras partes que não possuem a credencial

A criptografia de chave pública reduz a ameaça de possíveis violações de banco de dados. O usuário se cadastra com uma única origem (um site ou aplicativo), que gera um par de chaves pública-privada no autenticador do usuário (um dispositivo físico). A chave pública do usuário é armazenada pelo servidor de origem, mas isso por si só é inútil para um invasor. Um invasor não pode derivar a chave privada do usuário dos dados armazenados no servidor, o que é necessário para concluir a autenticação.

Com o FIDO, o usuário não é responsável por confirmar que um site ou aplicativo é realmente quem ele diz ser. Além disso, o usuário não é responsável por garantir que as credenciais não sejam usadas nos lugares errados. A FIDO vincula cada credencial a uma origem específica, o que significa que o dispositivo (não o humano) é responsável por identificar corretamente o site ou aplicativo.

Por exemplo, digamos que o usuário esteja tentando fazer login em example.com . Se o usuário solicitar a credencial de propriedade de example.com em phishing-example.com , o autenticador rejeitará a solicitação, protegendo assim o usuário. O processo de autenticação torna muito difícil para sites ou aplicativos de phishing obter a verificação destinada a outras origens.

No geral, o FIDO e as chaves de acesso permitem que você implante uma autenticação mais forte que ainda seja utilizável e fácil para a maioria dos usuários.

Demonstração

O que são chaves de acesso?

Uma chave de acesso é uma credencial digital que adere aos padrões FIDO e W3C Web Authentication (WebAuthn) . Semelhante a uma senha, sites e aplicativos podem solicitar que um usuário crie uma chave de acesso para acessar sua conta.

As chaves de acesso dependem do desbloqueio de um dispositivo para verificar a identidade de um usuário. Isso pode ser realizado com um sensor biométrico (como impressão digital ou reconhecimento facial), PIN ou padrão. Um usuário deve primeiro se registrar com a origem, para gerar sua chave de acesso (um par de chaves pública-privada).

Ao retornar ao site ou aplicativo para fazer login, o usuário poderá realizar as seguintes etapas:

  1. Acesse o aplicativo.
  2. Clique em Entrar .
  3. Selecione sua chave de acesso.
  4. Desbloqueie o dispositivo para concluir o login.

O autenticador gera uma assinatura usando a chave privada. Esta assinatura é utilizada para verificar a credencial de login entre a origem e o autenticador, utilizando a chave pública e sem revelar a chave privada.

Um usuário pode entrar nos serviços em qualquer dispositivo com a ajuda de uma chave de acesso, independentemente de onde a chave de acesso está armazenada. Por exemplo, uma chave de acesso armazenada em um telefone celular pode ser usada para entrar em um site em um laptop separado.

Como funcionam as chaves de acesso?

As chaves de acesso são criadas e sincronizadas por meio do sistema operacional. Alguns sistemas operacionais podem permitir a sincronização automática de senhas entre os dispositivos do usuário, como um telefone Android e um dispositivo ChromeOS que estejam conectados à mesma conta do Google.

Embora as chaves de acesso estejam vinculadas a sistemas operacionais, um usuário pode usar chaves de acesso de seu telefone ao fazer login em um laptop. Como as chaves de acesso são criadas com os padrões FIDO e W3C, todos os navegadores podem adotá-las. Por exemplo, um usuário visita site.example em seu Chromebook. Este usuário fez login anteriormente no site.example em seu dispositivo iOS. O usuário será solicitado a confirmar sua identidade no dispositivo iOS. Normalmente, site.example cria uma nova chave de acesso para o Chromebook do usuário para que, em logins futuros, o telefone não seja mais necessário.

As chaves de acesso são criptografadas de ponta a ponta, o que significa que, embora o Google seja responsável por sincronizá-las com diferentes dispositivos Android, o Google não pode ler a chave de acesso ou conhecer esses dados.

Processo de autenticação

Uma representação da aparência da janela de autenticação.

Para implementar chaves de acesso em um site ou aplicativo, é importante que você se familiarize com o seguinte:

  • Os autenticadores são dispositivos físicos de propriedade do usuário que contêm as chaves de acesso do usuário e podem identificá-lo.
  • A terceira parte confiável é seu site ou aplicativo, composto por um aplicativo front-end e um servidor back-end.
    • O aplicativo front-end chama APIs para interagir com o autenticador e iniciar o processo de autenticação.
    • O servidor back-end recupera os objetos criptográficos produzidos pelo autenticador e os verifica.

Por exemplo, digamos que um usuário queira comprar um par de sapatos em uma loja em shoes.example (a terceira parte confiável). O usuário já se registrou em uma conta em shoes.example , usando seu telefone Android com um sensor biométrico. O usuário faz login em shoes.example em seu dispositivo Android desbloqueando seu dispositivo. Em seguida, shoes.example verifica a credencial de login assinada criptograficamente do usuário em relação à chave pública conhecida desse usuário para confirmar que a identidade do usuário está correta.

Autenticadores

Os autenticadores são dispositivos compatíveis com FIDO que são usados ​​para confirmar a identidade de um usuário. Isso inclui dispositivos de finalidade especial (chaves de segurança FIDO), bem como telefones celulares e outros computadores que atendem aos requisitos do autenticador. Os autenticadores executam as operações criptográficas descritas nos padrões FIDO e WebAuthn.

O dispositivo tem duas funções, para registro e autenticação:

  • Quando o usuário se registra com uma terceira parte confiável, o dispositivo gera um par de chaves público-privado exclusivo. Isso inclui os telefones e computadores do usuário.
  • Quando o usuário fizer login na terceira parte confiável no futuro, o dispositivo gerará uma assinatura usando a chave privada.

Ambas as operações são realizadas quando o usuário comprova a posse do autenticador. Este par de chaves é registrado com uma origem específica e só pode ser usado pela origem exata. Se um usuário acessar um site de phishing, a credencial ficará indisponível.

Dispositivos compatíveis com FIDO

Os autenticadores mais comuns são:

  • Autenticadores de plataforma : estes são incorporados em smartphones e computadores. Os autenticadores de plataforma usam um sensor biométrico (como um sensor de impressão digital ou uma câmera com reconhecimento facial), um PIN ou padrão. Como a interação de autenticação é concluída com o desbloqueio do dispositivo, isso prova em uma única etapa que o usuário possui o dispositivo e pode confirmar sua identidade com sua biometria exclusiva.
  • Chaves de segurança : geralmente são dispositivos USB com um botão a ser pressionado para indicar a autenticação. Quando usadas com uma senha, as chaves de segurança podem fornecer um fator de posse para autenticação de dois fatores. O exemplo mais comum disso é uma chave de segurança Titan ou uma YubiKey.

A parte dianteira

Os aplicativos usam APIs do lado do cliente, como WebAuthn e FIDO2 para Android , para criar e verificar as credenciais do usuário com o autenticador.

O aplicativo passa um desafio criptográfico, gerado pelo servidor back-end, para o autenticador. O aplicativo envia a resposta do autenticador ao servidor para validação, que realiza uma ação com base nessa validação.

Processo interno

O servidor armazena a credencial da chave pública do usuário e as informações da conta.

No registro e autenticação, o servidor gera um desafio criptográfico. Este desafio verifica a assinatura emitida pelo autenticador, confirmando se o usuário é quem afirma ser.

Perguntas frequentes (FAQ)

Quem apoia as chaves de acesso?

Como as chaves de acesso são baseadas nos padrões FIDO, elas funcionam no Android e no Chrome, juntamente com muitas outras plataformas e navegadores populares, como Microsoft Windows, Microsoft Edge, MacOS, iOS e Safari.

Consulte a documentação fornecida por essas plataformas para confirmar o estado atual de disponibilidade.

No Android, pretendemos ter o suporte à chave de acesso disponível para os desenvolvedores até o final de 2022.

O que acontece se um usuário perder o dispositivo?

As senhas criadas no Android são copiadas e sincronizadas com dispositivos Android que estão conectados à mesma Conta do Google, da mesma forma que as senhas são copiadas no gerenciador de senhas.

Isso significa que as chaves de acesso dos usuários os acompanham quando eles substituem seus dispositivos. Para fazer login em aplicativos em um novo telefone, tudo o que os usuários precisam fazer é desbloquear o telefone.

Um usuário pode usar uma chave de acesso em seu telefone para fazer login no dispositivo de um amigo?

Sim. Os usuários podem configurar um "link único" entre o telefone e o dispositivo de outra pessoa para fazer login.

Próximos passos

Faça um codelab:

Aprender mais sobre: