O que é Rainbow Table

O que é Rainbow Table

É extremamente comum armazenarmos uma senha em um bancos de dados usando um hash criptográfico computado a partir dessas senhas. Assim, em teoria, se alguém conseguir acessar a tabela que armazena esses hashes, não poderá saber qual é a senha que o gerou, pois as funções de hash empregadas são funções de uma via (one-way), o que significa que o algoritmo não é reversível.

Porém, isso não garante efetivamente que seja impossível descobrir as senhas. Existem técnicas que podem levar um indivíduo mal-intencionado a obter senhas de forma indevida, como ataques de força bruta e ataques de dicionário – mas o tipo de ataque que pode ser mais efetivo neste caso é o emprego de Rainbow Tables.

Rainbow Table é um método para descobrir senhas a partir de hashes, de forma rápida. A ideia básica é pré-computar uma longa lista de senhas, com seus respectivos hashes gerados por algum algoritmo específico, e armazenar essa lista em um arquivo, no formato de uma tabela. Assim, é possível reverter uma função de hash criptográfico.

Uma rainbow table pode conter muitos bilhões de hashes com as respectivas senhas que os geraram, podendo ser consultada em questão de segundos. Assim, a partir de um hash, é possível retornar a senha correspondente.

Exemplo

Suponha que o usuário Fábio use a senha LaranjaLima para se logar em um sistema. Essa senha, após ser criptografada usando um algoritmo de hash como o MD5, fica assim:

58D8295B3B5966D00DFC5304544D806F

Este é o hash MD5 da senha fornecida, que para este exemplo gerei usando um gerador de hash online, e que seria armazenado no banco de dados de senhas do sistema. A partir desse hash, não há função que permita determinar a senha original.

Porém, se este hash for fornecido a uma aplicação que utilize rainbow tables, pode ser possível descobrir a senha que o originou. Existem inclusive bancos de dados de hashes online para descobrir senhas de hashes comuns – vamos testar esse hash no site HashKiller:

Quebrar senha hash MD5 com rainbow table

Note que ao fornecer o hash da senha, o site retornou imediatamente a senha que escolhemos. Nível de segurança dessa senha com a criptografia MD5? Quase nulo, como podemos ver.

Onde encontrar Rainbow Tables

Muitos sites na Internet distribuem rainbow tables para download, como por exemplo o Free Rainbow Tables, em arquivos que podem chegar a vários Terabytes (TB) de tamanho.

Como se proteger contra Rainbow Tables

A forma mais prática e efetiva de evitar o emprego de rainbow tables para descobrir senhas é o uso de salt na hora de criar o hash de uma senha. Isso basicamente anula o valor das tabelas, pois é praticamente impossível computar previamente os hashes de todas as combinações de caracteres gerados pela combinação de senhas com strings de salt – desde que sejam longas.

Além disso, alguns algoritmos são mais seguros que outros, tornando difícil o processo de criação de rainbow tables. Evite usar algoritmos de hash vulneráveis, como o MD5 e o SHA1, por exemplo.

Sobre Fábio dos Reis (1420 Artigos)
Fábio dos Reis trabalha com tecnologias variadas há mais de 25 anos, tendo atuado nos campos de Eletrônica, Telecomunicações, Programação de Computadores e Redes de Dados. É um entusiasta de Unix, Linux e Open Source em geral, adora Eletrônica e Música, e estuda idiomas, além de ministrar cursos e palestras sobre diversas tecnologias em São Paulo e outras cidades do Brasil.
Contato: Website

Escreva um comentário

Seu e-mail não será divulgado


*