FlowingDev

Força de Senha, Explicada: o ingrediente secreto do seu segredo é... matemática

Aprenda como a força de uma senha é medida usando entropia, um conceito da teoria da informação que quantifica o quão imprevisível ela é e estima o tempo para quebrá-la.

Testar a ferramenta: Força da senha

Em uma frase

A força da senha mede quanto trabalho de adivinhação (ou "entropia") um invasor precisa para quebrar seu segredo, traduzindo esse esforço computacional bruto em uma estimativa de tempo que humanos conseguem entender.

O problema que isso resolve

No princípio, existiam os computadores, e eles tinham dados, e isso era bom. Mas aí outras pessoas quiseram ver esses dados, então inventamos a senha. No começo, as coisas eram simples. root, admin, guest. Era menos sobre segurança e mais sobre controle de acesso básico, como um arquivo de metal com uma fechadura bem vagabunda.

Aí a internet aconteceu. De repente, aqueles computadores não estavam mais numa sala trancada; eles estavam conectados a todos os outros computadores do planeta. A fechadura vagabunda agora guardava a porta da frente da sua vida digital, e os invasores estavam ficando muito bons em arrombá-la.

Primeiro veio o ataque de força bruta (brute-force attack): tentar todas as combinações possíveis. 'a', 'b', 'c', ... 'aa', 'ab', ... e assim por diante. Isso funciona, mas é lento. Então os invasores ficaram mais espertos. Eles perceberam que os humanos são preguiçosos e previsíveis. Isso levou ao ataque de dicionário: em vez de tentar axfsvj, por que não tentar password, sunshine, ou 123456? Foi devastadoramente eficaz.

Os administradores de sistema revidaram com políticas: "Sua senha deve ter 8 caracteres e conter um número e uma letra maiúscula!" Os usuários, sempre criativos para seguir as regras, responderam com Password1, Password2, e o clássico atemporal P@$$w0rd1. As regras de complexidade criaram uma falsa sensação de segurança.

Precisávamos de uma forma melhor de medir a qualidade de uma senha. Não marcando caixinhas de tipos de caracteres, mas medindo sua aleatoriedade real e imprevisível. Precisávamos de uma forma de quantificar o quão "difícil de adivinhar" ela é. É aí que entra o conceito de força de senha, enraizado no campo matemático da teoria da informação. Ele fornece uma métrica formal — a entropia — para estimar por quanto tempo uma senha pode resistir à investida de um invasor determinado com um supercomputador.

Como funciona por debaixo dos panos

Em sua essência, a estimativa de força de senha é um jogo de números. Estamos tentando calcular o tamanho do palheiro que um invasor precisa vasculhar para encontrar sua única agulha, que é a senha.

### Entropia: O Número Mágico

A unidade de medida para a força da senha é a entropia, medida em "bits". Na teoria da informação, entropia é uma medida de incerteza ou aleatoriedade. Para senhas, ela quantifica o quão imprevisível sua senha é.

A fórmula básica é lindamente simples:

Entropy = log₂(Search Space)

O "Espaço de Busca" (Search Space) é o número total de senhas possíveis dadas certas regras. Para uma senha simples, gerada aleatoriamente, o espaço de busca é calculado como:

Search Space = N ^ L

Onde:

  • N é o número de caracteres possíveis no conjunto de caracteres (o pool de símbolos que você pode escolher).
  • L é o comprimento da senha.

Vamos jogar isso de volta na fórmula principal: Entropy = log₂(N ^ L), que simplifica para Entropy = L * log₂(N).

Alguns tamanhos comuns de conjuntos de caracteres (N):

  • Apenas números (0-9): N = 10
  • Letras minúsculas (a-z): N = 26
  • Letras maiúsculas e minúsculas (a-z, A-Z): N = 52
  • Alfanumérico com maiúsculas e minúsculas (a-z, A-Z, 0-9): N = 62
  • Símbolos do teclado ASCII completo: N ≈ 95

Então, para uma senha de 8 caracteres usando apenas letras minúsculas, a entropia é 8 * log₂(26), que é cerca de 8 * 4.7 = 37.6 bits.

O que "37.6 bits" realmente significa? Cada bit de entropia dobra o espaço de busca. Então, uma senha com 38 bits de entropia é duas vezes mais difícil de quebrar do que uma com 37 bits. Esse crescimento exponencial é o motivo pelo qual adicionar apenas um ou dois caracteres aleatórios pode aumentar drasticamente a força.

### Da Entropia ao Tempo de Quebra

