Uma senha é uma frase ou palavra secreta conhecida apenas por um usuário ou por um grupo restrito de usuários. Inúmeros sites exigem uma senha para proteger as contas dos usuários. A senha pode exigir um número mínimo de caracteres ou uma combinação de símbolo e número.
Mas isso garante uma senha mais segura?
Independentemente das intenções dos usuários da web, as políticas geralmente os forçam a escolher senhas terríveis. Evidências demonstram que quando sequências de procedimentos arbitrários são implementadas, os usuários ficam irritados e selecionam senhas horríveis. Isso ocorre em parte porque a maioria das pessoas não tem ideia de como suas senhas podem ser manipuladas.
Apesar dos repetidos avisos da comunidade de segurança cibernética, muitos acham que trocar letras por sua variante numérica - como "3ebra" - torna suas senhas mais difíceis de quebrar durante um ataque quando não faz nada. Quando isso acontece, os usuários têm dois problemas: uma senha não segura e uma ilusão de segurança porque a senha parece difícil para eles, mas é simples para um computador decifrar.
Você pode gerar ou ensinar outras pessoas como configurar boas senhas, entendendo melhor como as senhas são comprometidas e a matemática envolvida.
Supondo que um batedor de carteira roubou seu cartão de crédito e tentou usá-lo para acessar sua conta. (Vamos pensar também que seu banco não irá congelar o cartão de crédito roubado após cinco ou mais tentativas sem sucesso, como é feito hoje em dia). Como a maioria dos bancos, um PIN de 4 dígitos é usado para retirar dinheiro de um caixa eletrônico. Então, quais são suas chances de que seu dinheiro esteja seguro?
Quais são as chances de que ele adivinhe sua senha apenas por acaso?
São dez combinações possíveis já que o primeiro dígito do seu PIN pode ser qualquer número de 0 a 9. Também são dez opções porque não há uma limitação para o segundo dígito que restrinja suas possibilidades (por exemplo, se você não pudesse t usar um PIN com números recorrentes). O mesmo vale para o terceiro e quarto dígitos.
Existem 10.000 senhas possíveis, uma delas pode ser a sua: 10 x 10 x 10 x 10=10.000. Uma amostra aleatória de 10.000 senhas teria uma probabilidade de 1 em 10.000 de um invasor prever sua senha com precisão.
Como os humanos não podem gerar números aleatórios ou qualquer outra coisa, isso não é completamente verdade na realidade. Os preconceitos em nossos cérebros nos mantêm cativos. Mesmo que pareça que criamos os números aleatoriamente, tendemos a utilizar números sequenciais e pensar em grupos de dois ou quatro números com mais frequência.
Na prática, um subconjunto dessas 10.000 possibilidades ocorre com muito mais frequência no mundo real. Por exemplo, 1234 ou 1111 aparecem com muito mais regularidade do que 7148.
Embora seja improvável que o criminoso tenha tempo suficiente para inserir 10.000 combinações em um caixa eletrônico, um computador padrão pode realizar dezenas de bilhões de tentativas por segundo. Um invasor pode facilmente decodificar um PIN de 4 dígitos.
No entanto, embora seja improvável que o criminoso tenha tempo suficiente para digitar 10.000 combinações em um caixa eletrônico, um computador comum hoje pode realizar dezenas de bilhões de tentativas por segundo. Um PIN de 4 dígitos seria quebrado rapidamente. Aumentar o espaço de amostra de sua senha o máximo possível pode dificultar a quebra; é mais difícil deduzir a senha correta de um trilhão de combinações do que de mil.
Espaço de senha é o número total de combinações de senha possíveis para um alfabeto específico, conjunto de caracteres e comprimento máximo de senha. Ele mede a segurança e a vulnerabilidade das senhas calculando o número de suposições aleatórias que podem ser feitas para encontrar uma senha durante um ataque de força bruta.
O tamanho dos caracteres permitidos (alfabetos, números, símbolos, etc.) e o comprimento da senha determinam o tamanho do espaço potencial da senha. Como resultado, quanto mais longas e complexas forem as senhas usadas, mais desafiador se torna para os adversários forçar brutamente uma senha um tanto indecifrável porque o espaço da senha se torna amplo.
A partir do exemplo do cartão de crédito discutido anteriormente, calculamos o espaço amostral do PIN multiplicando o número de caracteres permitidos pelos dígitos permitidos. Dez caracteres elegíveis foram inseridos para cada dígito; 10 x 10 x 10 x 10 ou 104.
Para calcular o espaço amostral de senha, podemos usar a fórmula S = CN
Onde:
S = número total de senhas possíveis no espaço amostral
C = o número de caracteres no pool de caracteres disponíveis
N = o número de caracteres em nossa senha.
• Se você usar uma senha que tenha apenas letras maiúsculas, então C =26 • Se você usar uma senha que tenha letras maiúsculas e pelo menos uma letra minúscula, então C =52 • Se você usar uma senha que tenha letras maiúsculas, pelo menos uma letras minúsculas e números, então C =62 • Se você usar uma senha que abrange todos os caracteres, então C =95 Agora, vamos comparar senhas diferentes e ver como o espaço amostral será diferente: Exemplo: YGMEOH C = 26 (somente maiúsculas)N=6 S = 308.915.776 ou cerca de 309 milhões de combinações de senha
S= CN S= 266 = 308.915.776 combinações Usando todos os caracteres e deixando o tamanho da senha em 6 caracteres, temos:
Exemplo: @Q:t-2
C = 95
N=6
S = 735.091.890.625 ou cerca de 735 bilhões de combinações de senha
S= CN S= 956 = 735.091.890.625 combinações.
Usando apenas letras maiúsculas e aumentando o comprimento para 16 caracteres, temos
Exemplo: tfucbxqhjyepvgmw C = 26
N = 16 S = 43.608.742.899.428.874.059.776 combinações de senha, aproximadamente 59 bilhões de vezes maior que @Q:t-2, nosso último exemplo. S= CN S= 2616 = 43.608.742.899.428.874.059.776 combinações. A partir da ilustração acima, é evidente que o espaço de amostra torna uma senha difícil de decifrar, não a inclusão de símbolos ou números. Você pode aumentar o tamanho do espaço de amostra em comprimento com mais caracteres.
Nesse sentido, a entropia é uma medida do tamanho do espaço amostral de uma senha específica, ou seja, uma medida da força da senha. Não é fácil medir o quão difícil pode ser quebrar uma senha sem saber como ela foi gerada. No entanto, ter um número – expresso em bits de entropia – que mostre se uma senha pode ser fácil ou difícil de decifrar é útil. Quanto maior a entropia, mais difícil se torna quebrar a senha; quanto menor a entropia, mais fácil de quebrar. Lembre-se de que os dígitos decimais têm dez possibilidades; 0 a 9, mas um dígito binário – também conhecido como bit – tem apenas duas possibilidades que são 0 e 1; ou seja, S=CN para o dígito decimal é 10N, mas para um bit é 2E; onde E é o número de bits. Assim, se um bit representa um espaço amostral de duas possibilidades, então a entropia de 50 bits definirá um espaço de 250= 2 x 2 x 2 x … possibilidades. Portanto, uma senha de 50 bits de entropia será obtida de um pool de 250 senhas únicas. Da mesma forma, uma senha com 51 bits será obtida de uma coleção de 251, tornando-a mais difícil de quebrar do que uma senha de 50 bits. A fórmula abaixo pode ser usada para calcular a entropia de uma senha E= log2 (CN) OU E = N x log2 (C) Por exemplo, vamos calcular a entropia de BerbeCUE201 Aqui C= 26 +26 + 10 =62 N = 11 E = N x log2 (C) E = 11 x log2 (62) = 11 x 5,9541 E = 65,5 bits From S= 2E S = 265,5 S = 52.175.271.301.331.128.849.398 combinações Para Berbecue2(!0>}}} a entropia será E = N x log2 (C) E = 16 x log2 (95) = 16 x 6,5698 E = 105,1 bits From S= 2E S = 2105,1 S = 43.476.296.738.970.232.553.127.150.068.066.389 combinações Os exemplos acima validam que quanto maior a entropia, mais difícil se torna quebrar essa senha . Portanto, a entropia mostra quantas tentativas de tentativa serão necessárias para forçar uma senha. Estatisticamente, um adversário obterá a senha antes da última tentativa; eles não precisam passar por todas as combinações antes de obter a correta. Portanto, ao calcular um força da senha, o número esperado de palpites é considerado; isso geralmente é 50% do número de tentativas de adivinhação correta . Para uma senha de 105,1 bits, S= 2E – 1 S = 2105,1 – 1 S = 21.738.148.369.485.116.276.563.575.034.033.194 combinações.
Escolher uma senha segura envolve muitos fatores, que incluem entropia de senha. Se duas senhas tiverem a mesma entropia, uma pode ser moderadamente forte enquanto a outra é incrivelmente fraca. Isso se deve aos dicionários de senhas, que são catálogos de senhas vazadas disponíveis na internet.
O uso desses catálogos é conhecido como ataque de dicionário, em que qualquer adversário que tente quebrar sua senha tentará os dicionários de senha antes de tentar um ataque de força bruta. Portanto, se você usar uma senha neste dicionário, o número de bits de entropia não importará, pois a senha será quebrada rapidamente.
Se os administradores da Web armazenarem a senha em texto simples em seu servidor, será fácil para os invasores obter as senhas se puderem acessar o servidor da Web, mesmo que as senhas sejam fortes. É por isso que é altamente recomendável que as senhas sejam salgadas e hash antes de armazená-las. Em vez de armazenar a própria senha, uma assinatura da senha é produzida por meio de um mecanismo de hash e o hash é armazenado.
Salting de senhas envolve adicionar uma string de 32 ou mais caracteres aleatórios a uma senha antes de fazer o hash das senhas.
Algoritmos de hash são processos unidirecionais que tornam computacionalmente impossível reconstruir uma senha a partir da assinatura de hash. Esse algoritmo transforma as senhas em uma série opaca de números e letras irreversíveis. Vários algoritmos podem ser usados para hashing, incluindo bcrypt, MD5, SHA, NTLM e assim por diante.
Hashing de todas as senhas possíveis no espaço de amostra Como é impossível reverter as senhas com hash de volta ao texto simples, o que você pode fazer para decifrar uma senha é fazer o hash de todas as senhas possíveis desse espaço de amostra e encontrar o hash que corresponda ao seu destino. Se encontrado, você quebrou a senha com sucesso. As senhas de hash requerem taxa de hash – poder computacional – e alguns algoritmos de hash são mais difíceis de computar em comparação com outros, tornando-os demorados ou mesmo incapazes de quebrar. É por isso que o algoritmo SHA-1 é uma escolha de hash ruim porque os hashes SHA-1 são calculados pelo computador muito rapidamente, o que o torna vulnerável.
Conforme explicado anteriormente, quanto mais abrangente for seu espaço de amostra de senha, mais possibilidades um invasor terá de fazer o hash antes de encontrar qualquer hash correspondente. Às vezes, um espaço de amostra mais expansivo pode tornar impossível quebrar sua senha, levando centenas de milhares de anos para quebrar.
Ataque de força bruta Um ataque de força bruta ocorre quando um invasor tenta adivinhar a senha correta dentre as possibilidades de senha no espaço amostral. Isso é feito enviando várias senhas até que a correta seja encontrada. Essa abordagem é relativamente incomum porque é muito ineficaz. Ele só funciona se sua senha for muito curta, com menos de oito caracteres, ou se o invasor souber que você usou apenas um conjunto de caracteres específico (por exemplo, números, alfabetos ou apenas alfanuméricos).
Ataque de dicionário Os invasores geralmente fazem suposições sobre como as pessoas criam senhas, especialmente senhas mais longas, onde o ataque de força bruta é ineficiente. Como mencionado anteriormente sobre os preconceitos humanos, nossas escolhas são influenciadas por certos comportamentos. Assim, os invasores criam um catálogo de frases, padrões e senhas comumente usados, como "minha senha", e começam a experimentá-los para ver se seus hashes correspondem ao alvo. Caso contrário, eles ajustam ligeiramente, como mudar para "myp4ssword", e tentam novamente.
Qualquer ataque desse tipo é chamado de ataque de dicionário , em que o poder computacional é usado para criar senhas fictícias a partir de palavras que a maioria das pessoas provavelmente usará.