Qual é o tamanho ideal da senha?

Claro, quanto mais, melhor. E com um gerenciador de senhas, é muito fácil gerar e completar automaticamente senhas de qualquer tamanho. Mas é necessário criar senhas com centenas de caracteres, ou existe algum mínimo empírico razoável?



Aqui está a interface de um gerador de senha típico :





Preste atenção ao controle deslizante Comprimento: aqui ele pode alterar o comprimento da senha de 8 para 100 caracteres, e em outras ferramentas pode ser muito mais. Qual é o melhor valor para senhas?



Uma boa senha é tudo o que você tem quando é hackeado



Para entender o que é uma boa senha, vamos ver o que acontece no campo do inimigo!



Quando você cria uma conta, o serviço salva sua senha em um dos vários formatos. O serviço pode colocar a senha diretamente no banco de dados (em texto simples) ou gerar um hash a partir dele usando um dos vários algoritmos . Mais popular:



  • MD5
  • SHA-1
  • Bcrypt
  • Scrypt
  • Argon2


A vantagem de armazenar hashes em vez das próprias senhas é que não há senhas no banco de dados . E isso mesmo, porque você só precisa provar que sabe sua senha, mas não importa. Quando você faz o login, a senha inserida é criptografada usando o mesmo algoritmo e, se o resultado corresponder ao valor registrado no banco de dados, você provou que conhece a senha. E se o banco de dados for hackeado, não será possível recuperar as senhas.





Armazenando hashes.



Cracking password



A quebra de senha ocorre quando um invasor tenta reverter uma função hash e recuperar uma senha do hash. Isso não é possível com um bom algoritmo de hash. Mas nada impede que um invasor tente inserir valores diferentes na esperança de obter o mesmo hash. Se ocorrer uma correspondência, a senha foi recuperada do hash.





Decifrando uma senha.



E aqui a escolha de um bom algoritmo é importante . SHA-1 foi projetado com hash rápido em mente, tornando a vida mais fácil para os invasores. Bcrypt, Scrypt e Argon2 foram projetados com altos custos computacionais em mente para desacelerar o cracking tanto quanto possível, especialmente em máquinas dedicadas. E esse é um aspecto muito importante.



Se você se concentrar apenas na velocidade, a senha SHA-1, o que é impossível de quebrar, como segue: 0OVTrv62y2dLJahXjd4FVg81.



Uma senha segura que você criou usando um Argon2 configurado corretamente, se parece com isso: Pa$$w0Rd1992.



Como você pode ver, a escolha do algoritmo de hash correto transforma uma senha fraca em inquebrável.



E não se esqueça dissodepende apenas da implementação do serviço no qual você está se registrando . E você não pode saber a qualidade da implementação. Você pode perguntar, mas eles não responderão ou cancelarão a assinatura de que "levamos segurança a sério".



Você acha que as empresas levam a segurança a sério e usam bons algoritmos de hash? Dê uma olhada na lista de bancos de dados comprometidos, especialmente os hashes usados ​​neles. Em muitos casos, foi usado MD5, na maioria das vezes SHA-1, e bcrypt foi usado em alguns lugares. Algumas senhas armazenadas em texto simples . Essa é a realidade a ser considerada.



Além disso, sabemos apenas quais hashes foram usados ​​nos bancos de dados comprometidos, e é altamente provável que as empresas que usaram algoritmos fracos também não tenham conseguido proteger sua infraestrutura. Dê uma olhada na lista, tenho certeza que você encontrará nomes familiares. Só porque uma empresa parece grande e respeitável não significa que está fazendo tudo certo.



Você escolhe a senha



O que você pode fazer como usuário? Se as senhas forem armazenadas em texto simples, não há nada a ser feito. Uma vez que o banco de dados é roubado, a complexidade da sua senha não importa.



Com algoritmos configurados corretamente, a complexidade de sua senha também não é importante, pode ser 12345ou asdf.



No entanto, em casos intermediários , especialmente ao usar SHA-1, a complexidade da senha é importante . As funções de hash geralmente não são projetadas para senhas, mas se você estiver usando uma senha complexa, ela compensa as fraquezas dos algoritmos.





Depende da configuração. Esses algoritmos têm vários componentes de segurança e, se configurados corretamente, podem evitar invasões.



Conclusão: com uma senha forte, você está protegido contra mais hacks do que com uma senha fraca. E como você não sabe o quão seguro é o armazenamento de senhas, você não pode saber o quão “seguro o suficiente” o serviço será. Portanto, presuma o pior quando sua escolha de senha ainda importa.



A exclusividade da senha não é suficiente



Ok, mas por que diabos você pensaria em usar um gerenciador de senhas e gerar uma senha única para cada site? Nesse caso, você é invulnerável ao enchimento de credenciais - quando um par conhecido de caixa de correio e senha é verificado em serviços diferentes na esperança de que a pessoa use esses dados em locais diferentes. Esta é uma ameaça séria porque a reutilização de senha é uma das principais preocupações de segurança. Você estará protegido contra isso ao gerar uma senha exclusiva para cada site.





Recheio de credenciais.



E se o banco de dados for roubado e todo o seu conteúdo se tornar conhecido por hackers, por que você ainda protegeria sua senha?



O fato é que você não sabe se o banco de dados foi hackeado e continua usando o serviço. Assim, os hackers terão acesso a todas as suas atividades futuras neste site. Você pode adicionar os detalhes do seu cartão bancário mais tarde e eles saberão sobre isso. Uma senha forte significa que os hackers não poderão fazer login em sua conta e não poderão comprometer suas ações futuras.





