A tabela arco-íris era um recurso usado para quebrar funções de hash criptográficas com o objetivo de descobrir senhas em texto simples , utilizando um banco de dados de autenticação pré-computado . As soluções baseadas na tabela arco-íris usam um algoritmo para buscar rapidamente as informações necessárias para quebrar os hashes de senhas. Embora os algoritmos modernos de adição de salt e hashing de senhas tenham praticamente invalidado a tabela arco-íris, ainda existem muitas aplicações que não utilizam essas ferramentas facilmente acessíveis e, em vez disso, dependem de senhas com hash simples, seja por preguiça ou por desatenção a detalhes importantes.
A ideia de usar tabelas rainbow ou outros métodos de quebra de hash vem do uso de hashes de senhas em bancos de dados de autenticação. Qualquer sistema que utilize senhas para autenticação precisa armazená-las de uma forma ou de outra. O pior cenário é que o desenvolvedor do aplicativo armazena as senhas como texto simples, o que deixa as senhas de todos os usuários registrados extremamente vulneráveis a acessos não autorizados por hackers ou até mesmo por administradores internos do sistema. Embora essa prática ruim seja conhecida há décadas, ela ainda é comum em aplicativos online.
Uma coisa um pouco, mas sem dúvida inútil, que alguns programadores fazem é realizar um único cálculo de hash da senha. Existem algoritmos de hash comuns que convertem senhas para o que podem parecer sequências aleatórias de caracteres, mas, na realidade, são muito simples de fazer engenharia reversa com uma tabela Rainbow. Quando você se autentica em um sistema, a senha inserida é hashada usando o mesmo algoritmo usado para armazená-la no banco de dados de senhas. Se os hashes corresponderem, você será autenticado com sucesso. É aqui que entra uma Tabela Rainbow.
Uma tabela rainbow armazena todos os hashes unidirecionais de senhas em texto simples, de 1 a 7 ou talvez 8 caracteres. (Uma tabela rainbow de 8 caracteres para um algoritmo de hash simples ocupará até 32 petabytes de espaço no banco de dados para armazenar!). Quando um hacker rouba um cache de hashes de senhas simples, ele pode consultar o valor do hash na tabela rainbow para encontrar a senha em texto simples.
Com o advento do uso de salt em senhas de até 32 caracteres, as tabelas rainbow não existem mais para realizar essas buscas (Fonte: Rainbow Tables are Dead ). Mais importante ainda, muitos binários padrão realizam hash iterativo de senhas. Isso ocorre quando uma senha com salt é submetida a hash repetidamente, um número determinado de vezes, e o valor de hash final, digamos, o 764º hash da senha original com salt, é armazenado no banco de dados para comparação futura na autenticação do aplicativo. As tabelas rainbow não conseguem quebrar essas senhas.
Quando hackers roubam um cache de senhas, eles podem determinar rapidamente se as senhas foram "salgadas" e "hash" N vezes, usando uma tabela rainbow para pesquisar as 100 principais senhas. Se encontrarem uma correspondência, podem trabalhar de trás para frente para determinar se os programadores foram preguiçosos e não salgaram as senhas ou as "hash" iterativamente, ou ambos. Muitas vezes, os desenvolvedores pularam essas etapas importantes, então os hackers agora têm suas senhas por meio de engenharia reversa em uma simples tabela rainbow.
As tabelas Rainbow são uma maneira rápida e eficaz de quebrar senhas sem sal e com hash único. Se você desenvolver um aplicativo em sua PME, pergunte como as senhas são armazenadas. Pergunte ao desenvolvedor qual o tamanho do SALT (8 caracteres é pequeno, 32 caracteres são suficientes) e, em seguida, pergunte quantas iterações ele faz nas senhas antes de armazenar o valor com hash. O LastPass faz o hash de senhas mais de 100,000 vezes na Senha Mestra. Isso pode ser excessivo para sua organização, mas algumas centenas a milhares devem ser necessárias.
As funções comuns de salting e hashing incluem: “ Argon2 , scrypt , bcrypt e PBKDF2 ”.
Seja qual for a sua escolha, trate isso como um requisito crítico no desenvolvimento do seu aplicativo. Se você não puder incorporar o SSO ao seu esquema de senhas e precisar armazenar hashes de senhas, precisará usar o salt e o hash iterativamente do seu banco de dados de senhas usando as ferramentas mencionadas neste artigo.
Fontes:
Leitura Adicional:
Como proteger seu site contra violações de dados
A Mesa do Arco-Íris Está Morta
Criptografia, Hashing e Salting: qual é a diferença
Termos relacionados:
Descubra e compartilhe as últimas tendências, dicas e melhores práticas de segurança cibernética, além de novas ameaças às quais você deve ficar atento.
Autora: Katie Boquetti | Editorial: Craig Taylor Editorial de Craig Taylor: Já sabíamos disso há algum tempo...
Ler mais
Autora: Katie Boquetti | Editorial: Craig Taylor Editorial de Craig Taylor: Um CAPTCHA deve testar se...
Ler maisTenha uma visão mais aguçada dos riscos humanos com uma abordagem positiva que supera os testes de phishing tradicionais.
