Autenticação FIDO com senhas 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 uma variedade de organizações, desenvolve especificações técnicas abertas e escalonáveis que permitem às pessoas acessar sites e apps usando um protocolo comum. Isso significa que qualquer empresa pode usar padrões FIDO para implementar tecnologias, como senhas, para uma autenticação segura.

Uma senha é uma credencial de login da FIDO vinculada a uma origem (site ou aplicativo) e a um dispositivo físico. As senhas permitem que os usuários façam a autenticação sem informar um nome de usuário e uma senha ou fornecer qualquer fator de autenticação adicional. O objetivo dessa tecnologia é substituir senhas como o principal mecanismo de autenticação.

Por que a autenticação segura é importante?

As senhas são usadas na autenticação há muitos anos. No entanto, a autenticação por senha não é a opção mais segura, porque os bancos de dados podem sofrer violações, 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 criado um sistema de senha seguro, as pessoas ainda estarão em risco quando a senha for a única proteção.

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

Como a FIDO cria uma segurança mais forte?

A autenticação baseada em FIDO remove muitos dos problemas decorrentes da autenticação com base em senha e daquela que usa etapas secundárias tradicionais. Especificamente, as seguintes:

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

A criptografia da chave pública reduz a ameaça de possíveis violações do banco de dados. O usuário se registra 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 da origem, mas isso é inútil para um invasor. Um invasor não pode derivar a chave privada do usuário dos dados armazenados no servidor, que é necessário para concluir a autenticação.

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

Por exemplo, digamos que o usuário esteja tentando fazer login em example.com. Se o usuário solicitar a credencial de example.com em phishing-example.com, o autenticador rejeitará a solicitação e protegerá o usuário. O processo de autenticação dificulta a verificação de sites ou apps de phishing para outras origens.

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

Demonstração

O que são senhas de acesso?

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

As senhas são necessárias para desbloquear um dispositivo e verificar a identidade do usuário. Isso pode ser realizado com um sensor biométrico (como impressão digital ou reconhecimento facial), PIN ou padrão. Primeiro o usuário precisa se registrar com a origem para gerar a senha (um par de chaves públicas/privadas).

Quando ele retorna ao site ou ao app para fazer login, o usuário pode seguir estas etapas:

  1. Acesse o aplicativo.
  2. Clique em Sign in.
  3. Selecione a senha.
  4. Desbloqueie o dispositivo para concluir o login.

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

Um usuário pode fazer login em serviços em qualquer dispositivo com a ajuda de uma senha, independentemente de onde ela é armazenada. Por exemplo, uma senha armazenada em um smartphone pode ser usada para fazer login em um site em um laptop separado.

Como funcionam as senhas?

As senhas são criadas e sincronizadas pelo sistema operacional. Alguns sistemas operacionais podem permitir a sincronização automática de senhas entre os dispositivos do usuário, como um smartphone Android e um dispositivo ChromeOS conectados à mesma Conta do Google.

Enquanto as senhas são vinculadas a sistemas operacionais, um usuário pode usar senhas do smartphone ao fazer login em um laptop. Como as senhas são criadas com os padrões FIDO e W3C, todos os navegadores podem adotá-las. Por exemplo, um usuário visita site.example no Chromebook. Este usuário já fez login em site.example no dispositivo iOS. O usuário precisará confirmar a identidade no dispositivo iOS. Normalmente, site.example cria uma nova senha para o Chromebook do usuário. Assim, para futuros logins, o smartphone não será mais necessário.

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

Processo de autenticação

Uma representação da janela de autenticação.

Para implementar senhas 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 têm as senhas de usuário e podem identificá-lo.
  • A parte confiável é seu site ou app, composto por um aplicativo de front-end e um servidor de back-end.
    • O aplicativo front-end chama APIs para interagir com o autenticador e iniciar o processo de autenticação.
    • O servidor de 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 parte confiável). O usuário já fez o registro para uma conta em shoes.example, usando o smartphone Android com um sensor biométrico. O usuário faz login no dispositivo shoes.example para desbloquear o dispositivo. Em seguida, o shoes.example verifica a credencial de login assinada criptograficamente do usuário em relação à chave pública conhecida para que o usuário confirme se a identidade dele 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 uso especial (chaves de segurança FIDO), assim como smartphones 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 dois papéis para registro e autenticação:

  • Quando o usuário se registra em uma parte confiável, o dispositivo gera um par de chaves privadas privadas particular. Isso inclui os smartphones e computadores do usuário.
  • Quando o usuário fizer login na outra parte no futuro, o dispositivo gerará uma assinatura usando a chave privada.

As duas operações são realizadas quando o usuário confirma a posse do autenticador. Esse 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 não estará disponível.

Dispositivos compatíveis com FIDO

Os autenticadores mais comuns são:

  • Autenticadores de plataforma: são integrados a 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 um padrão. Como a interação de autenticação é concluída ao desbloquear o dispositivo, isso é comprovado em uma única etapa que o usuário possui o dispositivo e pode confirmar a identidade com a biometria exclusiva.
  • Chaves de segurança: normalmente são dispositivos USB com um botão para pressionar para indicar a autenticação. Quando usadas com uma senha, as chaves de segurança podem fornecer um fator de posse para a autenticação de dois fatores. O exemplo mais comum disso é uma chave de segurança Titan ou uma YubiKey.

Front-end

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 transmite um desafio criptográfico, gerado pelo servidor de back-end, para o autenticador. O aplicativo envia a resposta do autenticador ao servidor para validação, que realiza ações com base nessa validação.

Back-end

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

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

Perguntas frequentes

Quem aceita senhas de acesso?

Como as senhas são baseadas nos padrões FIDO, elas funcionam no Android e no Chrome, além de muitas outras plataformas e navegadores conhecidos, 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, queremos disponibilizar o suporte por senha aos desenvolvedores até o fim de 2022.

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

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

Isso significa que as senhas são atribuídas aos usuários quando eles substituem os dispositivos. Para fazer login em apps em um novo smartphone, basta desbloquear o smartphone.

Um usuário pode usar uma senha no smartphone para fazer login no dispositivo de um amigo?

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

Próximas etapas

Faça um codelab:

Saiba mais sobre estas situações:

Receber atualizações: