A evidência digital possui uma característica muito particular que é a possibilidade de ser duplicada com exatidão, mantendo sua integridade. A garantia de integridade de provas digitais é obtida através de uma função de cálculo de hash. O hash é uma sequência de bits geradas por um algoritmo de dispersão unidirecional, que é uma ferramenta capaz de cifrar uma sequência de dados de qualquer tamanho em uma sequência de dados de tamanho fixo, mas que não permite chegar aos dados de origem a partir de um valor de hash. Em geral o valor gerado é representado em notação hexadecimal, e visualizado através de letras (A a F) e números (0 a 9).
O resultado do cálculo aplicado à uma determinada quantidade de dados é utilizado como uma garantia de integridade destes dados, visto que este resultado é, em tese, único, sendo então utilizado como um identificador desta quantidade de dados, representando a unicidade de arquivos digitais ou sequência de informações.
Atualmente os algoritmos de hash mais utilizados são:
- MD5 – Message-Digest algorithm 5 de 128 bits, desenvolvido em 1991 por Ron Rivest pela RSA Data Security, Inc. e descrito na RFC 1321;
- SHA-1 – Secure Hash Algorithm de 160 bits, desenvolvido pelo NIST e NSA (National Security Agency) e considerado o sucessor do MD5;
- SHA-256 – Secure Hash Algorithm de 256 bits, desenvolvido pelo NIST e NSA (National Security Agency).
Muito utilizado em coleta e análise de prova digital, o hash é uma impressão digital eletrônica. Pode ser calculado para um arquivo, um texto, uma seção do disco ou nele inteiro, e gravado. Qualquer modificação no material, posterior a esse procedimento, alterará o hash obtido.
Na Computação Forense a utilização de algoritmos de hash se dá no cálculo de assinaturas sobre arquivos de dados e sequências de texto ou informação, de forma a permitir verificar alterações no conteúdo destes. Assim quando dados são utilizados como prova de crime, o hash destes garantirá que o conteúdo apresentado estará garantido a qualquer análise futura, desde que o cálculo de um novo hash com o valor anteriormente apresentado coincidam. Caso tenha um único bit alterado o valor do hash não coincidirá com o anterior.
Para exemplificar vamos calcular o hash sobre um arquivo denominado teste.txt, com um conteúdo qualquer, e em seguida inserir um único espaço no arquivo que será salvo como teste2.txt. Teremos então os seguintes valores calculados para cada arquivo:
Arquivo teste.txt hash MD5 - 559F3D8007C347BD132AA397A1891C95 hash SHA1 - FF0E878CE298CA8EA95AB84F106010AEFB5E417F hash SHA256 - 9408B908E516E076C77870D48DFCC2EB5FD2A4A37F4DD2425040CA189634C6AB Arquivo teste2.txt hash MD5 - 0E5DA28E25AAA8758D3F92317F2D6C1D hash SHA1 - 3324CFBA51A5AB0EAEA03744A7C7B2638A2BD857 hash SHA256 - C635D9BA223AA5B2213D1C036D23B9150B9492B46E1BAC876A0FF7669867DD13
Pode-se verificar que a mínima diferença provoca uma completa alteração do valor do hash. Tal comportamento é denominado “Efeito Avalanche”, altamente desejável em algoritmos de criptografia.
Na prática, quando trabalho com arquivos de imagem pericial, aplico sobre o arquivo o cálculo do hash e consigno este valor no relatório da análise. A qualquer tempo, caso seja necessário, uma nova imagem pode ser gerada da mídia e o hash obtido deverá ser o mesmo. No post final sobre duplicação pericial, que pode ser acessado aqui, comentamos sobre a ocorrência de termos um valor de hash diferente em cálculo sobre a realização de duas imagens consecutivas sobre uma mesma mídia suspeita. Tal fato pode fazer o perito induzir que a manipulação da mídia pode ter acarretado alterações em seu conteúdo, entretanto um disco rígido com superfície danificada (bad blocks) ou um SSD com pre-clearing (veja aqui) certamente produzirão valores de hash diferentes sem que haja qualquer erro na manipulação das evidências.
Feliz Ano Novo e até o próximo.