"Use uma senha forte" é um conselho comum, mas "forte" é vago. Entropia é a medida real por trás desse conselho — um número, em bits, que indica quantas tentativas um atacante precisa no pior caso. Este artigo explica o que esse número significa e como calculá-lo para uma senha que você realmente esteja escolhendo.
Resumo
- Entropia (em bits) mede o tamanho do espaço de busca que um atacante precisa percorrer por força bruta:
entropia = log2(tamanho_do_conjunto_de_caracteres ^ comprimento). - Cada caractere adicional multiplica o espaço de busca; cada tipo de caractere adicional o multiplica apenas por um fator fixo e comparativamente pequeno.
- Uma senha de 12 caracteres usando apenas minúsculas tem menos entropia do que uma de 8 caracteres que mistura os quatro tipos de caractere — mas uma frase-senha de 20 caracteres em minúsculas supera ambas.
- Senhas geradas por CSPRNG atingem exatamente sua entropia teórica; senhas escolhidas por humanos quase nunca conseguem, porque humanos não são aleatórios.
Resposta curta
Entropia em bits é log2(N), onde N é o número total de senhas igualmente prováveis para aquele comprimento e conjunto de caracteres. Na prática: entropia = comprimento × log2(tamanho_do_conjunto_de_caracteres). Uma senha de 16 caracteres extraída uniformemente dos 95 caracteres ASCII imprimíveis tem aproximadamente 16 × log2(95) ≈ 105 bits de entropia — comparável a uma chave AES de 256 bits em termos de resistência prática a força bruta, o que é excessivo em comparação, mas 105 bits já está muito além do que qualquer hardware atual ou previsível consegue esgotar. O PassGenerate gera senhas dessa forma, usando o CSPRNG da Web Crypto API, portanto esse valor de entropia é real, não apenas teórico.
A fórmula da entropia, passo a passo
A entropia assume que cada caractere é escolhido de forma independente e uniformemente aleatória a partir de um conjunto fixo. Dado um conjunto de caracteres de tamanho C e uma senha de comprimento L, o número de senhas possíveis é C^L, e a entropia em bits é:
entropia = L × log2(C)
| Conjunto de caracteres | Tamanho do conjunto (C) | Bits por caractere (log2 C) |
|---|---|---|
| Apenas dígitos (0-9) | 10 | 3.32 |
| Minúsculas (a-z) | 26 | 4.70 |
| Minúsculas + dígitos | 36 | 5.17 |
| Maiúsculas/minúsculas + dígitos | 62 | 5.95 |
| Maiúsculas/minúsculas + dígitos + símbolos (~33 comuns) | 95 | 6.57 |
Comprimento vs. tamanho do conjunto de caracteres: por que o comprimento vence
Esta tabela mostra por que o NIST SP 800-63B reduz a importância das regras de complexidade forçada em favor do comprimento:
| Comprimento | Apenas dígitos | Minúsculas | Maiúsculas+minúsculas+dígitos+símbolos |
|---|---|---|---|
| 8 | 27 bits | 38 bits | 52 bits |
| 12 | 40 bits | 56 bits | 79 bits |
| 16 | 53 bits | 75 bits | 105 bits |
| 20 | 66 bits | 94 bits | 131 bits |
| 24 | 80 bits | 113 bits | 157 bits |
| 32 | 106 bits | 150 bits | 210 bits |
Observe que uma senha de 8 caracteres usando os quatro tipos de caractere (52 bits) tem menos entropia do que uma senha de 12 caracteres inteiramente em minúsculas (56 bits). Essa é a base matemática de uma conclusão bem conhecida: adicionar quatro caracteres aleatórios a mais faz mais pela sua segurança do que forçar símbolos e dígitos em uma senha curta. É também por isso que frases-senha longas geradas aleatoriamente (várias palavras aleatórias de dicionário) podem ser tanto mais fortes quanto mais fáceis de digitar do que um amontoado curto de símbolos — cada palavra adicional geralmente acrescenta 11-13 bits se extraída de uma lista de alguns milhares de palavras, o que se acumula rapidamente em 4-6 palavras.
Por que "parecer aleatório" não é o mesmo que ser aleatório
Os cálculos de entropia pressupõem verdadeira aleatoriedade uniforme. Senhas criadas por humanos violam sistematicamente essa suposição mesmo quando parecem complexas: padrões de teclado (Qwerty123!), substituições estilo leetspeak (S3nh@123), e datas ou nomes com um símbolo anexado reduzem todos a entropia efetiva muito abaixo do que o número de caracteres sugere, porque as ferramentas de quebra dos atacantes são construídas exatamente em torno desses padrões. Uma senha pode parecer aleatória a olho humano e ainda assim cair entre as primeiras milhões de tentativas de um ataque de dicionário direcionado.
Essa é a razão prática para preferir um gerador que use um gerador de números pseudoaleatórios criptograficamente seguro (CSPRNG) em vez de inventar você mesmo uma senha. Math.random() em JavaScript não é criptograficamente seguro e não é adequado para geração de senhas — ele é semeado e gerado por um algoritmo previsível o suficiente para ser reconstruído a partir de algumas saídas em alguns mecanismos. O crypto.getRandomValues() da Web Crypto API extrai da fonte de aleatoriedade criptográfica do sistema operacional, então cada caractere é genuína e independentemente aleatório, e a matemática de entropia acima realmente se aplica.
Como isso se parece com hardware real
Os números em bits acima são úteis para comparação, mas não dizem quanto tempo um ataque real realmente leva — isso depende do hardware que faz as tentativas, e esse hardware fica mais rápido a cada ano. A Hive Systems publica um benchmark anual exatamente sobre isso, testando a velocidade de força bruta em uma frota alugada de GPUs de consumo. A tabela de 2026 deles coloca uma senha de 8 caracteres gerada aleatoriamente com o conjunto completo de caracteres mistos (maiúsculas, minúsculas, dígitos, símbolos) em aproximadamente 132 anos para ser quebrada — abaixo dos 164 anos em 2025 e 225 anos em 2024, uma queda de cerca de 20-25% ao ano à medida que o hardware de GPU melhora. Uma senha de 8 caracteres apenas em minúsculas caiu ainda mais rápido: de três semanas para ser quebrada em 2025 para cerca de duas semanas em 2026.
Duas coisas desse benchmark valem a pena conhecer. Primeiro, a tendência é unidirecional — o que hoje parece "seguro" fica mais fraco a cada ano apenas por causa das melhorias de hardware, o que é um argumento do mundo real para preferir senhas mais longas em vez do mínimo atual. Segundo, e de forma um tanto contraintuitiva, os chips aceleradores de IA especializados construídos para treinar modelos de linguagem se mostraram não mais rápidos para quebrar senhas por força bruta do que GPUs de jogos equivalentes, e até mais lentos em alguns testes — quebrar senhas é um problema numérico puro que não se beneficia das otimizações de multiplicação de matrizes em que o hardware de IA se baseia.
Quantos bits você realmente precisa?
Não existe um único número universal, porque depende contra o que você está se defendendo:
- ~40-60 bits: Resistente a tentativas casuais e ataques automatizados de pequena escala, mas ao alcance de um ataque offline bem equipado contra um banco de dados com hash fraco. Adequado apenas para contas genuinamente de baixo valor e baixa consequência.
- ~70-90 bits: Confortavelmente fora do alcance de força bruta mesmo com hardware de quebra otimizado, para qualquer prazo de ataque realista. Um objetivo razoável para a maioria das contas pessoais.
- 100+ bits: Efetivamente inalcançável por força bruta com o poder computacional atual ou previsível, criptográfico no mesmo sentido de uma chave de criptografia forte. Apropriado para a senha mestra do seu gerenciador de senhas ou outros pontos únicos de falha.
Principais conclusões
- Entropia é
comprimento × log2(tamanho_do_conjunto_de_caracteres)— o comprimento tem um efeito linear, o tamanho do conjunto de caracteres tem um efeito logarítmico, por isso o comprimento domina. - Uma senha curta com todos os tipos de caractere pode ter menos entropia do que uma senha mais longa com apenas um tipo.
- A entropia efetiva só é igual à entropia teórica quando os caracteres são genuína e uniformemente aleatórios — o que um CSPRNG garante e a escolha humana geralmente não alcança.
- Busque 70+ bits para contas do dia a dia e 100+ bits para senhas mestras ou outros pontos únicos de falha.
Por que você pode confiar no PassGenerate
- As senhas são geradas localmente no seu navegador usando a Web Crypto API.
- Nenhuma senha é transmitida para servidores.
- Usa um gerador de números pseudoaleatórios criptograficamente seguro (CSPRNG).
- Segue as melhores práticas modernas de segurança recomendadas pelo NIST e OWASP.
Referências
- Tabela de senhas 2026 da Hive Systems (dados de benchmark de força bruta)
- NIST SP 800-63B – Diretrizes de identidade digital
- OWASP Authentication Cheat Sheet
Conclusão
Entropia é uma medida precisa e calculável da força de uma senha, não uma noção vaga de "complexidade". O comprimento importa mais do que misturar forçosamente tipos de caractere porque aumenta linearmente o espaço de busca, enquanto o tamanho do conjunto de caracteres só o aumenta de forma logarítmica — e nada disso se sustenta a menos que os caracteres sejam realmente aleatórios, razão pela qual um gerador baseado em CSPRNG como o PassGenerate produz senhas que atingem exatamente sua entropia teórica, algo que uma senha escolhida por um humano praticamente nunca alcança.