XKCD #936 é o cartoon mais citado e mais mal-explicado sobre senha. A frase correct horse battery staple não é forte porque palavras são mais fáceis de digitar que símbolos. É forte porque um sorteio de 4 palavras numa lista de 7776 cria um espaço de busca de 7776⁴ ≈ 3,66 × 10¹⁵ combinações — cerca de 52 bits. A matemática é a mesma que se aplica a caracteres; palavras só sobrevivem melhor à memória humana. Cada resultado aqui mostra a contagem de bits, o tamanho da wordlist e os quatro cenários de quebra. Tudo roda no seu navegador.
O momento XKCD #936
A maioria dos artigos que citam o cartoon erra a lição. Dizem que ele demonstra que “palavras são mais fortes que caracteres aleatórios”, o que é falso. Palavras sorteadas de uma wordlist fixa são mais fracas por token que caracteres do ASCII imprimível — 12,9 bits por palavra contra EFF Long, contra ~6,57 bits por caractere contra os 95 do ASCII. A razão da frase-senha do cartoon vencer é comprimento: quatro palavras a ~13 bits cada dão 52 bits, enquanto o padrão arcaico Tr0ub4dor&3 fica próximo de 28 bits depois que o engine de regras do atacante aplica as substituições óbvias.
O ponto real do cartoon é sobre espaço de busca. Um atacante que sabe que você usou a wordlist EFF testa 7776n combinações, não 95m. Contar a construção pro atacante não ajuda — é a premissa de qualquer modelo de ameaça sério (princípio de Kerckhoffs). Cabe ao defensor escolher palavras suficientes pra deixar o espaço inviável. Cinco palavras EFF Long passam de 64 bits. Seis passam de 77.
Como funciona a entropia de uma frase-senha
Uma linha de matemática: bits = quantidade_de_palavras × log₂(tamanho_da_wordlist). O tamanho da wordlist é o “alfabeto” pra esse tipo de segredo; a quantidade de palavras é o comprimento. Ambos os inputs ficam visíveis no widget acima — o número é auditável.
Pontos de referência contra EFF Long (7776 palavras, 12,92 bits por palavra):
- 3 palavras — 38,8 bits. Razoável. Vulnerável a ataque offline dedicado.
- 4 palavras — 51,7 bits. Razoável. Cerca de 1 hora contra MD5 numa RTX 4090; cerca de 2.500 anos contra bcrypt.
- 5 palavras — 64,6 bits. Forte. Cerca de 440 anos contra MD5; 9 bilhões de anos contra bcrypt. O ancoramento do XKCD.
- 6 palavras — 77,5 bits. Muito forte. Milhões de anos contra MD5; o sol queima inteiro antes do bcrypt terminar. Default deste gerador.
- 7+ palavras — 90,4+ bits. Extrema. Nada hoje fabricável quebra isso, independente da escolha de hash do servidor.
EFF Short v1 (1296 palavras, 10,34 bits por palavra) precisa de mais palavras pra equiparar: 5 palavras curtas ≈ 51,7 bits — mesma entropia que 4 palavras longas, com palavras menores e mais fáceis de ditar. É matemática honesta, não milagre.
Escolhendo uma wordlist
Este gerador entrega quatro wordlists. As diferenças são reais e pequenas:
- EFF Long (7776) — substantivos e verbos comuns do inglês. Melhor entropia por palavra. Algumas entradas obscuras (
zinger,ziplock) mas em geral familiares. Default pra usuários em inglês. - EFF Short v1 (1296) — palavras menores e mais familiares. Entropia menor por palavra. Use quando precisar ditar a frase-senha por telefone ou digitar em teclado pequeno.
- Diceware Original (Arnold Reinhold, 7776) — a lista de 1995. Inclui entradas de um caractere, abreviações (
a&p) e números. Mesma entropia da EFF Long mas mais difícil de memorizar. - EFF-style PT-BR (nossa lista, 7776, CC0) — português brasileiro, curada pra ser ASCII puro (sem acentos, sem
ç) para digitar em qualquer teclado. Default pra usuários em português.
Se não souber qual escolher, fique com o default do seu locale. A diferença de entropia por palavra entre EFF Long e EFF Short v1 é de 2,6 bits — menos do que acrescentar uma palavra à contagem. Pra maioria dos casos reais, quantidade de palavras pesa mais que tamanho da wordlist.
Diceware — o modo paranoico
O toggle Diceware do widget expõe as rolagens 5d6 (ou 4d6 para a EFF Short) que geraram cada palavra. Útil em duas situações:
- Verificação. Se você não confia no RNG do navegador, procure cada rolagem na wordlist EFF ou Reinhold publicada em outro dispositivo e confirme que a palavra bate. Isso prova que o gerador não está mentindo sobre como sorteou.
- Geração física. Role cinco dados reais (ou um dado cinco vezes), procure a palavra numa wordlist impressa, repita pra cada posição. O resultado é uma frase-senha que nunca tocou rede, nunca tocou o gerador de aleatoriedade do sistema operacional, e é genuinamente sua. Mais lento — cerca de 30 segundos por palavra — mas criptograficamente equivalente.
EFF Short v1 usa 4d6 em vez de 5d6 porque 1296 = 6⁴. O mapeamento de dados é canônico: rolagem 11111 sempre mapeia pra primeira entrada, rolagem 66666 pra última. A ordem no nosso array codificado preserva o mapeamento original byte-por-byte — verificável pelos arquivos fonte (SHA-256 documentado no header de cada wordlist).
Quando usar frase-senha vs senha
Ambas são sorteios aleatórios; a diferença é o que você está otimizando. Regras rápidas:
- Memorizar (senha-mestra de gerenciador, código de recuperação, qualquer coisa que você vai digitar de memória): frase-senha. Seis palavras EFF Long são 77 bits e recuperáveis pela memória; uma senha aleatória de 13 caracteres tem a mesma entropia e ninguém memoriza.
- Guardar no gerenciador (a maioria dos logins de site): senha aleatória. Mais entropia por caractere quer dizer que uma senha de 20 chars ocupa menos espaço e digita mais rápido quando o autocomplete falha.
- Ditar pra alguém (entregar credencial de servidor, ler senha de Wi-Fi em voz alta): frase-senha. Palavras sobrevivem melhor à ruído de telefone que símbolos.
- Campo com limite de 16 caracteres (alguns bancos brasileiros, alguns sistemas legados): senha. Uma frase-senha de 6 palavras precisa de mais caracteres do que o limite permite. Pegue a senha aleatória mais forte que couber.
Os dois geradores não estão em competição. São ferramentas pra inputs diferentes do mesmo trabalho.
Wordlist PT-BR — metodologia
A wordlist EFF-style PT-BR foi construída do zero por nós, não traduzida. Pipeline:
- Corpus inicial: hermitdave/FrequencyWords (derivado do OpenSubtitles, CC0-equivalent).
- Filtros automáticos: 4-8 caracteres, ASCII puro (sem acentos, sem ç), sem dígitos ou hífens, sem stopwords, sem nomes próprios catalogados, sem cognatos óbvios do inglês.
- Culling manual de 224 palavras por revisão humana — 158 nomes próprios escapados, 59 loanwords e 9 cognatos óbvios do inglês como hotel, rádio, vídeo. Documentado em
docs/wordlist-drafts/eff-pt-br.culling-notes.md. - Output final: 7776 palavras exatas, ordem alfabética, licença CC0, SHA-256 selado no header do arquivo TS.
Concorrentes mainstream raramente publicam essa metodologia. Nós publicamos porque honestidade sobre como o segredo é gerado é parte do produto.

