"Use maiúsculas, minúsculas, números e um símbolo." Durante anos foi
essa a receita repetida em todo cadastro, e ela produziu senhas como
Senha@123: cumpre todas as regras e é uma das primeiras que
um atacante testa. Uma boa senha se define por quão difícil é
adivinhá-la, e há uma forma objetiva de medir isso: a entropia.
Este guia explica o cálculo, compara exemplos reais e resume o que as
diretrizes atuais do NIST recomendam.
O que é entropia
A entropia mede, em bits, quantas tentativas um atacante precisaria fazer, no pior caso, para acertar. Cada bit adicional dobra o trabalho. Uma senha com 50 bits de entropia tem cerca de 250 (um quatrilhão) de possibilidades.
Para uma senha gerada de forma realmente aleatória:
entropia = comprimento × log₂(tamanho do conjunto de símbolos)
Note a ressalva: a fórmula só vale quando cada símbolo é sorteado ao
acaso. Senhas escolhidas por pessoas, como nomes, datas e palavras com
"trocas" previsíveis (a → @, o → 0), têm
entropia muito menor do que o cálculo sugere, porque os atacantes já
testam esses padrões.
Comparando exemplos
8 caracteres, 94 símbolos possíveis: 8 × 6,55 = 52,4 bits
12 caracteres, 94 símbolos possíveis: 12 × 6,55 = 78,7 bits
16 letras minúsculas (26 símbolos): 16 × 4,70 = 75,2 bits
4 palavras sorteadas de 7.776: 4 × 12,92 = 51,7 bits
6 palavras sorteadas de 7.776: 6 × 12,92 = 77,5 bits
PIN de 10 dígitos: 10 × 3,32 = 33,2 bits
Dois pontos chamam atenção. Primeiro, 16 letras minúsculas (75 bits) superam 8 caracteres com todos os tipos de símbolo (52 bits): comprimento pesa mais que variedade. Segundo, a "frase-senha" formada por palavras sorteadas de uma lista de 7.776 palavras (o método conhecido como Diceware, em que cada palavra equivale a cinco lançamentos de dado) chega a mais de 77 bits com seis palavras, e é muito mais fácil de lembrar que uma sequência de símbolos.
Quanto tempo isso significa
O tempo depende de como o atacante consegue testar. Existem dois cenários bem diferentes:
- Ataque online: o atacante tenta senhas no formulário de login. Limites de tentativas, atrasos e bloqueios tornam isso lento; a entropia exigida é menor.
- Ataque offline: o atacante obteve um banco de dados vazado com os hashes das senhas e testa palpites em seu próprio equipamento, sem limite. Aqui a entropia da senha e o algoritmo de hash usado pelo site decidem tudo.
Para ter uma ordem de grandeza, suponha um atacante que teste 10 bilhões de senhas por segundo, um valor plausível contra hashes rápidos em placas de vídeo:
52 bits (8 caracteres aleatórios): ≈ 6,1 × 10¹⁵ / 10¹⁰ ≈ 7 dias
79 bits (12 caracteres aleatórios): ≈ 4,8 × 10²³ / 10¹⁰ ≈ 1,5 milhão de anos
Esse cálculo mostra também por que o servidor não deve guardar senhas com hashes rápidos como o SHA-256 puro: algoritmos lentos e projetados para isso reduzem drasticamente a taxa de tentativas do atacante. O tema é detalhado em MD5, SHA-1 e SHA-256: qual usar e para quê.
O que o NIST recomenda
O NIST, órgão de padrões dos Estados Unidos cujas diretrizes de autenticação (série SP 800-63B) influenciam boa parte do setor, mudou de orientação nos últimos anos. Em resumo:
- Priorize o comprimento. Na revisão 4, o mínimo é de 15 caracteres quando a senha é o único fator de autenticação, e de 8 quando há um segundo fator.
- Abandone regras de composição. Exigir maiúscula, número e símbolo leva a padrões previsíveis e não aumenta a segurança de forma confiável.
- Não force trocas periódicas. Troque a senha quando houver suspeita de vazamento, e não a cada 90 dias, o que estimula variações fracas (
Senha1,Senha2). - Compare com listas de senhas vazadas ou comuns e recuse as que aparecem nelas.
- Permita colar e aceite senhas longas, de forma que gerenciadores de senha funcionem sem atrito.
Boas práticas para o dia a dia
- Uma senha diferente para cada serviço. Quando um site vaza, atacantes testam a mesma combinação em todos os outros.
- Use um gerenciador de senhas. Ele cria e guarda senhas longas e aleatórias, e você só decora uma senha-mestra forte (uma frase-senha é ideal).
- Ative a verificação em duas etapas onde estiver disponível. Ela protege mesmo quando a senha vaza.
- Prefira senhas geradas ao acaso a senhas inventadas. O gerador de senha permite escolher o tamanho e os tipos de caractere e mostra um indicador de força.
Para quem desenvolve
Do lado do sistema, a regra de ouro é nunca guardar a senha em si, nem um hash rápido dela: use Argon2id, bcrypt, scrypt ou PBKDF2, com salt individual. Se precisar proteger dados reversíveis a partir de uma senha, use criptografia autenticada, como a demonstrada na ferramenta de criptografia AES. E lembre-se: o Base64 não protege nada, como explicado em Base64 não é criptografia.