Noutro dia em conversa com um colega, ele questionava-me para que servia um número grande que era fornecido em determinados sites (por exemplo, no site onde se faz download do Ubuntu). Depois de reflectir sobre que número seria esse, cheguei a conclusão que ele falava das hashes MD5. Para lhe explicar qual o objectivo dessa hash (chave sumário), comecei por lhe fazer a seguinte pergunta:
Como é que sabes que o ficheiro que fizeste download não possui erros e é efectivamente o que está no site?
Pois bem, de forma a conferir a integridade de um determinado ficheiro/conteúdo, foi criado o MD5.
O MD5 (Message-Digest algorithm 5) é um algoritmo de hash de 128 bits unidirecional desenvolvido pela RSA Data Security, Inc., descrito na RFC 1321. Por ser um algoritmo unidirecional, um hash MD5 não pode ser transformado novamente na password (ou texto) que lhe deu origem.
Como funciona?
- O emissor e o receptor escolhem uma função de Hash;
- O emissor envia a mensagem em conjunto com o sumário;
- O receptor calcula o seu próprio sumário e compara com o original. No caso de não serem iguais, comprova-se que a mensagem foi modificada em trânsito
Por exemplo, imaginem que eu quero fazer download de uma distribuição Ubuntu Linux. Depois de fazer o download do ficheiro .iso, calculo a hash desse mesmo ficheiro e comparo com as hash divulgada no próprio site. Este tipo de informação é também comum em sites P2P.
Exemplo 1
Por exemplo, vamos considerar que vamos fazer download de um ficheiro e quem tem o seguinte hash (informação a vermelho). Usei o transmition para efectuar o download do ficheiro.
Depois de efectuado o dowload, pode-se aceder às propriedades do ficheiro e confirmar se o hash é o mesmo para conferir assim a integridade do ficheiro.
Exemplo 2 – Conferir a integridade com md5sum
Para conferirmos a integridade via linha de comandos, podemos usar o comando md5sum. Em termo de exemplo, vamos verificar a integridade de uma imagem do Linux através do calculo do seu hash e comparando com o hash disponibilizado no site UbuntuHashes
O MD5 é um excelente algoritmo que como já referido permite obter um “sumário” de toda a informação.
Lembram-se daquele dígito que vem nos bilhetes de identidade mais antigos e que o pessoal dizia que era o número de nomes iguais? Bem, o significado não é bem esse :), basicamente aquilo é um digito de validação que permite validar o número do BI, que após uma fórmula nos dá aquele valor.
O MD5 funciona de forma idêntica, pois criamos uma hash e validamos se efectivamente é esse o ficheiro. Assim temos a certeza se o mesmo ficheiro tem erros ou foi alterado num processo de transferência.