Quão forte tem de ser uma palavra-passe

O que a entropia em bits mede de facto, porque é que o comprimento vence a sopa de símbolos, quanto custa a reutilização, e onde encaixam as frases-passe e os gestores de palavras-passe.

Para uma conta que não queira perder, use uma palavra-passe gerada aleatoriamente com pelo menos 16 carateres, ou uma frase-passe com pelo menos 5 palavras escolhidas ao acaso, e use-a exatamente num só site. Isso dá 65 a 95 bits de entropia, folgadamente fora do alcance da força bruta, e a parte do "um só site" conta mais do que a força. Segue-se o raciocínio por trás destes números.

Entropia em bits

A entropia mede de quantas possibilidades igualmente prováveis a palavra-passe foi retirada, expressa como uma potência de dois. Quarenta bits de entropia significam uma entre 2^40 possibilidades, cerca de um bilião, e cada bit adicional duplica o trabalho de a adivinhar. A fórmula é bits = comprimento x log2(tamanho do conjunto de carateres), por isso as letras minúsculas valem 4,7 bits cada, as letras e dígitos 5,95, todo o ASCII imprimível 6,57 e uma palavra de uma lista de 7776 palavras 12,9:

Palavra-passeEntropia
8 letras minúsculas38 bits
12 letras e dígitos71 bits
12 carateres, ASCII completo79 bits
16 letras e dígitos95 bits
5 palavras aleatórias65 bits
6 palavras aleatórias78 bits

Estas contas só se aplicam se a palavra-passe tiver saído de um processo verdadeiramente aleatório. Tr0ub4dor&3 são 11 carateres de um conjunto de 95, o que a fórmula avalia em 72 bits, mas é uma palavra de dicionário com substituições previsíveis e uma ferramenta de quebra chega lá muito mais depressa. A entropia descreve o gerador, não a cadeia de carateres.

O que os bits compram

A velocidade de adivinhação depende da forma como o site guardou a palavra-passe. Contra um formulário de entrada em funcionamento com limitação de tentativas, um atacante consegue umas quantas tentativas por hora. Contra uma base de dados roubada, depende do hash: um hash rápido como o MD5 ou o SHA-1 pode ser testado a ritmos enormes em placas gráficas de consumo, ao passo que um hash de palavras-passe feito de propósito, como o bcrypt ou o Argon2, é mais lento em muitas ordens de grandeza.

A seguir está o pior caso, um hash rápido e sem sal, com um ritmo assumido de dez mil milhões de tentativas por segundo. Serve para mostrar com que rapidez a curva se dobra, e não é uma medição:

EntropiaTempo para esgotar todo o espaço
40 bitsCerca de dois minutos
50 bitsCerca de um dia
60 bitsAlguns anos
70 bitsAlguns milhares de anos
80 bitsMilhões de anos

Em média, um atacante consegue em metade desse tempo. A leitura prática: abaixo de 50 bits não vale grande coisa contra um ataque offline, 60 a 70 bits chegam para quase tudo, e a partir dos 80 bits fica-se descansado.

O comprimento vence a sopa de símbolos

Pegue numa palavra-passe de 12 carateres feita de letras e dígitos (71 bits). Acrescentar pontuação, alargando o conjunto de 62 para 95 carateres, leva-a aos 79 bits. Acrescentar antes mais duas letras ou dígitos leva-a aos 83. Cada caráter adicional multiplica o espaço de procura pelo alfabeto inteiro, ao passo que alargar o alfabeto acrescenta apenas cerca de 0,6 bits por cada caráter que já lá estava. O comprimento ganha, e continua a ganhar.

As regras de composição ("tem de conter uma letra maiúscula, um dígito e um símbolo") empurram as pessoas para um conjunto estreito de padrões: maiúscula à frente, dígito e ponto de exclamação no fim. As ferramentas de quebra experimentam primeiro essas transformações. É uma das razões por que as orientações do NIST para identidade digital se afastaram das regras de composição e das mudanças periódicas obrigatórias, a favor do comprimento e da verificação contra listas de palavras-passe já expostas em fugas de dados.

A reutilização é o risco a sério

Quase ninguém tem uma conta comprometida por força bruta. O que acontece é credential stuffing: um site fraco é invadido, os pares de email e palavra-passe são publicados e ferramentas automáticas experimentam cada par em centenas de outros serviços. Se usou no seu email a mesma palavra-passe do fórum invadido, a força dela é irrelevante. Foi entregue, não foi adivinhada.

O phishing funciona da mesma maneira: uma palavra-passe de 30 carateres escrita numa página de entrada falsa e convincente vale exatamente o mesmo que password1. Assim, por ordem de importância:

  1. Uma palavra-passe diferente em cada site.
  2. Autenticação de dois fatores em tudo o que importe, sobretudo no email, já que é por aí que se repõe tudo o resto.
  3. Comprimento suficiente para que a quebra offline seja um caso perdido.

Frases-passe

Uma frase-passe são várias palavras escolhidas ao acaso a partir de uma lista, por exemplo harvest-cobalt-mural-drift-plinth. A 12,9 bits por palavra, cinco palavras dão 65 bits e seis dão 78.

Há duas condições para que isto funcione. As palavras têm de ser escolhidas ao acaso, por dados ou por software, e não escolhidas por si. E a força vem do número de palavras, não do separador nem de pôr uma letra em maiúscula: a letra de uma canção ou uma citação quase não tem entropia, porque sai de um conjunto pequeno de coisas que as pessoas dizem.

As frases-passe valem a pena nas poucas palavras-passe que se escrevem de cabeça: a entrada no dispositivo, a palavra-passe principal do gestor, a cifra do disco.

Onde encaixa um gestor

Um gestor de palavras-passe transforma "inventar e memorizar 200 palavras-passe únicas" em "memorizar uma frase-passe comprida". Gera cadeias de alta entropia e preenche-as no domínio certo, o que trava o phishing porque não faz preenchimento automático num endereço parecido.

Concentra o risco, o que é uma objeção legítima e ainda assim a melhor troca: um cofre protegido por uma frase-passe comprida e por um segundo fator vale mais do que uma palavra-passe partilhada por dezenas de sites de qualidade desconhecida.

Uma nota sobre hashing

O hashing é o outro lado da autenticação. Um serviço bem construído guarda um hash com sal produzido por um algoritmo deliberadamente lento, nunca a palavra-passe em si, para que uma fuga não entregue de imediato o texto simples. Os hashes de uso geral como o SHA-256 foram feitos para serem rápidos, o que os torna excelentes para somas de verificação de ficheiros e uma má escolha para guardar palavras-passe. Fazer o hash da sua própria palavra-passe para "a tornar mais forte" não consegue nada: o resultado é apenas tão difícil de adivinhar quanto a entrada.