Há poucos dias, lendo um parecer, me deparei com a seguinte afirmação:
“… o algoritmo criptográfico MD5 já foi comprometido há vários anos, sendo que há mais de 10 anos esse algoritmo é sabidamente inseguro para o fim de criação de resumos criptográficos destinados à garantia de integridade de dados. Há mais de uma década não faz mais qualquer sentido usar hash MD5 para tentar garantir a integridade de cópias forenses de dados.”
Eu estou sempre aberto a discussões e a novos pontos de vista, afinal o aprendizado é um caminho, e compartilhar é o destino. Então não me surpreendo com tal afirmação, pois já fui abordado algumas vezes sobre colisões nos hashes MD5 (Message Digest 5) e SHA-1 (Secure Hash Algorithm 1) e a impossibilidade do suas utilizações na prática forense, entretanto não é bem assim.
Os algoritmos de hash são utilizados em nossa atividade para fins de identificação, verificação e autenticação de arquivos de evidências, como imagens periciais, além da composição de hashsets, que são conjuntos de hashes como os da NIST NSRL (National Software reference Library) utilizado pelo KFF Server da AccessData, Encase da Guidance Software, utilizados para separar arquivos conhecidos e assim diminuir o esforço de análise, indexação e pesquisa, processo esse conhecido popularmente como deNIST. Outra utilização dos hashsets é na identificação de arquivos de imagens ligadas a prática de pedofilia e outros delitos.
Em 2011, a RFC-6151 passou a não recomendar o uso do MD5 em tarefas onde a resistência a colisões fosse necessária.
“MD5 is no longer acceptable where collision resistance is required such as digital signatures. It is not urgent to stop using MD5 in other ways, such as HMAC-MD5; however, since MD5 must not be used for digital signatures, new protocol designs should not employ HMAC-MD5.” – RFC-6151
O MD5, conforme recomendações, teve seu uso comprometido para fins criptográficos como armazenamento de hashes de senha e assinaturas digitais e as colisões do SHA-1, ainda estão em nível teórico, entretanto a utilização de ambos para fins de autenticação de arquivos ainda são válidas e utilizadas largamente nos softwares forenses conforme pode ser visto nas imagens abaixo.
Pesquisas realizadas em 2004, no sentido de comprovar tais colisões, obtiveram resultados positivos para arquivos de mesmo tamanho em bytes. Posteriormente, em outras pesquisas, essa condição foi quebrada, mas em compensação o tamanho final dos arquivos deveria permanecer o mesmo após o ataque. Cumprindo os requisitos determinados na pesquisa e passado pelo MD5 o resultado obtido era o mesmo, entretanto ao passar o SHA-1, os resultados se mostravam diferentes. Ainda assim uma análise do arquivo permitiu identificar facilmente ao final do arquivo, o bloco de dados injetado, comparado ao arquivo original.
A probabilidade de colisão no MD5 é de 1 em 2^128, imagine então, o esforço computacional necessário para efetuar a injeção de um arquivo em uma imagem forense e manter seu hash MD5 inalterado?
Se fosse tão simples e comprometedor como argumentam os mais pessimistas, porque os desenvolvedores de softwares forenses continuam utilizando o MD5 e o SHA-1 para autenticar imagens forenses? Injetar um arquivo modificado em uma imagem forense e provocar uma colisão ao ponto de obter um mesmo valor de hash, mesmo que sendo o MD5, é uma tarefa que beira a ficção, pois geraria alterações dos hashes de pastas e subpastas que contivessem tal arquivo, assim como sua referência em outros arquivos de sistemas, de tal forma que obter o mesmo hash da aquisição não seria factível. Imagine, se você utilizar o MD5 em conjunto com o SHA-1, o nível de segurança será infinitamente maior, pois a colisão a ser provocada após a injeção de dados forjados em uma imagem pericial, deveria manter os valores dos hashes MD5 e SHA-1 inalterados.
Em um exemplo muito utilizado para demonstrar isso, tomemos dois algoritmos: A soma e a multiplicação.
1+1=2 e 1+2=3
A injeção de dados de forma conveniente podem provocar a colisão.
1+1+5=7 e 1+2+4=7
Como resultado da colisão temos dois conjuntos de dados com mesmo resultado, mas alterando o algoritmo a ser aplicado aos dados, teremos outro resultado.
1x1=1 e 1x2=2
Nos dados onde anteriormente obtivemos colisões, teremos um resultado bem diferente.
1x1x5=5 e 1x2x4=8
Assim podemos ver quanto é complexo comprometer dois algoritmos simultaneamente, como o MD5 e o SHA-1.
Já proteger um banco de senhas com hash MD5 é muito arriscado, pois podemos gerar uma lista de palavras em hash MD5 (rainbow tables) e promover um ataque de comparação de dicionários. Aqui a vulnerabilidade é grande, não porque o MD5 seja ruim, mas sim porque ele é muito rápido, permitindo realizar um ataque em um curto espaço de tempo. Algoritmos de hashes bons para proteger senhas, devem ser lentos.
Logo a utilização de hashes MD5 e SHA-1, na minha humilde opinião e de outros tantos profissionais da área, continua a ser válida para a autenticação de arquivos de imagens forenses.
É possível encontrar grande quantidades de artigos sobre o tema pela internet, mas apenas para ajudar, vejam os artigos a seguir:
- http://www.forensicmag.com/article/2008/12/hash-algorithm-dilemma-hash-value-collisions
- https://digital-forensics.sans.org/blog/2009/01/07/law-is-not-a-science-admissibility-of-computer-evidence-and-md5-hashes/
- http://federalevidence.com/pdf/2013/02Feb/EE-4thAmSearch-Power of Hash.pdf
Até o próximo.