Como as redes e sistemas armazenam senhas e outras informações de login?

Anos atrás, senhas aleatórias de oito caracteres consistindo em letras maiúsculas e minúsculas, símbolos e números eram realmente difíceis de decifrar. Em alguns casos, levava anos para quebrar uma senha como esta.

Graças à tecnologia em constante mudança e ao aluguel de hardware, esse tempo foi reduzido para horas. Mas como essas senhas são armazenadas em primeiro lugar? Verificar As senhas são coisa do passado: por que estão sendo eliminadas este ano.

Como as senhas são armazenadas na Internet?

Os sistemas não armazenam as senhas dos usuários diretamente em arquivos ou bancos de dados, porque um invasor pode controlar o banco de dados no qual os sistemas mantêm as senhas. Em vez disso, os sistemas criptografam os detalhes do usuário, deixando o invasor diante de uma versão criptografada de cada senha.

Existem alguns algoritmos avançados que os sistemas usam para criptografar senhas. Um desses algoritmos é o algoritmo de criptografia simétrica. Que é um tipo de criptografia em que você pode usar a mesma chave para criptografar e descriptografar. A segurança dos algoritmos de criptografia simétrica traz alguns riscos, pois há apenas uma chave designada para descriptografia. Por esse motivo, os sistemas geralmente não usam algoritmos de criptografia simétrica.

Em geral, o método que os sistemas usam para criptografia são os algoritmos de hash. Eles são para verificação e representação de integridade de dados, não para criptografia de dados. Algoritmos de hash convertem dados em um hash de tamanho fixo. Geralmente representa um hash exclusivo de dados. O que a função hash deve fazer é gerar dados de comprimento fixo de uma quantidade arbitrária de dados como seu mapa.

Graças ao algoritmo de hash, se um invasor assumir o controle do banco de dados que contém a senha, ele não poderá acessar a senha de volta daqui. Há uma nuance muito importante que você deve prestar atenção aqui. Teoricamente, um invasor que invada um sistema usando o mesmo algoritmo de hash para todas as combinações de senhas pode comparar os resultados obtidos. Se o invasor obtiver o mesmo valor como resultado dessas comparações, ele detectou a versão aberta da senha. Este método é sobre tentativa e erro, e este tipo de ataque é geralmente chamado de ataque de força bruta.

No início dos anos 8, levaria centenas de anos para tentar todas as combinações de senhas de 123456 caracteres criptografadas com algoritmos populares de hash. Obviamente, combinações muito simples como “XNUMX” ou “minha senha” não estão incluídas nessa combinação. Com o desenvolvimento de tecnologias de software e hardware hoje, a maneira de quebrar senhas também mudou muito. Verificar Você pode confiar na segurança dos gerenciadores de senhas?

O efeito da aparência das placas gráficas

Os recursos de processamento de dados paralelos dos processadores gráficos (GPUs) melhoraram com o tempo. As placas gráficas não são capazes de executar operações versáteis como CPUs de uso geral. Portanto, embora haja muitos núcleos e poder de processamento paralelo, não faz sentido usá-lo para quase todos os problemas como um processador.

No entanto, é possível implementar alguns algoritmos de hash usados ​​para senhas de forma muito eficiente em uma GPU. O número de hashes por segundo que você pode obter com as CPUs tradicionais cresceu exponencialmente com as novas placas gráficas.

Para ter uma ideia, examine o número de hashes por segundo (o termo taxa de hash refere-se à velocidade na qual um computador é capaz de realizar cálculos de hash) para algoritmos de hash como NTLM, MD5 e SHA1 na tabela abaixo. Basta, por enquanto, saber que esses algoritmos são apenas um algoritmo de hash. Para criar esta tabela, usei um cluster de 25 GPUs AMD Radeon.

algoritmoO número de hashes por segundo
NTLM350.000.000.000
MD5180.000.000.000
SHA163.000.000.000
Criptografia SHA512364.000
Bcrypt71.000
Scrypt33.000

Veja bem, com esse sistema, você pode gerar um hash NTLM de 350 bilhões de vezes por segundo. Isso significa que você pode tentar todas as combinações de senha de 8 caracteres em menos de 6 horas. Além disso, o hardware neste exemplo é de anos anteriores. Imagine o poder da quebra de senha hoje.