Usando o serviço após o hack.



Como avaliar a força da senha usando entropia



A força de uma senha é caracterizada pela entropia - uma representação numérica da quantidade de aleatoriedade que está contida na senha. Como estamos falando de números grandes, 1 099 511 627 776 (2^40)é mais fácil para nós dizer “40 bits de entropia”. E, uma vez que quebrar uma senha é uma enumeração de opções, quanto mais opções existem, mais tempo você precisa gastar na quebra.



Para caracteres aleatórios gerados gestor de senha, a entropia é calculada pela seguinte fórmula: log2(< > ^ <>).



O comprimento fica claro, mas qual é o número de caracteres diferentes? Depende das classes de caracteres incluídas na senha.





Por exemplo, uma senha de 10 letras maiúsculas e minúsculas aleatórias tem um log2(52 ^ 10) = 57 pouco de entropia.



Para calcular a entropia específica (sua quantidade em um símbolo de uma determinada classe), você pode usar a equação log2(n ^ m) = m * log2(n). Obtemos :, <> * log2(< >)onde a segunda parte é a entropia específica. Vamos recalcular a tabela anterior usando esta fórmula:





Para calcular a força de uma senha, você precisa pegar as classes de caracteres que estão incluídas na senha, pegar os valores de entropia para essas classes e multiplicar pelo comprimento. Para o exemplo acima, obtivemos uma senha de 10 maiúsculas e minúsculas 5.7 * 10 = 57 . Mas se você aumentar o comprimento para 14, a entropia saltará para 79,8 bits. E se você deixar 10 caracteres, mas adicionar uma classe de caracteres especiais, a entropia total será de 64 bits.



A equação acima permite que você calcule rapidamente a entropia da senha, mas há um problema. A fórmula está correta apenas se os símbolos forem independentes uns dos outros . Isso se aplica apenas a senhas geradas. A combinação H8QavhV2guatende a esse critério e possui 57 bits de entropia.



Mas se você usar senhas mais fáceis de lembrar, comoPa$$word11, então sua entropia será muito menor com o mesmo número de símbolos. O cracker não precisa passar por todas as combinações possíveis, ele só precisa passar pelas palavras do dicionário com algumas alterações.



Assim, todos os cálculos com a multiplicação do comprimento pela entropia específica são válidos apenas para as senhas geradas .



Guia de entropia



Quanto mais entropia uma senha tiver, mais difícil será quebrá-la. Mas quanta entropia é suficiente? Em geral, cerca de 16 caracteres estarão atrás dos olhos, tal senha tem 95-102 bits de entropia, dependendo das classes de caracteres. Qual é o limite mínimo? 80 bits? 60? Ou mesmo 102 bits são muito pequenos?



Existe um algoritmo que rivaliza com um algoritmo de hash ruim em velocidade, mas é muito melhor estudado: este é o AES.



É usado em todas as organizações governamentais e militares, o que significa que sua durabilidade é suficiente. E funciona rápido. Portanto, se uma chave AES com certa entropia não puder ser quebrada, uma senha com um hash ruim (mas não quebrada) será beneficiada.



O Instituto Nacional de Padrões e Tecnologia determinou os tamanhos das chaves que serão suficientes no futuro próximo. Lárecomendamos o uso de AES-128 durante o período "2019-2030 e posteriores". Como o nome indica, estamos falando de 128 bits de entropia.





Outra recomendação recomenda fazer chaves de pelo menos 112 bits:



Para fornecer força criptográfica para as necessidades do Governo Federal, pelo menos 112 bits são necessários hoje (por exemplo, para criptografar ou assinar dados).


Para obter 128 bits de entropia usando letras maiúsculas e minúsculas e números, você precisa de um comprimento de senha 22 ((5.95 * 22 = 131 ).



Outras considerações



Por que não usar caracteres especiais? Tento não usá-los porque quebram os limites da palavra. Ou seja, são necessários três cliques para selecionar um caractere especial em vez de dois, e isso pode levar a um erro se eu não inserir acidentalmente o restante da senha no campo.



E se você usar apenas letras e números, com um clique duplo, a senha inteira será destacada.



E se houver um limite de comprimento? Em alguns sites, a senha não pode ter até 22 caracteres. Às vezes, as senhas podem ser muito curtas, por exemplo, não mais do que 5 dígitos. Então, tudo o que resta é usar a senha o maior tempo possível.



Também há diretrizes para sites que trabalham com senhas, e a limitação de comprimento contradiz claramente essas diretrizes. Aqui está o que diz Instituto Nacional de Padrões e Tecnologia:



Você deve oferecer suporte a senhas de até 64 caracteres. Incentive os usuários a criar segredos fáceis de lembrar de qualquer tamanho, usando quaisquer caracteres (incluindo espaços) para ajudá-los a se lembrar.


E lembre-se, a proteção por senha de sites varia de terrível a excelente e eles não lhe dirão qual é a situação real. Se o comprimento máximo permitido da senha for pequeno, então parece que esse site está no lado ruim da escala.



Conclusão



As senhas devem ser fortes, mesmo se você não usar as mesmas combinações em lugares diferentes. A força de uma senha é medida pela entropia, e você precisa se esforçar para obter um valor de 128 bits. Para isso, as senhas com 22 caracteres, compostas por letras maiúsculas e minúsculas e números, são suficientes.



Isso o protegerá se o serviço for hackeado e um algoritmo de hash fraco, mas não hackeado, for usado.



All Articles