Por que o sonho com Passkeys se desfez
O sonho
- Em 2019, o autor começou a desenvolver uma biblioteca Webauthn para Rust
- Na época, havia otimismo de que essa tecnologia poderia substituir senhas
- Esperava-se que ela pudesse oferecer suporte a autenticação em duas etapas, autenticação sem senha e autenticação sem nome de usuário
- A biblioteca desenvolvida pelo autor teve grande impacto na indústria
Sinais de alerta
- Como o Chrome domina o mercado, existe o problema de que, se ele não oferecer suporte, algo acaba ficando de fora do padrão
- Authenticator Selection Extension é um exemplo representativo
- Também é problemático que as principais decisões sejam tomadas em reuniões presenciais realizadas nos Estados Unidos
- Isso acaba excluindo participantes internacionais
Declínio
- Em 2022, a Apple anunciou o Passkeys
- No início, parecia bem projetado, mas depois, por causa de um anúncio da liderança, Passkey passou a ser definido como Resident Key
- Isso resultou na exclusão de chaves de segurança com pouco espaço de armazenamento
- Depois disso, Passkey se transformou em um meio de aprisionar usuários às plataformas
Situação piorando
- Chrome e Safari forçam o uso de caBLE em vez de chaves de segurança
- É uma abordagem com usabilidade muito ruim
- O Android bloqueia o uso de chaves de segurança em sites que oferecem suporte a Passkey
- Os exemplos para desenvolvedores induzem ao uso apenas do Google Passkey
- Os usuários estão enfrentando muitas dificuldades para usar Passkey
- Surgem problemas como bugs, processos complexos e perda de chaves
- É frequente que Passkeys sejam apagadas no Apple Keychain
Perspectiva
- O autor acredita que Passkey fracassará para o consumidor em geral
- A busca por lucro das empresas prejudica a experiência do usuário
- Inclusive, a parceira do autor diz que o método com senha é melhor do que Passkey
- Nas empresas, ainda há necessidade de chaves de segurança, mas os problemas de usabilidade permanecem
- O autor pretende continuar mantendo o projeto
webauthn-rs, mas está buscando outras alternativas além de Passkey
Opinião do GN⁺
- É preocupante que Passkey esteja caminhando para excluir chaves de segurança e aprofundar a dependência de plataformas. Limitar a liberdade de escolha do usuário não parece desejável.
- Parece necessário melhorar a usabilidade ao mesmo tempo em que a tecnologia evolui. Não deveria se tornar excessivamente complexa nem restritiva.
- Também parece urgente resolver os problemas no processo de padronização à medida que a influência de poucas empresas aumenta. Seria importante criar uma estrutura de tomada de decisão mais aberta e transparente.
- Como alternativas, os certificados de dispositivo e o modelo com smartcards parecem interessantes. Eles podem ser formas de superar as limitações do Passkey atual e, ao mesmo tempo, melhorar a usabilidade.
- Como ainda estamos em uma fase de transição, parece importante que o avanço técnico continue e que o feedback dos usuários siga sendo incorporado. Espera-se que diferentes partes interessadas colaborem para construir um sistema de autenticação melhor.
3 comentários
O futuro sem senhas está chegando
Apresentando as Passkeys no Chrome
Opinião do Hacker News
O maior problema com passkeys é que não dá para confiar nas empresas que as oferecem. Elas ficam presas à plataforma por motivos de segurança, mas muitas vezes isso é difícil de distinguir de lock-in de plataforma. Se você cria uma passkey em um dispositivo Apple, ela nunca pode sair desse dispositivo e não há como mudar isso. Isso protege contra phishing, mas não sei o que fazer se a Apple apagar a chave ou se eu quiser me livrar do iPhone.
Em discussões longas sobre passkeys, vejo uma esquiva estranha da parte de segurança baseada em "algo que você sabe". Nos EUA, tribunais e autoridades podem obter legalmente nome de usuário, impressão digital, escaneamento de retina, Face ID etc., mas não têm o direito de extrair algo do seu cérebro. Passkeys preferem substituir "algo que você sabe" por "algo que você tem", e isso é um pesadelo para a segurança.
Opinião contrária: adoro passkeys. Uso o navegador Firefox e o gerenciador 1Password, e no iPhone uso 1Password + Firefox. Consultei o passkeys.directory e troquei os logins de GitHub, Google, Microsoft e outros para passkeys. Termos como "Entrar com passkey" em vez de "Entrar com Touch ID" são confusos. O 1Password sincroniza as passkeys entre dispositivos. Pode ser inconveniente se eu precisar entrar em um computador público, mas isso não acontece com tanta frequência.
Ainda estou evitando passkeys porque não existe um modelo mental claro. Já uso senhas aleatórias geradas por um gerenciador de senhas tradicional, então não sinto necessidade de migrar. Entendo nome de usuário/e-mail + senha, mas lembrando do sofrimento com "senhas específicas de app", fico preocupado que algumas ferramentas open source/CLI não se integrem bem com passkeys, então parece melhor esperar a situação se estabilizar.
Estou totalmente investido no ecossistema do Apple Keychain e tenho vários dispositivos Apple, então passkeys são excelentes. Como desenvolvedor, lido todos os dias com as limitações do frágil SMS 2FA. Os usuários podem ser facilmente enganados por engenharia social e entregar seus códigos de 2FA. Passkeys oferecem uma solução mais segura, para que os desenvolvedores não precisem se preocupar com usuários ligando para o suporte e lendo o código em voz alta. Uma passkey não é comprometida por SIM swapping, e não dá para compartilhá-la com golpistas.
Como pessoa técnica, não entendo bem como passkeys funcionam, por que são melhores nem o que exatamente são. Se um recurso de segurança não for tão simples quanto lembrar nome de usuário e senha e guardá-los em um lugar seguro, ele não vai funcionar. Falam sobre uma chave no dispositivo, mas fico me perguntando como acessá-la quando uso tanto celular quanto PC, se preciso de nome de usuário/senha no começo, e se preciso de alguma chave física para conectar ao dispositivo.
Usernameless parece uma otimização excessiva. É razoável e bom que o usuário use um nome de usuário no login. Isso o ajuda a lembrar qual nome de usuário está usando. Pode acontecer de uma pessoa acessar um serviço com uma passkey usernameless, perder a passkey por algum motivo e também esquecer o nome de usuário daquele serviço, ficando sem conseguir iniciar o processo de recuperação da conta.
Para quem não conhece o funcionamento técnico das passkeys, vale consultar o seguinte guia de implementação: https://webauthn.guide/ Não entendo a aversão às passkeys. Migrar para desafios de chave pública na autenticação é um grande avanço para a segurança na web. Cada navegador/OS protege e faz backup da chave privada. Mesmo que você perca a chave, ainda pode usar o fluxo de "esqueci a senha" para redefinir as credenciais de autenticação.
Para eu considerar o uso de passkeys, os seguintes requisitos precisam ser atendidos:
Não verifiquei se a implementação de WebAuthn no Firefox ou no Chrome para Linux atende a esses requisitos.
Tento acompanhar a evolução do espaço de 2FA, mas passkeys foram a parte mais confusa. Vi muito hype dizendo que passkeys são a tecnologia da próxima geração, mas foi difícil encontrar explicações sobre o que de fato são e como funcionam. Descobrir que se trata de uma chave armazenada numa chave de segurança foi decepcionante. Gosto da ideia de gerar chaves na hora com base no nome de domínio. A vantagem das passkeys é que você não precisa lembrar qual nome de usuário usa em um site, mas isso é uma vantagem pequena.
Resposta a uma pergunta relacionada sobre qual é o nome oficial da tecnologia que calcula e reconstrói chaves na hora com base no nome de domínio (baseada em FIDO2? baseada em WebAuthn?): encontrei em https://fy.blackhats.net.au/blog/… Chamam a chave reconstruída na hora de "non-resident credential".