O que os desenvolvedores de software devem fazer?

O caminho que os programadores devem seguir é muito simples: eles devem preferir algoritmos que demorem mais para calcular valores de hash ao criptografar senhas. Os desenvolvedores precisam saber não apenas como o algoritmo que estão usando funciona em uma CPU, mas também como ele é resiliente em relação ao reino das placas gráficas.

Se os desenvolvedores estiverem trabalhando com uma estrutura de software que também lida com criptografia de senha como Django, Ruby on Rails e Spring Security, eles devem verificar se as decisões corretas foram tomadas na estrutura em termos de segurança.

Por exemplo, usado Inventar , que é uma das bibliotecas mais usadas para operações de usuário em Ruby on Rails, usa Bcrypt como o algoritmo de hash padrão. Ele também permite que você use outro método como um algoritmo de hash. O algoritmo Bcrypt é confiável porque ainda leva muito tempo para a placa de vídeo chegar ao ponto certo.

Resumindo, quanto mais você calcula o valor do hash, mais seguro você fica.

Quantos caracteres sua senha deve conter?

Cada caractere adicional que você usar aumentará geometricamente o número de tentativas e erros necessários para quebrar a senha e torná-la mais segura.

Vamos considerar esta situação em dois cenários diferentes. Considere os valores dados na tabela acima para o algoritmo de hash NTLM e imagine que você vai tentar quebrar a senha. Imagine segmentar senhas de oito caracteres ou mais.

contador de caracteresLetras maiúsculas/minúsculas e númerosLetras maiúsculas/minúsculas, números e símbolos especiais
8menos de um minutoDois minutos
9Dois minutosDuas horas
10Duas horasUma semana
11Seis diasسنتين
12Um ano200 سنة
13Mais de 100 anosMais de 1000 anos

Ao examinar a tabela, você pode ver que uma senha de pelo menos 12 caracteres é segura quando todas as combinações de letras maiúsculas/minúsculas, números e símbolos especiais são usados. Se você não usar símbolos especiais, será necessário usar 13 caracteres para obter o comprimento de uma senha segura. Se você usar o método de hash Bcrypt em vez do hash NTLM neste sistema, 8 caracteres serão suficientes. No entanto, você não tem a oportunidade de ver qual método de hash é usado pelo sistema que você acessa pela web que contém sua senha. É por isso que você deve considerar todas as possibilidades.

O principal problema para os desenvolvedores de software é que é quase impossível convencer os usuários a ter uma senha de pelo menos 12 caracteres. Hoje, pode-se dizer que a taxa de uso de uma senha desse tamanho é baixa. Portanto, de acordo com o cenário de uso do sistema desenvolvido, será necessário encontrar um compromisso que os usuários aceitem para melhorar a segurança de suas senhas.

Uma sugestão final para os desenvolvedores é verificar não apenas o comprimento mínimo, mas também o comprimento máximo das entradas provenientes dos formulários que você forneceu ao usuário. Especialmente quando você habilita o uso de um algoritmo de hash computacionalmente lento como o Bcrypt para fins de segurança, você pode correr alguns riscos se não controlar o comprimento máximo da senha digitada pelo usuário. Por exemplo, os invasores podem realizar ataques tentando simultaneamente dezenas de senhas de 100 caracteres com algumas solicitações especialmente criadas. Em tal situação, é muito provável que seu sistema deixe de responder a outros usuários. Verificar Como descobrir se suas senhas estão sendo vendidas online.

Conselho do usuário final

Mantenha sua senha com pelo menos 12 caracteres e certifique-se de incluir combinações de letras maiúsculas e minúsculas, números e símbolos especiais. Nunca esqueça que os sistemas que armazenam sua senha podem ser invadidos e suas informações podem ser mal utilizadas. Você não pode saber quais algoritmos o sistema usa para criptografar a senha, então cabe inteiramente a você tomar precauções e criar senhas fortes. Você pode ver agora Como gerar senhas fortes online que são difíceis de decifrar.

Ir para o botão superior