Segurança

Como escolher e testar uma senha forte

Existe uma medida honesta de força de senha, e é só uma: entropia, contada em bits. A pegadinha é que ela não mede a string que você digitou, mede o processo que a produziu. Por isso “P@ssw0rd!” é fraca apesar dos nove caracteres com maiúscula, número e símbolo: ela é a palavra “password” com trocas que qualquer programa de quebra tenta primeiro, então sua entropia real é de poucos bits, não dos ~59 que a conta ingênua sugere. Este guia deriva a fórmula da entropia, mostra por que a “regra de complexidade” piora as senhas, por que o [NIST inverteu a própria cartilha](https://pages.nist.gov/800-63-4/sp800-63b.html) e o que fazer depois de escolher. Vá testando no [analisador de força de senha](tool:analisador-senha) enquanto lê, ele calcula tudo no seu navegador, sem enviar nada a servidor nenhum.

J-Kit18 min de leituraIntermediário
  • Senhas
  • Entropia
  • NIST 800-63B
  • Autenticação
  • Segurança

Resumo rápido

  • Entropia mede o processo de geração, não a string. “P@ssw0rd!” parece ter ~59 bits, mas como é uma palavra de dicionário com trocas óbvias, sua entropia real é de poucos bits.
  • Comprimento é a alavanca: uma passphrase de 6 palavras Diceware (~77,5 bits) rivaliza com uma senha aleatória de 12 caracteres com símbolos (~78,8 bits) e ainda é memorável.
  • O NIST SP 800-63B-4 (2025) inverteu a cartilha: mínimo de 15 caracteres para fator único, sem regras de composição, sem expiração periódica e comparação contra listas de senhas vazadas.
  • Depois de escolher: gerenciador, uma senha única por site, hash lento com salt no servidor e um segundo fator, de preferência passkey (resistente a phishing), depois TOTP.

Entropia: a única medida honesta

A força de uma senha é o número de tentativas que um atacante precisa fazer, em média, para adivinhá-la. Contar esse número diretamente é inviável, então usamos o seu logaritmo na base 2, a entropia, em bits. Cada bit dobra o espaço de busca: 40 bits são cerca de um trilhão de combinações; 80 bits são um trilhão de trilhões. O ponto que quase todo tutorial erra é este: a entropia não é uma propriedade da string. É uma propriedade do processo que a gerou. A mesma sequência de caracteres pode valer 3 bits ou 60, dependendo de como você chegou até ela.

H = L × log2(R)
H
entropia, em bits (o logaritmo do nº de combinações)
L
comprimento, número de símbolos sorteados (caracteres ou palavras)
R
tamanho do alfabeto de onde cada símbolo é sorteado
Entropia de uma senha gerada aleatoriamente. Vale APENAS se cada um dos L símbolos for escolhido de forma uniforme e independente de um alfabeto de tamanho R. Uma senha inventada por uma pessoa quase nunca satisfaz essa suposição, e sua entropia real é muito menor.

A fórmula sai de contar combinações: se você sorteia L símbolos independentes, cada um de um conjunto de R opções, há R^L senhas possíveis, e log2(R^L) = L × log2(R). Repare na palavra “sorteia”. A conta só vale com aleatoriedade uniforme, um dado, um gerador criptográfico, nunca a sua cabeça. Quando uma pessoa escolhe, ela concentra probabilidade em pouquíssimos resultados (nomes, datas, o padrão maiúscula-no-início-número-no-fim), e o atacante começa por eles. A entropia real vira o logaritmo da posição da sua senha na lista de tentativas de um bom atacante, não o log do tamanho teórico do conjunto.

8 minúsculos37,6 bits
8 alfanuméricos47,6 bits
12 com símbolos78,8 bits
4 palavras Diceware51,7 bits
6 palavras Diceware77,5 bits
Bits de entropia por estratégia de geração, calculados com H = L × log2(R) supondo sorteio uniforme. Minúsculas R=26, alfanumérico R=62, com símbolos R=95, palavra Diceware R=7.776.
Ver os dados
CategoriaValor
8 minúsculos37,6 bits
8 alfanuméricos47,6 bits
12 com símbolos78,8 bits
4 palavras Diceware51,7 bits
6 palavras Diceware77,5 bits

O gráfico conta a história inteira. Oito caracteres minúsculos aleatórios dão só 37,6 bits, dentro da faixa “fraca” de qualquer medidor. Adicionar tipos de caractere ajuda (alfanumérico sobe para 47,6), mas o salto grande vem do comprimento: doze caracteres com símbolos chegam a 78,8 bits, e, a parte contraintuitiva, seis palavras aleatórias de uma lista Diceware alcançam praticamente o mesmo (77,5 bits) sendo muito mais fáceis de lembrar. Agora o exemplo que abre o artigo, feito com números.

// "P@ssw0rd!" tratada como aleatória / treated as random
L = 9 caracteres, R = 95 (minúscula + maiúscula + dígito + símbolo)
H = 9 × log2(95) = 9 × 6,5699 ≈ 59,1 bits   ← o que a conta ingênua diz

// "P@ssw0rd!" como o que realmente é / as what it actually is
base = "password"  (entre as ~20 senhas mais vazadas do mundo)
regra = capitaliza + a→@ + o→0 + acrescenta "!"  (a mangling mais comum)
um ataque de dicionário+regras chega nela em ~16 tentativas
H_real ≈ log2(16) ≈ 4 bits   ← o que um atacante realmente gasta
A mesma string, dois números: ~59 bits se fosse aleatória, ~4 bits porque não é. O “~4” é a ordem de grandeza da posição da senha na lista de um bom atacante e depende da lista; o ponto é a distância de quinze vezes entre a aparência e a realidade.

Por que comprimento vence complexidade

Na fórmula, comprimento e alfabeto entram de formas diferentes. Aumentar o alfabeto R cresce a base uma única vez: passar de minúsculas (26) para todos os símbolos imprimíveis (95) multiplica o espaço por um fator fixo, some. Aumentar o comprimento L eleva a potência, e você pode fazer isso sem teto. Cada caractere aleatório a mais multiplica o espaço inteiro por R de novo. Por isso a complexidade se esgota rápido e o comprimento não.

Entropia (bits) por conjunto de caracteres e comprimento, com H = L × log2(R). Os valores batem com os que o [analisador de força de senha](tool:analisador-senha) usa: minúscula 26, maiúscula 26, dígitos 10, símbolos 33 (total imprimível 95).
ConjuntoR8 caracteres12 caracteres16 caracteres
Só minúsculas2637,656,475,2
+ maiúsculas5245,668,491,2
+ dígitos6247,671,595,3
+ símbolos9552,678,8105,1

Leia a tabela na diagonal. Todos os símbolos do teclado somam, no máximo, cerca de 22 bits a uma senha de 12 caracteres (de 56,4 minúsculas para 78,8), e cobram esse preço em memorização e erros de digitação. Já quatro minúsculas a mais (de 12 para 16) somam 18,8 bits, e nada impede você de somar outras quatro, e mais quatro. Uma senha de 16 minúsculas (75,2 bits) já supera qualquer senha de 8 caracteres, por mais símbolos que ela tenha (52,6 bits). A complexidade é um bônus de uma vez; o comprimento é uma esteira que não acaba.

Passphrase Diceware: fácil de lembrar, difícil de quebrar

Se comprimento aleatório vence, o desafio é gerar comprimento que um humano consiga lembrar. A resposta é o Diceware, método publicado por Arnold Reinhold em 1995: você rola cinco dados de seis faces, lê o resultado numa lista numerada e obtém uma palavra; repita algumas vezes e junte as palavras. Como cada palavra vem de uma lista de exatamente 6^5 = 7.776 entradas, cada uma acrescenta log2(7.776) ≈ 12,9 bits, e, crucialmente, esses bits são reais porque o sorteio é uniforme (os dados não têm preferência). A lista longa da EFF, de 2016, tem essas 7.776 palavras escolhidas para serem comuns, fáceis de digitar e sem nenhuma ser prefixo de outra.

7.776 palavras
O tamanho da lista, igual a 6^5, o número de resultados de cinco dados de seis faces, para sortear uma palavra por rolagem sem viés.
≈ 12,9 bits por palavra
log2(7.776). É quanto de entropia cada palavra sorteada acrescenta, desde que sorteada de verdade, com dados ou um gerador criptográfico.
Propriedade de prefixo
Nenhuma palavra da lista da EFF é começo de outra, então a passphrase é lida sem ambiguidade mesmo escrita sem espaços.

Vale comparar de frente uma passphrase de seis palavras com uma senha aleatória de doze caracteres, o outro extremo popular:

// Passphrase Diceware de 6 palavras / 6-word Diceware passphrase
H = 6 × log2(7776) = 6 × 12,925 ≈ 77,5 bits
exemplo: "correto-cavalo-bateria-grampo-limao-trilho"

// Senha aleatória de 12 caracteres com símbolos / random 12-char with symbols
H = 12 × log2(95) = 12 × 6,5699 ≈ 78,8 bits
exemplo: "9x!Kd2#vQ7@m"

// Praticamente empatadas em bits, mas só uma delas você decora.
Seis palavras (~77,5 bits) empatam com doze caracteres com símbolos (~78,8 bits). A diferença não está na força: está em qual você consegue lembrar e digitar sem erro.

O que o NIST mudou, e por quê

A “regra de complexidade”, pelo menos uma maiúscula, um número e um símbolo, troque a senha a cada 90 dias, não caiu do céu. Ela tem autor e data, e o próprio órgão que a popularizou já a abandonou. O documento que hoje define as boas práticas é o NIST SP 800-63B, cuja revisão vigente é a SP 800-63B-4, finalizada em julho de 2025. Ela desmonta, item por item, a cartilha que ensinamos por vinte anos.

  1. 2003Nasce a regra de complexidade

    Um apêndice do NIST (SP 800-63, memorando atribuído a Bill Burr) recomenda misturar tipos de caractere e trocar a senha com frequência. Vira lei corporativa no mundo todo.

  2. 2017A revisão 3 volta atrás

    O SP 800-63B (rev. 3) abandona as regras de composição e a expiração periódica, com base em pesquisas que mostraram que elas produziam senhas piores. Burr admite publicamente que se arrependeu do conselho original.

  3. 2025A SP 800-63B-4 consolida

    A quarta revisão, final, sobe o mínimo recomendado para 15 caracteres quando a senha é o único fator, exige comparação contra listas de senhas vazadas e reforça que regras de composição e expiração periódica não devem ser impostas.

Cartilha antiga × recomendação atual do NIST SP 800-63B-4 (§3.1.1.2), com a razão de cada mudança.
TemaRegra antigaNIST SP 800-63B-4Por quê
Comprimento mínimo8 caracteresMínimo de 15 para fator único; 8 se parte de MFAComprimento é o que mais eleva a entropia.
ComposiçãoExigir maiúscula + número + símboloNão impor regras de composição (“shall not”)Empurram todos para “Senha1!”, reduzindo a entropia real.
ExpiraçãoTrocar a cada 60–90 diasNão exigir troca periódica; só com evidência de comprometimentoA troca forçada gera variações previsíveis (senha1→senha2).
Comprimento máximoLimites curtos; proibir espaçosPermitir ao menos 64 caracteres e todos os imprimíveisHabilita passphrases longas e Unicode.
VazamentosNão verificavaComparar contra blocklist de senhas comuns/vazadasBloqueia justamente as senhas que o ataque tenta primeiro.

A lógica por trás de todas as linhas é a mesma que abre este guia. Regras de composição e trocas forçadas não aumentam a aleatoriedade, elas restringem o comportamento humano a padrões, e padrão é o que o atacante mapeia primeiro. Exigir um símbolo faz quase todo mundo colocá-lo no fim; exigir troca trimestral faz quase todo mundo incrementar um número. O NIST trocou “force o usuário a complicar” por “deixe o usuário alongar e bloqueie o que já vazou”. É a diferença entre combater a matemática do atacante e alimentá-la.

Como testar (e o que o medidor calcula)

Um medidor honesto não conta caracteres: ele estima a entropia e depois desconta os bits que a senha entrega de graça. O analisador de força de senha deste site faz exatamente isso, e é bom saber o que ele calcula por baixo, não é o zxcvbn do Dropbox, e sim um primo mais leve, no mesmo espírito. Primeiro estima a entropia ingênua pelo conjunto de caracteres detectado (comprimento × log2 do tamanho do conjunto). Depois aplica penalidades: subtrai bits ao ver sequências, repetições, padrões de teclado, datas e leetspeak de palavras comuns, e zera a pontuação quando a senha aparece numa lista embutida das mais vazadas. O zxcvbn, apresentado por Daniel Wheeler na USENIX Security 2016, leva essa ideia mais longe, casando a senha contra dicionários e estimando o número de tentativas de vários ataques reais; a lição comum aos dois é a mesma: a força é o log das tentativas que um bom atacante gasta, não do tamanho teórico do conjunto.

As faixas de entropia usadas para classificar a senha. São exatamente os cortes do analisador deste site.
Entropia (após penalidades)Classificação
menos de 28 bitsMuito fraca
28–39 bitsFraca
40–59 bitsRazoável
60–89 bitsForte
90 bits ou maisMuito forte
Teste aqui, no navegador: digite uma senha de padrão parecido com a sua e veja a entropia estimada, os padrões detectados e o tempo de quebra por tipo de atacante. Nada sai do seu dispositivo.Abrir a ferramenta em página inteira
Por que regras de composição pioram senhas

Uma regra do tipo “precisa de maiúscula, número e símbolo” não obriga ninguém a ser aleatório, obriga a seguir uma forma. E, sob pressão, quase todo mundo segue a mesma: capitaliza a primeira letra, escolhe uma palavra, acrescenta um número óbvio e termina com “!”. O resultado é “Verao2026!” repetido em milhões de contas. O atacante não precisa testar todas as combinações de 10 caracteres; basta gerar palavras comuns dentro desse molde, um espaço milhares de vezes menor.

É por isso que a SP 800-63B-4 diz “shall not” às regras de composição. Elas dão a sensação de força ao humano e entregam previsibilidade à máquina, o pior dos dois mundos.

Como checar se uma senha vazou sem entregá-la (k-anonymity)

O serviço Have I Been Pwned mantém um índice de mais de meio bilhão de senhas já vistas em vazamentos. Você poderia perguntar “a minha está aí?”, mas mandar a senha para um site derrota o propósito. A solução é o modelo de k-anonymity: seu dispositivo calcula o SHA-1 da senha localmente e envia à API apenas os cinco primeiros caracteres hexadecimais desse hash. O servidor devolve todos os sufixos de hash que começam com esse prefixo (centenas deles) e quantas vezes cada um apareceu. Seu lado completa a comparação: se o sufixo do seu hash está na lista, a senha vazou.

O servidor nunca vê a senha nem o hash completo, só um prefixo compartilhado por centenas de senhas diferentes, então ele não sabe qual era a sua. É a mesma checagem de blocklist que o NIST exige, feita sem confiar a senha a ninguém.

TOTP vs. passkey: por que o segundo fator importa

O código de seis dígitos do seu app autenticador é um TOTP, definido pela RFC 6238: um HMAC do segredo compartilhado com o tempo atual dividido em janelas de 30 segundos (uma extensão do HOTP, baseado em contador, da RFC 4226). É muito melhor que SMS, mas tem um ponto cego: phishing em tempo real. Um site falso pede sua senha e o código; você digita; o atacante repassa os dois ao site verdadeiro dentro dos 30 segundos e entra. O código é válido, só foi digitado no lugar errado.

As passkeys (WebAuthn, do W3C, parte do FIDO2) fecham esse buraco. No lugar de um código que você repassa, o navegador assina um desafio com uma chave privada que nunca sai do dispositivo, e a assinatura é amarrada à origem (o domínio real) do site. Um site clone tem outra origem, então a assinatura não vale lá. Não há segredo para digitar num lugar errado, por isso a passkey resiste a phishing por construção, e o TOTP não.

  • Priorize comprimento: 15+ caracteres aleatórios ou 5–6 palavras Diceware sorteadas.
  • Não conte com leetspeak nem com o padrão maiúscula-no-início-número-no-fim.
  • Uma senha única por site, guardada num gerenciador, nunca reutilize.
  • Cheque se ela já vazou (via k-anonymity) e evite qualquer senha da blocklist.
  • Ligue um segundo fator: passkey de preferência, depois TOTP de app; evite SMS.
  • Digite senhas reais só em ferramentas locais, que não enviam nada ao servidor.

Depois de escolher: guardar e reforçar

Escolher uma boa senha é metade do trabalho; a outra metade é como ela vive dos dois lados. No seu, use um gerenciador para ter uma senha longa e única por serviço, gerada pelo gerador de senhas, assim o vazamento de um site não contamina os outros. No lado de quem armazena, a senha nunca pode ficar em texto claro: ela vira um hash com salt por uma função deliberadamente lenta (bcrypt, scrypt, Argon2), como mostra o gerador de bcrypt. O guia hashing, criptografia e encoding explica por que essa lentidão é uma defesa, e não um defeito.

É aqui que o tempo de quebra ganha sentido, e onde é fácil inventar número. O analisador deste site estima o tempo dividindo as tentativas necessárias por perfis de atacante: um formulário limitado (cerca de 100 tentativas por hora), um serviço sem limite (dezenas por segundo), um hash lento offline (~10 mil/s, o caso do bcrypt bem configurado), um hash rápido numa GPU (~10 bilhões/s) e um cluster de GPUs (~1 trilhão/s). Esses são os perfis de referência do medidor em 2026, não a medição de uma placa específica, a velocidade real depende inteiramente do algoritmo de hash da senha no servidor. Um bcrypt com custo alto é ordens de magnitude mais lento de atacar que um SHA-256 puro, e é por isso que a escolha do hash importa tanto quanto a escolha da senha. Para dar ordem de grandeza: uma passphrase de 77,5 bits exige, em média, cerca de 2^76,5 ≈ 10^23 tentativas; mesmo ao ritmo do cluster (10^12/s), isso passa de milhares de anos. Já os 37,6 bits de oito minúsculas caem em uma fração de segundo no mesmo cluster.

Por fim, ligue a verificação em duas etapas. Mesmo que uma senha vaze, um segundo fator impede o acesso, mas nem todo segundo fator é igual. Prefira uma passkey, que resiste a phishing por amarrar a assinatura à origem do site; onde ela não existir, use um código TOTP de app, como o do gerador de TOTP, em vez de SMS, que pode ser desviado por troca de chip. É a camada que transforma um vazamento em um susto, não em uma invasão, a mesma lógica de defesa em profundidade que blinda um domínio inteiro no guia de SPF, DKIM e DMARC.

Perguntas frequentes

Trocar letras por símbolos deixa a senha forte?
Quase nada. Ferramentas de quebra como hashcat e John the Ripper têm regras que geram automaticamente as trocas leet (a→@, o→0, s→$) sobre cada palavra de dicionário. “$enh@123” custa praticamente o mesmo que “senha”. Ganha-se muito mais força adicionando comprimento aleatório do que trocando caracteres previsíveis.
Qual é o comprimento mínimo recomendado pelo NIST hoje?
Na revisão vigente, a SP 800-63B-4 (final de 2025), o mínimo é 15 caracteres quando a senha é o único fator de autenticação; ela pode ter 8 se for usada apenas como parte de um esquema com múltiplos fatores. O documento também recomenda permitir pelo menos 64 caracteres, para não travar passphrases longas.
Preciso trocar minha senha a cada 90 dias?
Não. A SP 800-63B-4 diz explicitamente que não se deve exigir troca periódica de senha; a troca só deve ser forçada quando há evidência de comprometimento. Trocas obrigatórias em calendário levam as pessoas a criar variações previsíveis (senha1, senha2), o que enfraquece em vez de fortalecer.
Quantos bits de entropia são “seguros”?
Como referência, acima de ~80 bits a quebra por força bruta é inviável mesmo para grandes clusters; o analisador deste site marca “muito forte” a partir de 90 bits e “fraca” abaixo de 40. Uma passphrase de 5–6 palavras Diceware sorteadas atinge esse patamar com folga (5 palavras ≈ 64,6 bits; 6 ≈ 77,5).
Como sei se minha senha vazou sem entregá-la a um site?
Pelo modelo de k-anonymity do Have I Been Pwned: seu dispositivo calcula o SHA-1 da senha e envia só os cinco primeiros caracteres do hash. O servidor devolve os sufixos que começam com esse prefixo, e a comparação final acontece no seu lado. O serviço nunca vê a senha nem o hash completo, e o prefixo é compartilhado por centenas de senhas, então ele não sabe qual era a sua.
TOTP ou passkey: qual é mais seguro?
A passkey (WebAuthn/FIDO2) é mais segura porque resiste a phishing: o navegador assina um desafio com uma chave que nunca sai do dispositivo, amarrada à origem do site, então um clone não consegue uma assinatura válida. O TOTP (RFC 6238) é bom e muito melhor que SMS, mas o código de 30 segundos pode ser repassado por um site falso em tempo real. Use passkey onde puder; TOTP como segunda opção.
É seguro digitar minha senha num testador online?
Só se o cálculo for local, no navegador, sem enviar nada ao servidor, é o caso do analisador de força de senha deste site. Na dúvida, teste uma senha de padrão parecido com a real em vez da própria, ou use ferramentas que deixem claro que nada sai do dispositivo.

Entropia é a única régua honesta, e ela mede como a senha foi gerada, não a string, por isso “P@ssw0rd!” vale poucos bits. Priorize comprimento aleatório (15+ caracteres ou 5–6 palavras Diceware), ignore as regras de composição que o próprio NIST abandonou e não conte com leetspeak. Depois de escolher, use gerenciador, senha única por site, hash lento com salt no servidor e um segundo fator, de preferência uma passkey.

Fontes e referências

  1. NIST SP 800-63B-4, Digital Identity Guidelines: Authentication (revisão vigente, 2025)
  2. EFF, New Wordlists for Random Passphrases (lista longa, 7.776 palavras)
  3. Wheeler, zxcvbn: Low-Budget Password Strength Estimation (USENIX Security 2016)
  4. Have I Been Pwned, Pwned Passwords API (modelo de k-anonymity)
  5. RFC 6238, TOTP: Time-Based One-Time Password Algorithm
  6. RFC 4226, HOTP: An HMAC-Based One-Time Password Algorithm
  7. W3C, Web Authentication (WebAuthn) Level 2