O jogo das palavras-passe, e as regras que não protegem

Publicado a por David Carrero

Em junho de 2023, um programador chamado Neal Agarwal publicou no seu site, neal.fun, uma coisa intitulada The Password Game. Pede-te que escrevas uma palavra-passe. Depois que tenha pelo menos cinco caracteres. Depois um número. Depois uma maiúscula. Depois um carácter especial.

Até aqui não é um jogo. É o formulário do teu banco.

Depois começa a outra parte. Que os dígitos somem 25. Que contenha o nome de um mês. Que contenha algarismos romanos cujo produto seja 35. Que inclua a resposta do Wordle de hoje. Que identifique o país de uma fotografia. Que contenha a melhor jogada de uma posição de xadrez, em notação algébrica. São trinta e cinco regras, e pelo caminho nasce dentro da tua palavra-passe um emoji de ovo chamado Paul, que tem de ser alimentado com lagartas, enquanto uma chama vai comendo os teus caracteres se não a apagares a tempo.

O jogo resulta por uma razão incómoda: ninguém tem de te explicar a piada. Percebe-la no primeiro segundo, porque andas a sofrer esse mecanismo há meia vida. Agarwal limitou-se a continuar a puxar o fio.

E é aí que convém abrandar. As quatro primeiras regras não foram ele que as inventou.

De onde vieram as regras que já conhecias

Uma maiúscula, um número, um símbolo e um comprimento mínimo não são folclore da internet: são a tradução prática de um documento do NIST norte-americano publicado em 2003, o SP 800-63, escrito por Bill Burr. Daí desceram para os formulários de meio mundo, e daí para a tua cabeça.

Contámos a história toda em o que é uma palavra-passe: Burr não tinha dados sobre palavras-passe reais — mal existiam — por isso raciocinou para o que parecia sensato. Mais variedade de caracteres, mais combinações, mais segurança. Em 2017 o próprio NIST deu meia-volta, e Burr disse ao Wall Street Journal que lamentava boa parte do que tinha escrito.

Portanto o jogo de Agarwal não exagera uma política de segurança. Continua uma lista que já estava errada na primeira linha. A única diferença entre «tem de conter um símbolo» e «os dígitos têm de somar 25» é que à primeira já te habituaste.

O que essas regras nunca mediram

É aqui que a piada deixa de ter graça, porque se pode medir.

Estes números saem do verificador deste site, com o seu modelo declarado: um ataque offline contra uma hash rápida, a 10¹² tentativas por segundo. Não são estimativas de folheto; é o que vais ver se escreveres estas mesmas cadeias lá.

palavra-passe regras que cumpre tentativas aguenta
Palavrapasse1! as quatro 3,4 × 10⁸ < 1 segundo
Outono2026! as quatro 1,0 × 10⁷ < 1 segundo
Zx9#kQ2m as quatro 3,3 × 10¹⁵ 55 minutos
seis palavras tiradas aos dados, em minúsculas nenhuma 1,1 × 10²³ 3.500 anos

A última linha não sai do verificador, sai da aritmética, e é de propósito: o verificador não pode saber que essas seis palavras vieram de um dado, por isso calcularia outra coisa. Seis lançamentos são exatamente 77,5 bits, e 77,5 bits a 10¹² tentativas por segundo são cerca de três mil e quinhentos anos. Voltamos a isso no fim.

Lê outra vez. Palavrapasse1! passa em qualquer formulário do planeta e cai antes de largares a tecla, porque a palavra está no dicionário e o resto é o adorno que toda a gente põe: maiúscula à frente, número e símbolo atrás. E a última linha, seis palavras correntes em minúsculas, não seria aceite por metade dos sites onde tens conta: não leva maiúscula, nem número, nem símbolo.

Vale a pena parar em Zx9#kQ2m, porque é o melhor caso possível da regra. Oito caracteres verdadeiramente aleatórios, com os quatro tipos, exatamente aquilo que a política de 2003 considerava uma palavra-passe exemplar. Cinquenta e cinco minutos. E é um teto: o verificador não pode saber que a escreveste ao acaso, por isso dá-te o benefício da dúvida e calcula o melhor cenário. E ninguém escreve assim, de resto. Pede a uma pessoa oito caracteres com um símbolo e o que sai é Futebol123! — 5,4 × 10⁶ tentativas, menos de um segundo.

A regra não distingue os dois. Para o formulário, Futebol123! e Zx9#kQ2m são a mesma palavra-passe. É essa a falha inteira: uma regra de composição mede a forma da cadeia, e a resistência não está na forma.

A regra dos 90 dias, ou como se inventa Inverno2026!

