Quando se trata de formulários da Web, os invasores não têm muito tempo para adivinhar uma chave. O Google ou o Avance Network só permitem que alguém tente fazer login na sua conta algumas vezes vezes antes de "bloqueá-lo".
Quando os hackers obtêm o banco de dados interno de uma empresa, no entanto, eles têm todo o tempo do mundo para adivinhar sua senha, mesmo que seja criptografada.
Os sites devem usar senhas de hash e hash para proteger os usuários
Quando os sites armazenam suas senhas, eles devem (mas nem sempre) criar senhas com hash e senhas de usuário , para que alguém que possua o banco de dados do usuário não possa usá-lo.
Funções de hash, como SHA-256, são funções criptográficas unidirecionais. Qualquer dado, texto, imagem ou número pode ser "hash" e, independentemente da duração da entrada, o resultado sempre terá 256 bits. Quando codificado em hexadecimal (como abaixo), isso resulta em uma cadeia de 64 caracteres.
Como os invasores decifram sua senha
Para dificultar as coisas para possíveis hackers, os sites alteram as senhas com um "salt", que é um dado aleatório ( veja como a salga e o hash funcionam ).
Computar um hash a partir de texto, imagem ou arquivo é trivial e não levará ao computador uma quantidade considerável de tempo ou recursos. Mas se tudo o que você sabe é o hash, a única maneira de descobrir o valor original é um ataque de força bruta. É por isso que uma função de hash também é chamada de criptografia unidirecional. É fácil ir do texto para o hash, mas muito difícil ir para o outro lado.
Os crackers de senha na posse de um banco de dados de usuário roubado podem ver a lista de nomes de usuários, o valor do sal para cada usuário e o hash.
Com esses detalhes, eles podem tentar adivinhar as senhas de cada usuário, salt e hash, e verificar seus resultados com o hash armazenado no banco de dados. Se o hash corresponder, eles sabem que encontraram a senha.
Um invasor deve inserir exatamente o nome de usuário e a senha, pois a alteração do hash, mesmo que um pouquinho (como visto acima), resultará em um hash completamente diferente.
Quantas combinações de senhas existem?
Supondo que uma senha consista apenas em letras minúsculas, para cada caractere há 26 possibilidades. Portanto, você esperaria poder adivinhar uma senha de um caractere em 13 tentativas.
Uma senha de dois caracteres tem 26 × 26 opções e levaria (26 × 26) / 2 tentativas para decifrar.
A fórmula c = (m ^ n) / 2 descreve a relação entre as possibilidades de cada caractere (m) , o comprimento da senha (n) e o número esperado de suposições (c) .
A relação entre o comprimento da senha e o número de suposições para decifrá-la
- Senhas em minúsculas (m = 26)
- Maiúsculas e minúsculas (m = 52)
- Caracteres maiúsculos e minúsculos e especiais (m = 67)
Embora a complexidade e o comprimento contribuam para a força de uma senha, é muito mais valioso adicionar um caractere do que aumentar sua complexidade.
Adicionar um caractere extra a uma senha de quatro caracteres, usando apenas caracteres minúsculos, torna 26 vezes mais difícil de decifrar, enquanto dobrar os caracteres possíveis para 52 (ou seja, adicionar caracteres maiúsculos) torna 16 vezes mais difícil de decifrar.
A escala logarítmica torna mais aparente a relação entre o tamanho da senha e as suposições necessárias.
- Senhas em minúsculas (m = 26)
- Maiúsculas e minúsculas (m = 52)
- Caracteres maiúsculos e minúsculos e especiais (m = 67)
Quanto tempo leva para quebrar uma senha?
A rapidez com que um invasor pode decifrar sua senha depende da rapidez com que o hardware do computador do invasor é.
Um computador comum provavelmente faria cerca de 100.000 palpites por segundo. Uma GPU dedicada pode ser 100 vezes mais rápida que isso e é possível criar um farm de quebra de senha com centenas de GPUs.
Se assumirmos que o invasor possui um computador comum, capaz de 100.000 suposições por segundo, qualquer senha em minúscula com menos de seis caracteres levará menos de um minuto para quebrar.
Mas o tempo de resolução aumenta exponencialmente e uma senha de oito caracteres levaria 12 dias para ser quebrada. Uma senha de 12 caracteres levaria mais de 12.000 anos.
Se uma senha de 12 caracteres é suficiente, depende do valor do que ela protege e da escala do ataque. Se os invasores estiverem atrás de um único alvo, uma senha de 12 caracteres poderá estar ao seu alcance.
É crucial, portanto, proteger dados valiosos (como informações pessoais ou chaves privadas do Bitcoin ) com senhas muito mais longas. Ao criptografar sua carteira Bitcoin, por exemplo, uma chave com mais de 32 caracteres pode ser uma boa ideia.
Quanto mais informações um invasor tiver, mais rápido um crack acontecerá
Os cálculos acima assumem que o invasor não sabe nada sobre a senha, exceto se inclui caracteres maiúsculos ou minúsculos.
Na realidade, o atacante pode ter algumas suposições. Nas listas de senhas decriptografadas anteriores, sabemos quais são as senhas mais comuns . Se não houver um alvo específico, um invasor poderá verificar senhas comuns com uma lista de emails de forma relativamente rápida.
As pessoas também tendem a escolher senhas que só têm números no final (como o hello111) e incluem o nome do serviço ou URL em algum lugar. Uma senha usada para o Gmail que contém as palavras google ou gmail e tem quatro dígitos no final (como gmailpanther1234) é fácil de decifrar, mesmo que longa.
As pessoas também tendem a usar os nomes de seus animais de estimação ou filhos como senhas, às vezes em combinação com datas ou anos de nascimento, tornando sua senha mais fácil de adivinhar do que as pessoas imaginam.
Use senhas fortes com gerenciadores de senhas
A regra mais importante é: sempre use uma senha forte.
Para evitar o incômodo de inventar e lembrar tantas senhas robustas, use um gerador de senhas aleatórias para criar convenientemente senhas longas, exclusivas e verdadeiramente inimagináveis.
Se você armazenar essas senhas com um gerenciador de senhas , precisará lembrar apenas uma única senha (que você pode gerar com o seu app , para torná-la mais segura). Além disso, a autenticação de dois fatores ajuda a proteger as contas contra ataques ainda mais sofisticados, como senhas obtidas por ataques de phishing.