Força de uma senha
A força de uma senha é quantas combinações ela tem, e isso cresce com o tamanho e com o alfabeto.
A força de uma senha não é se ela "parece difícil": é quantas senhas diferentes o atacante teria de testar. Esse número é o espaço de busca (veja o conceito Espaço de chaves), e sai de uma conta simples:
combinações = (tamanho do alfabeto) ^ (número de caracteres)
O alfabeto é o conjunto de símbolos permitidos. Alguns casos:
| Senha | Alfabeto | Combinações |
|---|---|---|
| 4 dígitos | 10 | 10^4 = 10 mil |
| 8 letras minúsculas | 26 | 26^8, cerca de 2 × 10^11 |
| 8 com maiúsculas, minúsculas, dígitos e símbolos | 95 | 95^8, cerca de 7 × 10^15 |
| 12 com maiúsculas, minúsculas, dígitos e símbolos | 95 | 95^12, cerca de 5 × 10^23 |
Para saber quanto tempo resiste, divida pela taxa de tentativas do atacante. Se ele testa 10^9 (1 bilhão) por segundo, uma senha de 10^14 combinações cai, no pior caso, em 10^14 / 10^9 = 100000 segundos, pouco mais de um dia.
Duas lições saem daí. Tamanho importa muito, porque cada caractere a mais multiplica tudo pelo alfabeto. E alfabeto só não basta: 12 dígitos parecem longos, mas com alfabeto 10 caem rápido; os mesmos 12 caracteres com todo o teclado resistem por eras. Frases longas vencem senhas curtas e "espertas", e a taxa do atacante é muito maior se o hash for rápido (MD5) do que se for lento e com sal (bcrypt, Argon2).