Thursday, November 26, 2009

MD5 - Controle de integridade- Questão 117

O MD5 (Message-Digest algorithm 5) é um algoritmo de hash de 128 bits unidirecional desenvolvido pela RSA Data Security, Inc., descrito na RFC 1321, e muito utilizado por softwares com protocolo ponto-a-ponto (P2P, ou Peer-to-Peer, em inglês) na verificação de integridade de arquivos e logins.

Foi desenvolvido em 1991 por Ronald Rivest para suceder ao MD4 que tinha alguns problemas de segurança.
Por ser um algoritmo unidirecional, uma hash md5 não pode ser transformada novamente no texto que lhe deu origem. O método de verificação é, então, feito pela comparação das duas hash (uma da mensagem original confiável e outra da mensagem recebida).
O MD5 também é usado para verificar a integridade de um ficheiro através, por exemplo, do programa md5sum, que cria a hash de um ficheiro. Isto pode-se tornar muito útil para downloads de ficheiros grandes, para programas P2P que constroem o ficheiro através de pedaços e estão sujeitos a corrupção dos mesmos. Como autenticação de login é utilizada em vários sistemas operacionais unix e em muitos sites com autentificação.

Vulnerabilidade

Como o MD5 faz apenas uma passagem sobre os dados, se dois prefixos com o mesmo hash forem construídos, um sufixo comum pode ser adicionado a ambos para tornar uma colisão mais provável.
Deste modo é possível que duas strings diferentes produzam o mesmo hash.






Tripwire e Hash

Boas funções hash devem, em teoria, tornar impossível a obtenção da cadeia de bits original a partir do hash.
A técnica de obtenção de hashes é usada, por exemplo, no armazenamento de senhas em sistemas GNU/Linux, de modo que não se armazena a senha propriamente dita, apenas seu hash, o qual é comparado com o hash da senha que o usuário digita quando do login.

O tripwire gera uma base de dados contendo informações como hash, permissões e data de modificação de cada arquivo pré-estabelecido para proteção.

No processo de verificação, uma nova base de dados é gerada e comparada à primeira, emitindo um relatório para o administrador.

No comments:

Post a Comment