Quão forte tem de ser uma palavra-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-passe | Entropia |
|---|---|
| 8 letras minúsculas | 38 bits |
| 12 letras e dígitos | 71 bits |
| 12 carateres, ASCII completo | 79 bits |
| 16 letras e dígitos | 95 bits |
| 5 palavras aleatórias | 65 bits |
| 6 palavras aleatórias | 78 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:
| Entropia | Tempo para esgotar todo o espaço |
|---|---|
| 40 bits | Cerca de dois minutos |
| 50 bits | Cerca de um dia |
| 60 bits | Alguns anos |
| 70 bits | Alguns milhares de anos |
| 80 bits | Milhõ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:
- Uma palavra-passe diferente em cada site.
- Autenticação de dois fatores em tudo o que importe, sobretudo no email, já que é por aí que se repõe tudo o resto.
- 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.