Gerador de senhas

Uma senha vinda do gerador criptográfico de números aleatórios do seu navegador, com o comprimento e os conjuntos de caracteres que você escolher. Ela nasce na sua própria máquina e não é enviada a lugar nenhum — numa senha isso não é gentileza, é o ponto inteiro: uma que atravessou a rede para chegar até você é uma que outra pessoa pôde ver.

20

Deixa de fora l, I, 1, O e 0. Útil se você precisar ler na tela, e custa alguns bits.

  • Onde roda Nada é enviado, porque não há arquivo — a conta é feita nesta página.
  • Sem fila, sem conta Responde na velocidade da sua máquina e nunca pergunta quem você é.
  • Quantas vezes quiser Nada é contado nem limitado — responder de novo não nos custa nada.

Como funciona

  1. Escolha um comprimento. Vinte é um bom padrão; mais longo não custa nada.
  2. Marque os conjuntos de caracteres de que você precisa. Alguns sistemas ainda rejeitam símbolos, por isso dá para desligá-los.
  3. Aperte Gerar. A senha aparece na hora, junto com a força dela.
  4. Copie direto para o seu gerenciador de senhas. Não tente memorizar — o gerenciador existe para isso.

De onde vem a aleatoriedade

Os caracteres são sorteados com `crypto.getRandomValues`, o gerador criptográfico do navegador, alimentado pela reserva de entropia do sistema operacional. A alternativa, `Math.random`, existe em todo navegador e está descartada aqui: o algoritmo é público, o estado interno é pequeno e reconstruir esse estado a partir de algumas saídas é um problema resolvido, com código publicado. Um gerador construído sobre ele produz senhas cujo espaço de chaves real é o tamanho desse estado, por mais longa que a senha pareça.

Olhando, não dá para distinguir. É justamente por isso que vale dizer qual está em uso, e por isso existe neste projeto um teste que falha se `Math.random` aparecer naquele arquivo.

O viés que quase todo gerador tem

Transformar um byte aleatório em caractere aleatório costuma ser escrito como `byte % tamanho`, e isso é sutilmente errado sempre que 256 não é divisível pelo tamanho do alfabeto. Com vinte e seis letras, os bytes de 0 a 255 cobrem `a` a `v` dez vezes cada e `w` a `z` apenas nove: as primeiras vinte e duas saem cerca de 11% mais vezes.

É um defeito pequeno e é real, e é de longe o mais comum em geradores desse tipo. A correção é descartar os valores dessa cauda curta e sortear de novo, o que custa um laço e menos de dois sorteios por caractere em média. É o que acontece aqui.

O que significa o número de entropia

A entropia é dada em bits e é o jeito honesto de descrever a força de uma senha: cada bit dobra o número de tentativas necessárias. Vinte caracteres com os quatro conjuntos dão cerca de 130 bits, ou seja, aproximadamente 2^130 possibilidades — um número sem significado físico, que é justamente a ideia.

Isso também torna as trocas visíveis. Tirar os símbolos de uma senha de vinte caracteres custa uns 11 bits. Tirar os caracteres parecidos custa uns 3. Somar quatro caracteres ganha uns 26. É por isso que comprimento vence complexidade sempre: esses quatro caracteres a mais valem mais do que todos os símbolos do teclado, e são mais fáceis de aceitar numa senha que você nunca vai digitar à mão.

Todo conjunto marcado aparece com certeza

Se você marcar dígitos, a senha tem um dígito. Isso não é automático: sortear vinte caracteres de um alfabeto misto deixa uma chance real de não sair nenhum de um dos conjuntos, e o resultado é uma senha que uma política rejeita e que você precisa gerar de novo.

Os caracteres que garantem isso são colocados primeiro e depois tudo é embaralhado, senão toda senha começaria com uma minúscula, depois uma maiúscula, depois um dígito, depois um símbolo — um padrão que tira os primeiros caracteres do problema de quem tenta adivinhar. A garantia custa uma fração de bit, bem abaixo do arredondamento do número mostrado.

Um gerador é só metade do caminho

Uma senha forte que você reaproveita é uma senha fraca, porque a força dela deixa de importar no instante em que qualquer site que a tenha for invadido. O valor de gerar está em cada conta ter a sua, e isso só funciona se alguma coisa se lembrar delas por você.

Então use um gerenciador de senhas, qualquer um, inclusive o que já vem no seu navegador. O gerador daqui serve para o momento em que você está diante de um formulário; o que o torna útil é o resultado ir parar em algum lugar onde você vai encontrá-lo de novo.

Gerador de senhas: perguntas frequentes

A senha é enviada para um servidor?

Não, e esta é a ferramenta do site em que isso mais importa. Ela é gerada pelo seu próprio navegador e só existe na página até você copiar. Nada é enviado, nada é registrado e não há conta. Um gerador de senhas que roda num servidor é um gerador cuja saída outra pessoa viu.

Qual deve ser o tamanho da minha senha?

Dezesseis é um piso razoável e vinte é melhor. Passando de uns trinta não há mais nada a ganhar contra nenhum atacante realista, então o tamanho só é limitado pelo que o sistema aceita. Como você deveria colar em vez de digitar, comprimento não custa nada.

Devo desligar os caracteres parecidos?

Só se você for ler a senha numa tela para digitar em outro lugar: numa televisão, de uma folha impressa, num aparelho sem área de transferência. Isso encolhe o alfabeto e custa alguns bits, que o número de entropia mostra assim que você liga a opção.

A mesma senha pode sair duas vezes?

Em nenhum sentido que importe. Com os ajustes padrão há cerca de 2^130 resultados possíveis, então uma repetição não acontece nem que cada pessoa viva gerasse uma por segundo durante toda a idade do universo.

É gratuito?

É, sem conta e sem limite de quantas você gera. Roda na sua máquina, então não nos custa nada deixar você apertar o botão de novo.