A outra metade da herança de 2003 é a caducidade. Muda-a de noventa em noventa dias.

Ninguém inventa uma palavra-passe nova de noventa em noventa dias. O que as pessoas fazem — o que tu fazes, e eu também — é incrementar a que já tinham. Outono2026! transforma-se em Inverno2026! e o trabalho está feito. As duas aguentam menos de um segundo, e se um atacante tiver a primeira, adivinhar a segunda não é um ataque: é preencher um espaço.

O NIST retirou a rotação obrigatória no SP 800-63B, em 2017. Na revisão de agosto de 2025 o tom endureceu: onde antes dizia que os verificadores não deveriam impor regras de composição nem exigir mudanças periódicas, agora diz que não devem fazer nenhuma das duas coisas. A mudança só se força se houver indícios de comprometimento.

Nove anos depois da primeira retratação, a tua empresa continua a pedir-te uma maiúscula todos os trimestres.

O limite de caracteres é o pior sinal de todos

Agarwal contou que a gota de água, o que o levou a fazer o jogo, foi tentar criar uma conta e ouvir que a sua palavra-passe era demasiado longa.

De todas as regras absurdas, é a única que, ainda por cima, é um mau sinal.

Um sistema que guarda a tua palavra-passe como deve não a guarda: guarda a sua hash, e uma hash mede sempre o mesmo, quer lhe dês oito caracteres quer lhe dês oitocentos. Não existe nenhuma razão de armazenamento para um limite de dezasseis. Há exatamente uma exceção técnica legítima e conhecida — o bcrypt ignora o que passar dos 72 bytes — e não explica os formulários que param aos doze.

Um teto curto não prova que estejam a guardar a tua palavra-passe em claro, mas é o tipo de pormenor que só aparece quando alguém a meteu numa coluna de base de dados de tamanho fixo. O próprio SP 800-63B pede o contrário: que se aceitem pelo menos 64 caracteres.

A regra que funciona não cabe num formulário

O incómodo de fundo é que a boa prática não se consegue exprimir como uma caixa de validação. Ninguém consegue escrever uma expressão regular para «não a usaste noutro sítio» nem para «não aparece na última fuga».

O que se consegue fazer é contar. Uma frase de palavras escolhidas aos dados — Diceware — soma 12,9 bits limpos por palavra, e esses bits são bits a sério. Com o mesmo modelo de 10¹² tentativas por segundo:

  • Cinco palavras são 64,6 bits: uns 164 dias.
  • Seis palavras são 77,5 bits: uns 3.500 anos.

Convém dizer os dois números e não só o segundo. Repete-se muito que uma frase de cinco palavras «aguenta séculos»; contra uma hash rápida não aguenta séculos: aguenta cinco meses e meio. Por isso Reinhold recomendava cinco como mínimo e seis para o que importa a sério. A sexta palavra é a que muda a escala, e é de graça.

Nenhuma das duas passaria no formulário do teu banco.

Porque é que o jogo tem graça

Quando o jogo exige que os dígitos somem 25, ris-te porque é uma condição arbitrária que não tem nada a ver com aquilo que torna uma palavra-passe segura.

Exigir um símbolo é igualmente uma condição arbitrária que não tem nada a ver com aquilo que torna uma palavra-passe segura. A diferença é que essa é servida por meia internet, e que a essa ganhámos-lhe afeto.

Se queres o resumo operacional, cabe em três linhas: usa o gerador ou uns dados, mete o resultado no gestor, e cumpre as regras do formulário acrescentando o que ele pedir, sem acreditares que isso te protegeu de alguma coisa. A maiúscula à frente e o ! no fim são uma portagem, não uma defesa.

O resto é um jogo. Está muito bem feito, e é pena que não tenha ficado por jogo.


Fontes: Neal Agarwal, «The Password Game» (neal.fun, 27 de junho de 2023), as suas 35 regras e o relato do próprio autor sobre o formulário que lhe disse que a sua palavra-passe era demasiado longa · NIST SP 800-63 (2003), SP 800-63B (2017) e SP 800-63B-4 (agosto de 2025), que passa de «não deveriam» a «não devem» quanto a regras de composição e caducidade, e pede que se aceitem pelo menos 64 caracteres · declarações de Bill Burr ao Wall Street Journal, agosto de 2017 · Arnold G. Reinhold, Diceware (1995), de onde vêm os 12,9 bits por palavra. Os tempos da tabela estão medidos com o verificador deste site, com o seu modelo declarado de 10¹² tentativas por segundo contra uma hash rápida; os de Diceware, calculados ao mesmo ritmo a partir de log₂(7.776) por palavra.

Foto de Olha Ruskykh · Pexels

← Voltar ao blog