Você está na página 1de 8

A FUNÇÃO DO ALGORITMO HASH MD4

John Mário Rinaldini Adão 1


Sirlei Izabel da Silveira2
Daniel Rosa da Silveira3

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


2Graduando em Sistemas de Informação - UNIESP
3Bacharel 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 é
executado
Sun Sparc 1.450.000 bytes / segundo
Micro Vax II 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 Sj, 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 2128 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 220 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 22 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/standards-
initiatives/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.

Você também pode gostar