Passkeys: a palavra-passe que não existe

Publicado a por David Carrero

Todas as histórias de palavras-passe acabam da mesma maneira: alguém tinha o teu segredo guardado nalgum sítio, e perdeu-o.

Tanto faz o ano. Ao princípio estava num ficheiro de texto simples de um computador partilhado e bastou pedir ao sistema que o imprimisse. Em 1979, Morris e Thompson contaram como salgar e encarecer o cálculo do hash para que uma lista roubada não se transformasse de imediato numa lista de palavras-passe, o que foi uma melhoria enorme. E depois chegaram as regras de composição que nos obrigaram a pôr um símbolo no fim. Mas a forma do problema não se moveu um milímetro em todo esse tempo: há um segredo, tu sabe-lo, o servidor consegue verificá-lo e, por isso, o servidor tem alguma coisa a perder.

Tudo o que fizemos desde então consiste em tornar esse segredo mais comprido, mais esquisito, mais salgado, mais lento de partir. Ninguém pôs a pergunta anterior: e se não houvesse segredo partilhado?

1976 a ideia de que um segredo pode ter duas metades

Em 1976, Whitfield Diffie e Martin Hellman publicaram New Directions in Cryptography. A ideia era quase insultuosa de tão simples: uma chave pode partir-se em dois bocados que não são intermutáveis. Um distribui-se aos quatro ventos; o outro não sai de tua casa. O que assinas com a privada verifica-se com a pública, mas a pública não serve para assinar coisa nenhuma.

Lê outra vez a pensar num servidor: o site já não precisa de guardar nada com que se possa entrar. Só a metade que não abre nada.

Que a ideia tenha demorado quase meio século a chegar ao ecrã do teu banco não diz grande coisa a favor do nosso sector. Os certificados de cliente existiam e funcionavam; o que não existia era uma forma de os usar que não exigisse um mestrado. A criptografia estava resolvida. A usabilidade, não.

2013 alguém se põe de acordo, para variar

Em 2013 nasceu a FIDO Alliance, um consórcio industrial com um objectivo declarado e pouco modesto: reduzir a dependência das palavras-passe. O importante não foi a tecnologia — essa já cá estava — mas sim que fabricantes, navegadores e serviços se sentassem a acordar o mesmo protocolo. Soa a burocracia e era exactamente o que faltava: um mecanismo de autenticação que só funciona num navegador e com um serviço não é um mecanismo, é uma anedota.

2019 o navegador aprende a fazer criptografia

Em Março de 2019, o WebAuthn passou a recomendação do W3C. Em português corrente: qualquer página podia já pedir ao navegador — com uma API padrão, sem plugins nem drivers — que gerasse um par de chaves e assinasse com ele.

O fluxo, sem enfeites, é este. Quando te registas, o teu dispositivo cria um par de chaves novo, específico para aquele site. Manda a pública. Fica com a privada, guardada pelo próprio dispositivo e protegida pela tua impressão digital, pela tua cara ou pelo PIN dele. Quando voltas, o site envia-te um desafio ao acaso, o teu dispositivo assina-o, e o site verifica a assinatura com a pública que já tinha.

Repara no que não acontece: não viaja segredo nenhum. O servidor nunca teve a tua chave privada, portanto não a pode perder. Se amanhã derramarem a base de dados inteira, o que levam é uma lista de chaves públicas — mais ou menos como roubar a lista telefónica. Não há hashes para passar por uma GPU nem dicionário para experimentar. Não é que seja difícil: é que ali não há nada que valha.

O efeito colateral é maior do que a ideia

Quando o teu dispositivo cria esse par de chaves, ata-o ao domínio. A chave que guardou para oteubanco.pt só é oferecida a oteubanco.pt. Não é uma política, nem um aviso, nem um alerta vermelho na barra: é que a chave para oteubanc0-seguranca.com não existe. O navegador não a encontra porque nunca foi criada.

Isto mata o phishing. Não o reduz: deixa-o sem mecanismo. Todo o negócio do phishing consiste em tu poderes escrever a tua palavra-passe no site errado, e andamos há anos a tentar resolver isso com formação de utilizadores e campanhas de sensibilização. Tudo isso era tratar o sintoma. O teu olho deixa-se enganar por um URL parecido; o teu telemóvel, não. Não lê: compara cadeias de caracteres.

E de caminho leva também a reutilização, que era o outro pecado capital. Cada site tem o seu par de chaves. Não há nada para reutilizar nem que queiras.

2022 os três que mandam assinam a paz

Em Maio de 2022, a Apple, a Google e a Microsoft anunciaram em conjunto que iam alargar o suporte das credenciais FIDO — as passkeys — nas suas plataformas e navegadores.

Foi isso que transformou isto de uma nota técnica em algo que consegues explicar à tua mãe. Até aí, WebAuthn significava quase sempre uma chave física USB: excelente, e para três pessoas. A passkey vive onde já tens o telemóvel na mão e desbloqueia-se com a cara.

O que não resolve

Agora as letras pequenas, porque o sector vai passar os próximos anos a fingir que não existem.

A recuperação continua a ser o ponto mole. O buraco não desapareceu: mudou-se. Se perderes o dispositivo, alguém tem de decidir que és tu, e essa decisão toma-se quase sempre por email, por SMS ou a falar com um humano num call center. Esse humano é exactamente o mesmo alvo de antes. Blindaste a porta da frente e a das traseiras continua onde estava.

A sincronização prende-te a um ecossistema. As passkeys são cómodas porque a tua plataforma as replica entre os teus aparelhos. O que é outra maneira de dizer que as tuas chaves vivem no porta-chaves de uma empresa concreta. Sair de lá não é impossível, mas também não é um botão. Trocaste o problema de decorar pelo de pertencer.

E continuas a precisar de entrar se perderes o telemóvel. O que na prática significa que quase nenhum site tirou a palavra-passe: escondeu-a atrás de um «problemas ao entrar?». Enquanto esse link existir, a palavra-passe existe, e é tão má como sempre foi. A corrente parte-se pelo método mais fraco que aceitares, não pelo mais elegante que ofereceres.

Que fazer entretanto

Activa passkeys onde tas oferecerem e começa pelo que mais dói se cair: o email, o banco, a conta que usas para entrar nas outras. É das poucas melhorias de segurança que ainda por cima te poupa trabalho.

E não te iludas: vais continuar a ter palavras-passe durante anos, nem que seja como plano B. Que sejam compridas, diferentes em cada site e que estejam num gestor. Se quiseres uma que não saia da tua cabeça, usa o gerador; se quiseres saber se a que tens aguenta alguma coisa, passa-a pelo verificador.

A velha pergunta da sentinela — és dos nossos? — tem finalmente uma resposta diferente. Durante décadas respondemos a dizer uma palavra que se podia ouvir. Agora respondemos com uma assinatura que só o teu dispositivo consegue fazer, sem que a palavra chegue sequer a existir. É a primeira vez que mudámos a pergunta em vez da palavra.


Fontes: W. Diffie e M. Hellman, «New Directions in Cryptography», IEEE Transactions on Information Theory, 1976 · R. Morris e K. Thompson, «Password Security: A Case History», Communications of the ACM, 1979 · FIDO Alliance, constituída em 2013 · «Web Authentication: An API for accessing Public Key Credentials», recomendação do W3C, Março de 2019 · anúncio conjunto da Apple, Google e Microsoft sobre o suporte de passkeys, Maio de 2022.

← Voltar ao blog