Bits são ótimos para computadores, mas humanos pensam em minutos, anos e eras. Para obter uma estimativa de tempo de quebra, precisamos de mais um ingrediente: a velocidade de adivinhação do invasor.

Isso é altamente variável. Um ataque online (online attack) (tentando adivinhar em um formulário de login ativo) pode ser limitado a 10 tentativas por segundo. Mas um cenário mais realista é um ataque offline (offline attack), onde o invasor roubou um banco de dados de hashes de senhas. Com GPUs modernas, eles podem realizar bilhões ou até trilhões de hashes por segundo.

Vamos supor que um invasor poderoso consiga fazer 10 bilhões (10¹⁰) de tentativas por segundo. O número de tentativas necessárias para garantir a descoberta é 2^Entropia. Em média, eles a encontrarão na metade do caminho, então podemos estimar o tempo:

TempoDeQuebra = (2^Entropia / 2) / TentativasPorSegundo

Veja como as coisas escalam rapidamente:

Entropia (bits) Total de Tentativas Tempo Médio de Quebra @ 10¹⁰ H/s Nível de Segurança
30 ~1 bilhão < 0.1 segundos Trivial
40 ~1 trilhão ~1 minuto Muito Fraca
50 ~1 quatrilhão ~15 horas Fraca
60 ~1 quintilhão ~1.8 anos Razoável
70 ~1 sextilhão ~1.800 anos Forte
80 ~1 septilhão > Idade do universo Muito Forte

Esta tabela mostra por que até mesmo alguns bits extras de entropia fazem uma diferença colossal.

### Além da Força Bruta: O Problema dos Padrões

A fórmula simples L * log₂(N) tem uma falha enorme: ela assume que cada caractere é escolhido com aleatoriedade perfeita. Os humanos não funcionam assim. Usamos palavras, datas e substituições previsíveis. P@$$w0rd1 não é uma sequência aleatória de 9 caracteres ASCII.

É aqui que os estimadores de força de senha modernos ficam realmente espertos. Os melhores, como a famosa biblioteca zxcvbn do Dropbox, não apenas calculam a entropia ingênua. Eles agem como um invasor e tentam encontrar a maneira mais "barata" de construir sua senha.

  1. Quebra (Chunking): Eles quebram a senha em pedaços (chunks). Tr0ub4dor&3! vira Tr0ub4dor, &, 3, !.
  2. Análise de Padrões (Pattern Matching): Eles analisam cada pedaço contra múltiplos padrões:
    • Palavras de dicionário: troubador está em um dicionário de inglês? (Sim). É comum? (Sim).
    • Substituições comuns: Tr0ub4dor parece troubador com o -> 0 e a -> 4? (Sim).
    • Padrões de teclado: É uma sequência como qwerty ou asdfg?
    • Datas: Parece com 1999 ou 2024?
    • Caracteres repetidos: É algo como aaaaaa?
  3. Análise de Custo: Eles calculam a entropia para cada pedaço com base em seu padrão. Uma palavra comum de dicionário tem uma entropia muito menor do que uma string aleatória do mesmo comprimento. A entropia de password não é 8 * log₂(52); está mais perto de log₂(20000), já que é uma tentativa em uma lista de senhas comuns.
  4. Soma: Eles somam a entropia dos pedaços mais "baratos" para obter uma estimativa de força realista e testada em batalha. É por isso que correto-cavalo-bateria-grampo pontua muito mais alto do que Tr0ub4dor&3, mesmo que a última "pareça" mais complexa.

Histórias do mundo real

### A Política Corporativa que Saiu pela Culatra

Uma empresa de tecnologia de médio porte implementou uma nova política de senhas rigorosa: mínimo de 10 caracteres, uma letra maiúscula, um número, um símbolo. O objetivo era forçar senhas de alta entropia. O que eles conseguiram foi uma força de trabalho de usuários criando senhas como Verao2024!, Outono2024! e Inverno2025!. Um medidor de força ingênuo daria a elas uma pontuação decente. Mas quando um invasor comprometeu uma conta de baixo nível e aprendeu o padrão, ele não precisou usar força bruta. Ele apenas escreveu um script para tentar todas as combinações de estação e ano, e rapidamente obteve acesso a dezenas de contas.

Lição: Complexidade forçada geralmente gera padrões previsíveis. Um bom medidor de força deve detectar e penalizar esses esquemas comuns.

### A Epifania do XKCD 'Correct Horse Battery Staple'

