Autenticação sem senha: passkeys, magic links e o futuro do login

1. O problema das senhas tradicionais

As senhas são, há décadas, o principal mecanismo de autenticação digital. No entanto, sua fragilidade é notória. Estudos indicam que 81% das violações de dados envolvem senhas fracas ou roubadas. O ser humano tende a reutilizar a mesma senha em múltiplos serviços, criando um efeito dominó: um vazamento em um site compromete dezenas de contas do usuário. Além disso, senhas como "123456" ou "password" ainda lideram rankings mundiais.

Do ponto de vista da experiência do usuário, o processo de reset de senha é uma das maiores causas de abandono de cadastro. Cada etapa extra — lembrar, digitar, confirmar, aguardar e-mail — aumenta a taxa de desistência em até 20%. Para as empresas, o custo operacional é alto: suporte técnico para redefinições, armazenamento seguro de hashes, proteção contra ataques de força bruta e conformidade com regulamentações como a LGPD.

2. Fundamentos da autenticação sem senha

Autenticação sem senha é um modelo que elimina o fator de conhecimento (algo que você sabe) em favor de fatores de posse (algo que você tem) e fatores inerentes (algo que você é). Em vez de digitar uma senha, o usuário prova sua identidade por meio de um dispositivo confiável ou de dados biométricos.

Os padrões abertos que viabilizam essa transição são:
- WebAuthn (Web Authentication): API do W3C que permite autenticação com chaves criptográficas no navegador.
- FIDO2: conjunto de especificações da FIDO Alliance que inclui WebAuthn e CTAP (Client-to-Authenticator Protocol).
- Passkeys: implementação prática do FIDO2, onde as chaves são sincronizadas entre dispositivos do mesmo ecossistema.

Magic links são URLs únicas enviadas por e-mail que, ao serem clicadas, autenticam o usuário automaticamente. O fluxo é simples:

1. Usuário informa seu e-mail no formulário de login
2. Servidor gera um token criptográfico de curta duração (ex: 15 minutos)
3. Token é enviado como link no corpo do e-mail
4. Ao clicar, o servidor valida o token e cria uma sessão autenticada

Vantagens: implementação direta, sem necessidade de hardware especial ou biometria. É ideal para aplicações de baixo risco ou para onboarding de novos usuários.

Limitações: depende da segurança do provedor de e-mail, sofre latência de entrega e é vulnerável a interceptação se o canal não for criptografado. Além disso, o usuário precisa sair do contexto da aplicação para acessar o e-mail.

4. Passkeys: o padrão moderno de autenticação

Passkeys são pares de chaves criptográficas (pública e privada) geradas e armazenadas no dispositivo do usuário. A chave privada nunca sai do dispositivo; a chave pública é registrada no servidor. A autenticação ocorre por desafio-resposta, geralmente liberada por biometria (Face ID, Touch ID) ou PIN.

Mecanismo de funcionamento:

Registro:
1. Servidor envia um desafio (challenge) ao navegador
2. Navegador gera par de chaves via WebAuthn
3. Chave privada fica armazenada no dispositivo (ex: iCloud Keychain)
4. Chave pública é enviada ao servidor para registro

Autenticação:
1. Servidor envia novo desafio
2. Navegador solicita liberação biométrica ao usuário
3. Chave privada assina o desafio
4. Servidor verifica a assinatura com a chave pública

A sincronização entre dispositivos é feita por serviços como iCloud Keychain (Apple), Google Password Manager e Windows Hello. Isso permite que o usuário use o passkey em múltiplos aparelhos sem necessidade de re-registro.

5. Implementação prática de passkeys em aplicações web

Abaixo está um exemplo simplificado do fluxo de registro e autenticação com passkeys, utilizando a API WebAuthn:

Registro de um passkey (navegador):

// Solicitar criação de credencial
const publicKeyCredentialCreationOptions = {
  challenge: new Uint8Array([/* bytes do servidor */]),
  rp: { name: "Exemplo App", id: "exemplo.com" },
  user: {
    id: new Uint8Array([/* ID único do usuário */]),
    name: "usuario@email.com",
    displayName: "Usuário Exemplo"
  },
  pubKeyCredParams: [{ alg: -7, type: "public-key" }],
  authenticatorSelection: {
    authenticatorAttachment: "platform",
    residentKey: "required"
  }
};

const credential = await navigator.credentials.create({
  publicKey: publicKeyCredentialCreationOptions
});

// Enviar credential.id e credential.response ao servidor

Autenticação com passkey (navegador):

// Solicitar autenticação
const publicKeyCredentialRequestOptions = {
  challenge: new Uint8Array([/* novo desafio do servidor */]),
  allowCredentials: [{
    id: new Uint8Array([/* ID da credencial registrada */]),
    type: "public-key"
  }],
  userVerification: "required"
};

const assertion = await navigator.credentials.get({
  publicKey: publicKeyCredentialRequestOptions
});

// Enviar assertion.response ao servidor para verificação

Recuperação de dispositivo perdido:
Caso o usuário perca o dispositivo, a sincronização em nuvem permite restaurar os passkeys em um novo aparelho. Para serviços sem sincronização, é necessário um fluxo de fallback com magic links ou e-mail de verificação.

Critério Magic Links Passkeys
Complexidade técnica Baixa Média-Alta
Segurança Moderada Alta (criptografia assimétrica)
Experiência do usuário Sair do app para e-mail Biometria instantânea
Dependência Provedor de e-mail Dispositivo e ecossistema
Ideal para Onboarding, convites, apps simples Apps sensíveis (bancos, saúde), mobile-first

Estratégia híbrida: oferecer ambos como opção. Por exemplo: passkey como método principal e magic link como fallback para dispositivos não compatíveis ou para primeiro acesso.

7. O futuro do login: tendências e desafios

O futuro aponta para autenticação contínua e contextual. Sistemas como o Google BeyondCorp já utilizam sinais contextuais (localização, horário, comportamento) para ajustar o nível de segurança em tempo real. A biometria comportamental — como ritmo de digitação e movimentos do mouse — pode complementar os passkeys.

Desafios atuais incluem:
- Interoperabilidade: passkeys do Google não funcionam nativamente no ecossistema Apple e vice-versa.
- Suporte a navegadores: embora Chrome, Safari e Edge já suportem WebAuthn, navegadores menos populares ainda estão em adaptação.
- Regulamentações: a LGPD exige consentimento explícito para coleta de dados biométricos, e o eIDAS europeu estabelece requisitos rigorosos para assinaturas digitais.

A transição para um mundo sem senhas é inevitável, mas gradual. Empresas como Apple, Google e Microsoft já adotaram passkeys como padrão em seus sistemas operacionais. A recomendação atual é: implemente autenticação sem senha hoje, mesmo que de forma híbrida, para reduzir fricção e aumentar a segurança.

Referências