Por que usar um gerador de senhas?
A maioria das senhas vazadas em grandes vazamentos de dados (LinkedIn, Adobe, Equifax) compartilha o mesmo problema: foram criadas por humanos. Humanos são previsíveis. Tendemos a usar nomes, datas, palavras comuns, substituições óbvias (A → @, S → $) e padrões fáceis de adivinhar (Senha123, Verão2024, NomeDaEmpresa).
Um gerador de senhas baseado em aleatoriedade criptográfica elimina todos esses padrões. Cada caractere é escolhido por um algoritmo que não pode ser previsto — nem por você nem por um atacante. É a única forma de criar uma senha que resiste a ataques modernos.
O que torna uma senha forte?
A força de uma senha é medida em bits de entropia. Quanto mais bits, mais combinações possíveis e mais difícil de quebrar. A fórmula é simples: entropia = log₂(charset^tamanho).
- charset: tamanho do conjunto de caracteres (26 só minúsculas, 62 com alfanuméricas, 94 com símbolos).
- tamanho: número de caracteres da senha.
Exemplos:
- Senha "papagaio" (8 chars, 26 chars): ~38 bits — quebrada em segundos.
- Senha "Papagaio1!" (10 chars, 94 chars): ~66 bits — quebrada em horas com GPU.
- Senha aleatória "Xk9#mP2$qR" (10 chars, 94 chars): ~66 bits mas sem padrão — anos.
- Senha aleatória de 20 chars com 94 chars: ~131 bits — bilhões de anos.
Tamanho mínimo recomendado em 2026
Com GPUs modernas executando ataques offline a 10¹² (um trilhão) de tentativas por segundo, os mínimos atuais são:
- Contas comuns (apps, sites): 12 caracteres aleatórios.
- Contas importantes (e-mail, redes sociais): 16 caracteres.
- Contas críticas (banco, gerenciador de senhas): 20+ caracteres.
- Chaves de criptografia (PGP, Wallets cripto): 32+ caracteres ou passphrase de 6+ palavras.
Esses números assumem senhas geradas aleatoriamente. Senhas criadas por humanos precisam ser ainda mais longas pra ter a mesma força — porque os atacantes começam testando padrões comuns antes de tentar força bruta pura.
Por que não usar Math.random()?
Geradores feitos com Math.random() são previsíveis. Eles usam um algoritmo determinístico (PRNG)
que pode ser revertido se um atacante coletar algumas senhas geradas. Já houve casos reais de aplicativos
que usaram Math.random() pra criar tokens de sessão e foram completamente comprometidos.
Nosso gerador usa a Web Crypto API (crypto.getRandomValues()), que acessa fontes de
entropia do sistema operacional: ruído de hardware, interrupções de teclado/mouse, jitter de timing.
É o mesmo padrão usado por gerenciadores de senha profissionais e chaves de criptografia bancária.
Os 7 erros mais comuns ao criar senhas
- Reutilizar senhas em vários sites. Se um vaza, todos vazam (credential stuffing).
- Usar informações pessoais. Nome do filho, data de aniversário, time, cidade — tudo público.
- Substituições óbvias. A → @, S → $, E → 3. Os atacantes sabem disso há décadas.
- Senhas curtas com "complexidade". "P@ssw0rd1!" (10 chars) é quebrada em horas.
- Anotar em papel ou txt. Use gerenciador de senhas criptografado.
- Não usar 2FA. Mesmo com senha forte, ative autenticação de dois fatores.
- Acreditar em "trocar a senha a cada 90 dias". Estudo mostra que isso piora a segurança porque usuários criam variações fracas (Senha1 → Senha2). NIST recomenda só trocar se houver suspeita de vazamento.
Onde guardar suas senhas?
A regra básica: nunca tente memorizar senhas geradas aleatoriamente. Use um gerenciador de senhas confiável. Recomendações em 2026:
- Bitwarden — código aberto, gratuito, nuvem ou self-hosted. Excelente custo-benefício.
- 1Password — pago, mas com UX impecável e família de produtos integrada.
- KeePassXC — código aberto, offline, sem nuvem. Para quem quer controle total.
- Proton Pass — opção da equipe ProtonMail, com foco em privacidade.
Use uma senha mestra longa (passphrase de 6+ palavras é uma ótima opção pra senha mestra que você precisa memorizar) + 2FA via app autenticador (Authy, Aegis, ou chave de hardware tipo YubiKey).
Quando excluir caracteres similares ou ambíguos?
Caracteres similares (l, I, 1, O, 0) e ambíguos (, [], (), <>, /, \) podem causar confusão se você precisar:
- Digitar a senha manualmente em outro dispositivo (TV, console, smart device).
- Ditar para alguém de confiança em situações de suporte técnico.
- Compartilhar verbalmente em ambientes empresariais.
Para senhas armazenadas apenas em gerenciadores (auto-preenchimento), deixe esses caracteres ativados — a entropia adicional vale mais do que a legibilidade.
Tempo para quebrar: cenários reais
O "tempo para quebrar" mostrado pela ferramenta assume um ataque offline com hash rápido (SHA-256 sem salt, GPU moderna a 10¹² tentativas/segundo). Isso representa o pior caso. Em situações reais:
- Ataque online com rate limit (login normal): 10–100 tentativas/segundo. Tempo enorme.
- Ataque online sem proteção: 1.000 tentativas/segundo. Ainda muito tempo.
- Ataque offline com hash lento (bcrypt, Argon2): 10⁴ tentativas/segundo. Senha de 16 chars resiste séculos.
- Ataque offline com hash rápido (MD5, SHA-1, SHA-256): 10⁹–10¹² tentativas/segundo. Use senha 20+.
Por isso, sempre prefira serviços que usam hashes lentos (bcrypt, scrypt, Argon2) e ative 2FA. Mesmo se a senha vazar, o segundo fator protege.
Sobre a Web Crypto API
A Web Crypto API é um padrão W3C disponível em todos os navegadores modernos. O método
crypto.getRandomValues() preenche um array com valores criptograficamente seguros, derivados de fontes
de entropia do sistema operacional. É não-determinístico: cada chamada produz valores diferentes
que não podem ser previstos a partir de chamadas anteriores.
Nosso gerador usa crypto.getRandomValues(new Uint32Array(...)) e aplica rejection sampling
pra eliminar viés modulo: senhas geradas têm distribuição uniforme real, sem caracteres mais prováveis que outros.