Como usar
- Escolha o Tipo: Senha, para uma sequência de caracteres sorteados, ou Frase-senha, para palavras em português unidas por hífen, espaço, ponto, sublinhado ou nada.
- Ajuste o Tamanho (de 4 a 128 caracteres) ou o número de Palavras (de 3 a 20) e ligue os conjuntos que quiser: Maiúsculas, Minúsculas, Números e Símbolos. O campo Símbolos é editável: apague os que o site recusa ou cole só os que ele aceita.
- Confira a força em bits e o Tempo para adivinhar, em média, em 3 cenários: um site com limite de tentativas, um hash lento vazado e um hash rápido vazado.
- Em Quantidade, peça até 100 de uma vez, para um lote de usuários de teste; Gerar outras sorteia de novo com as mesmas opções.
- Copie uma senha pela linha dela, ou copie todas e baixe um .txt, uma por linha. Nada vai para servidor: as opções ficam lembradas neste navegador, as senhas nunca.
Exemplos
Senha padrão de 16 caracteres
16 caracteres, os 4 conjuntos, Um de cada104,6 bits (muito forte): 16 posições, 94 caracteres possíveisFrase-senha de 6 palavras
Frase-senha de 6 palavras, separador hífencavalo-planeta-arroz-janela-tambor-moeda · 72 bits (forte)PIN de 6 dígitos
PIN de 6 dígitos (só Números)19,9 bits (fraca): 1.000.000 de combinações, menos de 1 segundo num hash rápido vazadoComo a senha é sorteada
Cada caractere sai de crypto.getRandomValues, o gerador criptográfico do navegador, alimentado pelo sistema operacional. Math.random não serve para senha: é bom para jogo e animação, mas não foi feito para ser imprevisível, e a especificação da linguagem não exige isso dele.
Sortear um número não basta: é preciso levá-lo sem viés para a faixa dos caracteres. O atalho comum, pegar um byte e usar o resto da divisão por 94, erra porque 256 mod 94 = 68: os 68 primeiros caracteres sairiam 3 vezes em 256 e os outros 26 só 2, ou seja, 50% mais vezes. Aqui cada sorteio usa 32 bits, descarta os valores do fim que sobram da divisão (42 de 2^32 com 94 caracteres) e sorteia de novo: cada caractere tem exatamente a mesma chance.
Com Um de cada ligado, a senha inteira é sorteada de novo até ter pelo menos um caractere de cada conjunto. Trocar uma posição pelo conjunto que faltou daria viés; rejeitar a senha inteira deixa todas as senhas válidas com a mesma chance. O custo é pequeno: em 16 caracteres, a força cai de 104,9 para 104,6 bits, 0,28 bit, porque as senhas sem algum conjunto saem da conta.
Tudo acontece no seu navegador: a senha não passa por servidor, não entra na URL nem no armazenamento local. A página publicada também não traz senha pronta: o sorteio só começa quando ela abre no seu navegador, então cada visita tem a sua.
Entropia e força em bits
A força de uma senha sorteada é exata: é o log₂ do número de senhas que o gerador poderia ter dado. 16 caracteres de 94 dão 16 × log₂ 94 = 104,9 bits; 12 de 62 (letras e algarismos) dão 71,5; 6 palavras de uma lista de 4.096 dão 72; e 6 palavras do Diceware, de 7.776, dão 77,5. Cada bit a mais dobra o trabalho de quem tenta adivinhar.
As faixas desta página: abaixo de 50 bits, fraca; de 50, razoável; de 70, forte; de 90 em diante, muito forte. O tempo para adivinhar conta a média, metade das possibilidades, em 3 cenários: um site com limite de 10 tentativas por segundo, um hash lento vazado (bcrypt, 10 mil por segundo) e um hash rápido vazado (MD5 ou SHA-1 em várias GPUs, 1 trilhão por segundo).
Por isso o mesmo número de bits vale coisas muito diferentes. Uma senha de 8 caracteres com os 4 conjuntos tem 51,3 bits: levaria 4,4 milhões de anos contra o site, 4.448 anos com o hash em bcrypt e 23 minutos com o hash em MD5. Você não escolhe como o site protege a senha, então a margem precisa estar nela.
Medidores que avaliam uma senha escolhida por alguém, como o zxcvbn, estimam o que uma pessoa costuma inventar: procuram palavras, datas e padrões de teclado. Aqui não há o que estimar: a senha foi sorteada, e a conta acima é exata. Avaliar uma senha que você já tem é outra ferramenta.
A frase-senha em português
A frase-senha sorteia palavras de uma lista própria de 4.096 palavras: cada uma vale 12 bits, porque 2^12 = 4.096. Todas têm de 4 a 8 letras, sem acento, para digitar em qualquer teclado; não há palavrão, e nenhuma palavra é o começo de outra, então mesmo com o separador Nenhum a frase só se lê de um jeito.
A lista saiu do dicionário pt_BR do teclado do Android (AOSP, licença Apache 2.0), pelas palavras mais frequentes, com filtros: só letras de a a z sem k, w e y; sem palavras marcadas como ofensivas nem de sexo, violência, doença, etnia e religião; sem grafia de Portugal e sem plural quando o singular já está lá. A wordlist pt-br do Diceware ficou de fora: é GPL e não tem curadoria.
Maiúsculas no começo das palavras não somam força: quem ataca sabe que a regra existe. O Número põe um algarismo no fim de uma das palavras e soma log₂(10 × palavras): com 6 palavras, 5,9 bits, porque são 10 algarismos em 6 posições. Para mais força, acrescente palavras: cada uma vale 12 bits, mais que o Número.
Símbolos, ambíguos e sites exigentes
Os símbolos padrão são os 32 caracteres ASCII visíveis que não são letra nem algarismo, a lista de caracteres especiais da OWASP (que conta também o espaço; aqui ele fica de fora). Ficar no ASCII evita surpresa: acento muda de lugar de um teclado para outro, no celular inclusive, e pode ser gravado em bytes diferentes (NFC ou NFD), e a “mesma” senha deixa de bater.
Sem ambíguos tira 0, O, o, 1, l, I e |, os 7 que se confundem ao ler ou digitar: sobram 87 caracteres, e 16 deles com Um de cada dão 102,7 bits. Se o site recusa algum símbolo, apague-o do campo Símbolos; se aceita poucos, cole só esses.
O NIST SP 800-63B rev. 4 pede pelo menos 15 caracteres quando a senha é o único fator, pelo menos 8 quando há outro fator (MFA), e que o site aceite pelo menos 64. Também desaconselha regras de composição (exigir símbolo, maiúscula) e troca periódica sem sinal de vazamento. Muitos sites ainda exigem essas regras; Um de cada as atende quase sem custo.
No terminal, os equivalentes: openssl rand -base64 12 dá 16 caracteres de Base64, 16 × 6 = 96 bits; python3 -c 'import secrets; print(secrets.token_urlsafe(16))' dá 128 bits (16 bytes × 8) em 22 caracteres; e LC_ALL=C tr -dc 'A-Za-z0-9' </dev/urandom | head -c 16 dá 16 × log₂ 62 = 95,3 bits.
Perguntas frequentes
- Este gerador é seguro? A senha sai do meu computador?
- Não sai. O sorteio usa crypto.getRandomValues, o gerador criptográfico do navegador, e acontece na sua máquina: a senha não vai para servidor, não entra na URL nem no armazenamento local, e não há link de compartilhamento. Só as opções (tamanho, conjuntos, quantidade) ficam lembradas neste navegador. A única coisa que a página baixa é a lista de palavras da frase-senha, um arquivo fixo do próprio site, igual para todo mundo.
- Quantos caracteres deve ter uma senha forte?
- Com sorteio de verdade, 12 é o piso: 12 caracteres com os 4 conjuntos já dão 78,1 bits. 16 caracteres dão 104,6 bits, longe de qualquer ataque de força bruta. O NIST pede pelo menos 15 quando a senha é o único fator de autenticação. Para senha de banco ou de conta de serviço, que ninguém digita, vá além: aqui o Tamanho chega a 128.
- Frase-senha ou senha com símbolos?
- Depende só dos bits, não da aparência: 6 palavras dão 72 bits e 8 dão 96; 16 caracteres de 94 dão 104,6. A frase é mais fácil de digitar e de ditar, boa para a senha do computador ou do gerenciador de senhas; a senha com símbolos cabe melhor em campo com limite de tamanho.
- O que são os bits de entropia e quanto basta?
- É o log₂ do número de senhas possíveis: 72 bits quer dizer 2^72 possibilidades, e cada bit a mais dobra o trabalho de quem ataca. Esta página chama de forte a partir de 70 bits e de muito forte a partir de 90. Com 72 bits, mesmo um hash rápido vazado, a 1 trilhão de tentativas por segundo, leva 75 anos em média.
- O site recusou a senha gerada: e agora?
- Leia a regra que ele mostra e ajuste as opções: se recusa algum símbolo, apague-o do campo Símbolos (ou cole só os que ele aceita); se tem limite de tamanho, diminua o Tamanho; se exige um caractere de cada tipo, deixe Um de cada ligado. Gere de novo e confira os bits: tirar símbolos e encurtar a senha baixam a força.
- Preciso trocar a senha de tempos em tempos?
- Não sem motivo. O NIST desaconselha a troca periódica: ela leva a senhas previsíveis, que mudam só um algarismo no fim. Troque quando houver sinal de vazamento. O que protege de verdade é uma senha diferente e sorteada para cada conta, num gerenciador de senhas, e um segundo fator onde houver.