A webcomic XKCD publicou uma tirinha agora lendária ilustrando a força da senha. Ela comparava Tr0ub4dor&3, uma senha "complexa" típica, com correct horse battery staple (correto cavalo bateria grampo), uma passphrase de quatro palavras comuns, mas aleatórias. Enquanto Tr0ub4dor&3 é difícil para um humano lembrar, sua mistura de substituições e padrões lhe dá uma entropia calculável que um cracker dedicado poderia superar em dias. A passphrase de quatro palavras, no entanto, é fácil para um humano lembrar. Assumindo um dicionário de 2048 palavras comuns, sua entropia é log₂(2048^4), que é 4 * 11 = 44 bits de entropia significativa. Para quebrá-la por força bruta de caracteres, um invasor se depara com uma string de 28 caracteres, uma tarefa impossível.

Lição: O comprimento é muitas vezes uma defesa mais poderosa e amigável ao usuário do que a complexidade baseada em símbolos. Passphrases são suas amigas.

### A Senha 'Aleatória' que não Era

Um desenvolvedor foi encarregado de criar um sistema que gerasse senhas iniciais aleatórias e seguras para novos usuários. Ele usou a função random() padrão de sua linguagem em um script simples. As senhas pareciam ótimas: j8sL2!kP. O que o desenvolvedor não percebeu é que a função random() padrão era um Gerador de Números Pseudoaleatórios (PRNG) que era semeado (seeded) com o tempo do relógio do sistema. Um invasor, após obter apenas uma dessas senhas e seu timestamp de criação (de um e-mail, por exemplo), conseguiu descobrir a semente (seed). Ele pôde então regenerar a sequência inteira de senhas "aleatórias" para cada usuário criado na mesma época.

Lição: A fonte de aleatoriedade importa imensamente. Para qualquer coisa relacionada à segurança, sempre use um gerador de números pseudoaleatórios criptograficamente seguro (CSPRNG), como window.crypto.getRandomValues() em um navegador ou /dev/urandom no Linux.

Erros e armadilhas comuns

  • Confundir complexidade com força. P@$$w0rd! parece complexa, mas é uma senha ruim globalmente reconhecida. quatro palavras aleatorias juntas é simples no conceito, mas muito mais forte na prática porque não tem padrões previsíveis e é muito mais longa.
  • Confiar na 'barra verde' cegamente. Muitos medidores de força na web são perigosamente ingênuos. Eles realizam um cálculo simples de comprimento * conjunto_de_caracteres e não verificam dicionários, padrões ou dados de vazamentos públicos. Uma classificação "forte" de um medidor fraco é uma mentira.
  • Ignorar o vetor de ataque offline. Não meça a força da sua senha contra um formulário de login que te bloqueia após três tentativas. Suponha que o invasor tenha sua senha hasheada e está atacando-a com um rack de GPUs em seu porão. Sempre projete para o pior cenário possível.
  • Reutilizar senhas. A senha mais brilhante, com 128 bits de entropia, torna-se inútil no momento em que é exposta no vazamento de dados de outro site. Um invasor não vai quebrá-la; ele vai simplesmente procurá-la em uma lista e entrar.
  • Achar que senhas curtas são ok se forem aleatórias. Uma senha de 8 caracteres verdadeiramente aleatória, usando todos os símbolos do teclado, tem uma entropia decente (~53 bits). Mas "decente" não é mais o que era. Dado o custo decrescente da computação, ela poderia ser quebrada em questão de semanas ou meses. O comprimento fornece uma margem de segurança muito mais confortável.

Por que isso deve estar no seu radar

Entender sobre força de senha não é só para profissionais de segurança.

Como desenvolvedor, se você está construindo qualquer tipo de autenticação, você está na linha de frente. Em vez de impor regras arbitrárias (deve incluir um caractere do alfabeto cirílico falado apenas às terças-feiras), você deve guiar os usuários para o que realmente funciona: comprimento e imprevisibilidade. Integrar um estimador de força inteligente pode fornecer feedback em tempo real que genuinamente ajuda os usuários, e conhecer os princípios permite que você tome melhores decisões de arquitetura (como escolher um algoritmo de hashing lento e caro como o Argon2).

Como usuário, esse conhecimento te transforma de um seguidor passivo de regras em um defensor ativo de seus próprios dados. Ele te dá a intuição para criar segredos que são ao mesmo tempo memoráveis para você e impossivelmente difíceis para eles. É a base teórica para toda a sua postura de segurança digital.

Aprofunde-se

Teoria feita. Hora de pôr a mão na massa — 100% no seu navegador.

Testar a ferramenta: Força da senha