A FUNÇÃO DO ALGORITMO HASH MD4 John Mário Rinaldini Adão 1 Sirlei Izabel da Silveira 2 Daniel Rosa da Silveira 3 RESUMO MD4 é uma função hash desenvolvida por Ronald L. Rivest em 1990. O MD4 foi desenvolvido para ser prático e rápido. Em 1996, a empresa RSA Data Security informou através um boletim que o MD4 era vulnerável e não deveria ser mais utilizado. A RSA fez esse pronunciamento considerando o trabalho de análise criptográfica realizado pelo professor Hans Dobbertin, no qual foi conduzido um ataque de força brutas obre o MD4que encontrou colisões quando a hash MD4 atingiu a complexidade de 2 22 computadas.esse mesmo professor também mostrou como encontrar colisões de mensagens significativas. Embora atualmente o MD4 seja considerado inseguro o seu desenvolvimento foi muito importante, pois ele serviu como base, tanto a sua filosofia como a sua estrutura, para o desenvolvimento de muitas outras funções hashes, como por exemplo: o MD5, SHA-1, HAVAL e RIPEMD - 160.Neste artigo, apresentamos a função hash, procurando agrupar os resultados divulgados das análises criptográficas para estabelecer uma opinião sobre a questão da segurança de dados e informações. Palavras Chaves: Criptografia, funções hash, MD4, segurança de dados. INTRODUÇÃO Em definição, uma função hash é um algoritmo que mapeia os dados decomprimento variável para dados de comprimento fixo. Os valores retornados por uma função hash são chamados valores hash, códigos hash, somas hash,ou simplesmente hashes (RSA LABORATORIES, BULLETIN 4, 1996). 1 Graduando em Sistemas de Informação - UNIESP 2 Graduando em Sistemas de Informação - UNIESP 3 Bacharel em Tecnologia e Processamento de Dados pela Universidade de Uberaba (1999), pós-graduado em Desenvolvimento de Software com Ênfase em Software Livre pela Universidade Federal de Lavras e mestrado em Educação pelo Centro Universitário Moura Lacerda (2015). Atualmente é professor das disciplinas de Administração de Redes e Inteligência Artificial na UNIESP de Ribeirão Preto/SP.
Tecnicamente, uma hash seria a transformação de um grande volume de dados para um pequeno volume de informação. Para manter a integridade de um hash, que é uma seqüência de bits, eles são gerados por um algoritmo de dispersão. De modo geral ele é representado em base hexadecimal utilizando de letras (A a F) e números (0 a 9). Tal seqüência tem como objetivo identificar um arquivo ou uma informação de forma quase exclusiva (EMC², O que é uma função hash?, 2013). As funções hashes são muito utilizadas para acelerar o processo de assinaturas digitais em documentos, mas também podem ser utilizadas em uma vasta variedade de assuntos, tais como: em senhas, correio eletrônico, criação de chaves criptográficas, transferência de arquivos, etc(rsa LABORATORIES, BULLETIN 4, 1996) Os algoritmos hash mais populares são os de 16 bytes (128 bits) dafamília MD de funções, pois seu design foi inovador e bem sucedido. O MD4, em particular, mesmo considerado frágil, foi bastante utilizado como base para a concepção de muitas outras funções hash - incluindo o SHA-1 de 20 bytes (160 bits), RIPEMD e o MD5 que até pouco tempo atrás era amplamente utilizado no mundo inteiro como função hash em softwares com protocolo peer to peer (P2P), verificação de integridade e logins(rsa LABORATORIES, BULLETIN 4, 1996). 1. O QUE É O ALGORÍTIMO HASH MD4? A HISTÓRIA E O CONCEITO GERAL. O MD4 foi desenvolvido pelo professor matemático Ronald R. Rivest em 1990 Na época, R. Rivest trabalhava no MIT (Laboratório de Ciências da Computação) da empresa RSA Data Laboratories. A sigla MD significa message digest, cuja tradução livre é resumo de mensagem ou mensagem resumida (RONALD RIVEST, RFC 1186, 1990). O algoritmo hash MD4 foi divulgado oficialmente no artigo RFC 1186 (RONALD RIVEST, 1990) e especificado no artigo RFC 1320 (RONALD RIVEST,1992). E conforme R. Ronald, o conceito da hash MD4 é:
[..] uma mensagem de digerir algoritmo que toma como entrada uma mensagem de comprimento arbitrário e produz como saída uma de 128 bits impressão digital ou digesto (resumo) de mensagem de entrada [...] (RFC 6150, RSA Data Laboratories, 1996). O MIT (Laboratório de Ciência da Computação) apresentaram os resultados obtidos em testes realizados em máquinas com sistemas 32 bits, conforme quadro a seguir: Quadro I - Resultados MIT para uso do MD4 em máquinas de 32 bits Máquina MD4 quantas vezes que é Sun Sparc Micro Vax II executado 1.450.000 bytes / segundo 70.000 bytes / segundo 80286 20 Mghz 32.000 bytes / segundo Fonte: RFC 1186, RSA DATA LABORATORIES, 1990 O MD4 procura otimizar a performance, sem restringir, a reutilização dos componentes de sistema como, por exemplo, cifradores de bloco e aritmética modular. Esse algoritmo foi desenvolvido para ser bastante rápido especificamente para a implementação de software em máquinas de sistemas 32 bits, pois foi projetado para ser codificado bastante compactado, ou seja, não necessitava de grandes substituições de tabelas (RONALD RIVEST, RFC 1186,1990). 2. TEORIA E FUNCIONAMENTO. O MD4 é uma função hash unidirecional que foi projetado especialmente para sistemas 32 bits, usando aritmética básica e operações booleanas que estavam disponíveis em computadores modernos daquela época (Cryptanalysis of the Hash Functions MD4 and RIPEMD, 2005). Considerando que a sequência de entrada para MD4 deve ser de comprimento múltiplo de 512 bits, e a saída é de 128 bits. Se a entrada não for múltipla de 512 bits, ela deve ser completada por um bit 1 seguida de zeros suficientes para que o total de bits seja 64 bits menor que o próximo múltiplo de 512. Exemplo:
Sequência de entrada de N bits: 1110001001000100...010101100 bit 1 seguido de zeros: 10000...000 64 bits: comprimentooriginal de N RESULTADO: 1110001001000100...010101100/10000...000/64 bits Sendo que nos últimos 64 bits da mensagem ficam armazenados o comprimento da entrada original. Ou seja, o algoritmo MD4 comprime qualquer mensagem de bits de comprimento arbitrário em um valor hash de 128 bits. Desta forma, cada mensagem é processada em blocos de 512 bits, e o MD4 a comprimi em um valor hash de 128 bits usando uma função de compressão. A explicação a seguir foi extraída do artigo Cryptanalysis of the Hash Functions MD4 and RIPEMD e do artigo RFC 1320 de Ronald Rivest. A função de compressão MD4 tem três rounds.cada rodada usa uma função nãolinear booleana diferente definida da seguinte forma: F (X, Y, Z) = (X Y) ( X Z) G (X, Y, Z) = (X Y) (X Z) (Y Z) H (X, Y, Z) = X Y Z De acordo com o exemplo apresentado pelo grupo de cientistas chineses, asletras X, Y, Z são palavras de 32 bits. As operações de três funções são todas realizadas bit a bit. Sendo X é o complemento bit a bit de X,, e são, respectivamente, o bit a bit E, XOR e OR. Cada rodada da função de compressão repete 16 operações, essa medida semelhante éfeita em cada passo, desta forma cada uma das quatro variáveis de encadeamento a, b, c, d são atualizadas. φ0 (a, b, c, d, mk, s) = ((A + F (b, c, d) MK +) mod 232) «s φ1 (a, b, c, d, mk, s) = ((A + G (b, c, d) de mk + + 0x5a827999) Mod 232) «s φ2 (a, b, c, d, mk, s) = ((A + H (b, c, d) de mk + + 0x6ed9eba1) Mod 232) «s O valor inicial para MD4 é definido como: (a, b, c, d) = (0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476)
A Função MD4 de compressão. Para um bloco M de 512-bits da mensagem preenchida Módulo M, M = (M0, M1,..., M15), a função de compressão é definida como se segue: 1. Seja (aa, bb, cc, dd) ser a entrada de encadeamento variáveis para M. Se M é a primeira mensagem bloco para ser hash, então (aa, bb, cc, dd) são ajustados para ser o valor inicial.caso contrário, eles são a saída de compressão do bloco mensagem anterior. 2. Execute as 48 etapas seguintes (três voltas): Para j = 0, 1,2 e i = 0, 1, 2, 3 a = φj (a, b, c, d, WJ, 4i, sj, 4i) d = φj (d, a, b, c, WJ, 4i + 1, sj, 4i + 1) c = φj (c, d, a, b, WJ, 4i + 2, sj, 4i + 2) b = φj (b, c, d, a, WJ, 4i + 3, sj, 4i + 3) Aqui S j, 4i + k (k = 0, 1, 2, 3) são constantes dependentes da etapa, WJ, 4i + k é um palavra mensagem e «s j, 4ºI + k é circularmente deixou shift por sj, posições 4i + k bits 3. Adicionar as variáveis de encadeamento a, b, c e d, respectivamente, para a entrada de encadeamento de variáveis para produzir as variáveis finais de encadeamento para a mensagem do atual bloco. aa = (a + aa) mod 232 bb = (b + bb) mod 232 cc = (c + cc) mod 232 dd = (d + dd) mod 232 Se M é o último bloco de mensagens, H (M) = aa bb cc dd é o valor de hash para a mensagem M. Caso contrário, repetiria o processo acima com o próximo bloco de mensagem de 512 bits e (aa, bb, cc, dd) com as variáveis de entrada de encadeamento. 3.POR QUE O MD4 NÃO É SEGURO? Particularmente, o MD4 foi um projeto inovador e rápido para uma função hash. Foram bem sucedidas as análises criptográficas para redução
das rodadas nas versões de MD4. No entanto, a concepção do MD4 apresentou problemas na segurança (EMC²). Em 1996, no Bulletim 4, a empresa RSA Data Laboratories declarou que o MD4 não deveria ser mais utilizado. [...] O trabalho de Dobbertin tem vindicado tão cedo preocupação sobre MD4 e tem sido demonstrado que as colisõespara MD4 pode ser encontradas em cerca de um minuto numa PC típico. Além disso, uma variante de MD4 chamadamd4-estendida, que oferece um valor de hash de 256 bits em vez da saída MD4 habitual de 128 bits, foi igualmentecomprometida pelo trabalho de Dobbertin. Embora grande parte desse trabalho de análise criptográfica está exclusivamente em como encontrar colisões, um conhecimento considerável sobre o comportamento de MD4 também foi adquirido, particularmente quando combinada com outro, independentemente do trabalhode analise criptográfica. Ambos MD4 e MD4- estendidanão devem ser usadas [...] (RSA DATA LABORATORIES, 1996). Posteriormente foram realizados outros ataques de força bruta em versões do MD4, tanto no primeiro como nos últimos rounds faltando foram desenvolvidas rapidamente colisões por Den Boer, Bosselaers e outros. Dobbertin mostrou como encontrar colisões para a versão completa do MD4 menos de um minuto em um PC típico. Em um outro trabalho de analise criptográfica, Dobbertin (Encryption Software Rápido, 1998) mostrou que uma versão reduzida do MD4 em que a terceira rodada da função de compressão não é executado, mas todo o resto permanece o mesmo, não é só de ida. Claramente, MD4, deve ser agora considerada quebrado (EMC²). CONSIDERAÇÕES FINAIS A proposta inicial do algoritmo MD4 era de ser seguro o suficiente para suportar ataques força bruta e somente encontrar mensagens distintas com o mesmo valor hash. O MD4 deveria exigir cerca de 2 64 operações para encontrar uma mensagem que gere um valor hash conhecido gastaria, da ordem de 2 128 operações. Quando o algoritmo foi divulgado ao público pela primeira vez, Bert Den Boer e Antoon Bosselaers conseguiram realizar analises criptográficas das duas ultimas fases do algoritmo. Em outro estudo,ralph Merckle conseguiu
atacar as duas primeiras fases. EliBiham demonstrou um ataque baseado numa análise criptográfica diferenciais para as duas primeiras fases. Foram encontradas colisões para MD4 em 2 20 computações de funções de compressão. Por esta razão, MD4 não é recomendado para uso como uma função hash resistente a colisão. Hans Dobbertin desenvolveu um ataque ao MD4 que consegue gerar colisões em cerca de um minuto na maioria dos PCs. Posteriormente em 2005, um grupo de cientista chineses divulgaram um estudo de analise criptográfica sobre o MD4 e RIPEMD, no qual eles encontraram colisões na função na rodadas de 2 2 apenas (Xiaoyun Wang, Xuejia Lai, Dengguo Feng, Hui Chen, Xiuyuan Yu), Embora atualmente MD4 seja considerado inseguro, logo após a sua publicação surgiram várias outras funções hash mais complexas, mas que utilizam a mesma filosofia, design e estruturas; como por exemplo, o seu sucessor MD5e muitas outras como: Secure Hash Algorithm (SHA-1) e a função hash RIPEMD e suas variações RIPEMD 128 e RIPEMD 160 (Xiaoyun Wang, Xuejia Lai, Dengguo Feng, Hui Chen, Xiuyuan Yu).
REFERÊNCIAS BIBLIOGRAFICAS BOER, Bert Den; BOSSELAERS, Antoon. An Attack on the Last Two Rounds of MD4. Lecture Notes In Computer Science,[s.l.], p.194-203, jan. 1992. Springer Science + Business Media. DOI: 10.1007/3-540-46766-1_14. EMC², RSA Data Laboratories: WHAT ARE MD2, MD4, AND MD5? Disponível em: <http://www.emc.com/emc-plus/rsa-labs/standardsinitiatives/md2-md4-and-md5.htm>. Acesso em: 25 jun. 2015. DOBBERTIN, Hans. Cryptanalysis of MD4. J. Cryptology, [s.l.], v. 11, n. 4, p.253-271, set. 1998. Springer Science + Business Media. DOI: 10.1007/s001459900047. RIVEST, Ronald L.. The MD4 Message Digest Algorithm. Advances In Cryptology-crypt0 90, [s.l.], p.303-311, 1991. Springer Science + Business Media. DOI: 10.1007/3-540-38424-3_22. RIVEST, Ronald L.. The MD4 Message Digest Algorithm. 1990. Disponível em: <http://tools.ietf.org/html/rfc1186>. Acesso em: 31 maio 2015. RIVEST, Ronald L.. The MD4 Message-Digest Algorithm. 1992. Disponível em: <http://tools.ietf.org/html/rfc1320>. Acesso em: 05 jun. 2015. TURNER, Sean; CHEN, Lily. MD4 to Historic Status. 2011. Disponível em: <http://tools.ietf.org/html/rfc6150>. Acesso em: 15 maio 2015. LABORATORIES, RSA. On Recent Results for MD2, MD4 and MD5. 1996. Disponível em: <ftp://ftp.rsa.com/pub/pdfs/bulletn4.pdf>. Acesso em: 10 maio 2015. WANG, Xiaoyun et al. Cryptanalysis of the Hash Functions MD4 and RIPEMD. Advances In Cryptology Eurocrypt 2005,[s.l.], p.1-18, 2005. Springer Science + Business Media. DOI: 10.1007/11426639_1.