Вы находитесь на странице: 1из 21

UNIVERSIDADE ESTADUAL DO MARANHO

CENTRO DE CINCIAS TECNOLGICAS


ENGENHARIA DE COMPUTAO

LEANDRO COELHO
JEFFERSON GOMES
MAURO PINHEIRO

MD6: Message-Digest Algorithm

So Lus
2015
LEANDRO COELHO

JEFFERSON GOMES
MAURO PINHEIRO

MD6: Message-Digest Algorithm


Trabalho apresentado Henrique Mariano,
professor

da

disciplina

Programao

Cientfica, do Curso de Engenharia de


Computao, da Universidade Estadual do
Maranho, para obteno de nota referente
primeira avaliao.

So Lus
2015
SUMRIO
2

INTRODUO

FUNO HASH

2.1 Tabela hash


6

2.2 Hashing

2.3 Funes Hash

MD6: Message-Digest Algorithm

3.1 Notao

3.2 Entradas do MD6


8
3.2.1 Comprimento de mensagem d
8
3.2.2 Chave K (opcional)
9
3.2.3 Controle de modo L (opcional)
10
3.2.4 Numero de rodadas de r (opcional)
11
3.2.5 Outros parmetros MD6
11
3.2.6 Verses nomeao de MD6
11
4 Sada do MD6

12
3

5 Modo de operao do MD6


12
5.1 Modo de operao Hierrquico
13
5.2 Entrada da funo de compresso
15
5.2.1 ID nico U
16
5.2.2 A palavra de controle V
17
5.3 Modo de Operao com L=64
17
5.4 Modo de Operao MD6 PAR
18
5.5 Modo de Operao SEQ
19
6 Funo de Compresso MD6
20
7

Referncias

20

1 INTRODUO
Este trabalho descreve e analisa a funo hash MD6 e sua metodologia de
implementao. O algoritmo MD6 (Message-Digest 6) uma funo hash criptogrfica
que utiliza uma estrutura do tipo rvore de Merkle que permite computao paralela de
hashes para entradas muito longas. Os autores do algoritmo afirmam que o MD6 possui
resistncia provvel contra criptoanlise diferencial.

FUNO HASH
Tabela Hash

Na Cincia da Computao, uma tabela hash uma estrutura de dados que associa
chaves de pesquisa a valores. A utilizao de tabelas hash em estrutura de dados algo
importante e com aplicaes em diversas reas visto que fornecem um acesso muito
mais rpido aos elementos de um vetor, por exemplo, que qualquer outro mtodo (listas
encadeadas, rvores binrias, etc). Seu objetivo , a partir de uma chave simples, fazer uma
busca rpida e obter o valor desejado.
A funo hash a responsvel por gerar um ndice a partir de determinada chave. O
ideal para a funo hash que sejam sempre fornecidos ndices nicos para as chaves de
entrada. A funo perfeita (hashing perfeito) seria a que, para quaisquer entradas A e
B, sendo A diferente de B, fornecesse sadas diferentes.

1.1 Hashing
6

Uma funo hash h(x) transforma os elementos de um universo arbitrrio em inteiros


positivos relativamente pequenos que indexem uma tabela generalizando se

assim

operao de indexao, ou seja, os registros armazenados na tabela hash so


diretamente endereados a partir de uma transformao aritmtica sobre a chave de
pesquisa.
Existem dois problemas relacionados com o mtodo hashing. O primeiro consiste em
obter uma funo hash que distribua os registros de forma uniforme entre as entradas da
tabela. O segundo ocorre quando duas chaves distintas so mapeadas no mesmo endereo da
tabela, o que caracteriza uma coliso. O domnio das chaves de uma tabela hash
tipicamente muito maior do que o nmero de entradas da tabela. inevitvel que
duas chaves diferentes acabem sendo mapeadas para a mesma entrada da tabela pela funo
de disperso.

1.2 Funes Hash


Uma boa funo hash aquela que: (i) simples de ser computada e (ii) minimiza o
nmero de colises, isto , para cada chave de entrada, qualquer uma das sadas
possveis igualmente provvel de ocorrer. Se as chaves fossem verdadeiramente
randmicas, bastaria extrair alguns bits delas e us-los para compor o valor da funo hash,
mas na prtica sempre necessrio que o valor da funo hash seja dependente de todos os
bits da chave para satisfazer a propriedade (ii).

MD6: Message-Digest Algorithm

3.1 Notao
Seja w o tamanho da palavra em bits. MD6 definido em termos de uma palavra
padro w de 64 bits. Entretando seu design suporta implementao eficiente usando
outros tamanhos de palavras e diferentes variaes do MD6 podem ser facilmente
utilizadas para outros tamanhos de palavras.
[Neste trabalho uma palavra vai sempre se referir a 64 bits (8 bytes), w = 64bits ].
7

Usando W para denotar o conjunto [0,1]w de todas as palavras w-bit.


Se A (ou qualquer letra maiuscula) denotar uma lista de informao, ento a (em
minusculo) usualmente representa seu comprimento (o numero de itens de dados em A).
(Nosso uso de W acima uma exceo). Ns usamos tanto A[i] e Ai para representar o isimo elemento de A.
MD6 definido em relao ordenao dos bytes (big-endian): o byte de maior
ordem de uma palavra definido como sendo o primeiro byte (mais a esquerda).
assim como nas funes hash SHA porm diferente em MD5. Big-endian conhecido
tambm como ordem de rede uma vez que os protocolos de internet normalmente
usam a ordenao de bytes big-endian. Ns numeramos os bytes de uma palavra
comeando com o byte 0 como o byte de maior ordem e similarmente numeramos os
bits de um byte ou palavra tendo o bit 0 como o mais significante.

3.2 Entradas do MD6

Duas entradas so obrigatrias e outras trs so opcionais:


M Mensagem passar pela funo hash.
d - Comprimento da mensagem em bits.
K valor de chave (opcionais)
L controle de modo (opcionais)
r numero de rounds (opcionais)
Caso no especificado os valores opcionais assumem valores padres. Ns usamos H
para denotar a funo hash MD6.
A mensagem M deve ter comprimento finito m tal que 0<=m<=264.
De acordo com os requerimentos do NIST, o comprimento de m da mensagem de
entrada M medido em bits e no bytes, ainda que na prtica uma entrada ir
tipicamente consistir de algum numero inteiro m/8 bytes.
O comprimento de m no precisa ser conhecido antes que o MD6 hashing possa
comear. A NIST API para SHA-3 fornece sequencialmente a mensagem de entrada em
8

um nmero arbitrrio de peas, cada uma de tamanho arbitrrio, atravs de uma rotina
de atualizao. Uma chamada para o Final, sinaliza que a entrada terminou e que o
valor final de hash o desejado.
MD6 baseado em rvore e altamente paralelizvel. Se toda a mensagem M
inicialmente disponvel, ento um nmero de diferentes processadores podem comear
as operaes de hashing a uma variedade de pontos de partida dentro da mensagem; os
seus resultados podem em seguida ser combinados.

3.2.1 Comprimento de mensagem d


A segunda entrada para MD6 o bit de comprimento desejado d da sada da funo
hash, onde
0 <d 512.
O valor d deve ser conhecido no incio do clculo hash, uma vez que no apenas
determina o comprimento da sada final MD6, mas tambm afeta a computao MD6
em cada operao intermediria.
Alterar o valor de d deve resultar em uma funo hash "inteiramente diferente" - no
s a sada agora tm um comprimento diferente, mas o seu valor deve parecer no estar
relacionado com os valores de hash computados para a mesma mensagem para outros
valores de d.
MD6 naturalmente suporta os comprimentos necessrios para SHA-3: d = 224, 256,
384 e 512 bits, uma vez que eles esto dentro da faixa permitida para d.

3.2.2 Chave K (opcional)


Muitas vezes desejvel para trabalhar com uma famlia de funes hash {Hd, K},
indexados no apenas pelo tamanho digest d mas tambm por uma chave K tirada de
algum conjunto finito.
O usurio pode fornecer um K de keylen bytes, para qualquer comprimento de chave
keylen, onde
0 keylen 64.

( conveniente usar k minusculo para denotar o nmero mximo de 8 palavras de 64 bits


na chave, por isso usamos keylen para denotar o nmero real de bytes chave fornecida.)

H um Hd, k para cada combinao de comprimento de d e da chave K. O valor


padro para uma chave no especificada key nil de comprimento 0.
Hd = Hd, nil. A chave pode ser um "salt", como comumente usado para senhas de
hash. MD6 tenta garantir que nenhuma informao til sobre a chave vaze na sada, de
modo que a chave protegida contra divulgao.
A chave pode tambm ser um valor escolhido aleatoriamente, para aplicaes de
hashing aleatrias.

Dentro do MD6 a chave preenchida com zeros at que seu comprimento seja de
exatamente 64 bytes. O comprimento original keylen da chave em bytes preservada e
uma entrada auxiliar para a funo de compresso MD6.
O comprimento mximo da chave (64 bytes) bastante longo, o que permite que a
chave seja uma concatenao de subcampos utilizados para fins diferentes (por exemplo,
parte para uma chave secreta, uma parte para um valor randomizao) se desejado.
Se a chave desejada maior que 512 bits, ele pode primeiro ser hashed com MD6,
utilizando, por exemplo, d = 512 e K = nil; o resultado pode ento ser fornecido a MD6
como a chave.

3.2.3 Controle de modo L (opcional)


O modo normal de operao para MD6 baseado em rvore e hierrquica. Os dados
da mensagem a ser hashed so colocados nas folhas de uma rvore 4-ria
suficientemente grande. A rvore computada comeando pelas folhas em direo
raiz. Cada n no-folha da rvore corresponde a uma execuo da funo de
compresso, o que leva n = 64 palavras de entrada e produz c = 16 palavras de sada. Os
ltimos d bits de sada produzidos na raiz so tomados como a sada da funo hash.
simples de implementar MD6 uma vez que utiliza uma quantidade de
armazenamento no mais do que proporcional altura da rvore.
10

Em alguns casos (como com chips muito simples RFID ), o modo padro de
operao MD6 pode, contudo, exigir muita memria. Em tais casos, um variante de
MD6 pode ser especificado que usa menos memria (mas que tambm menos
paralelizvel).
Esta opo exercida com um parmetro de modo de operao" opcional L.
Variando L, MD6 varia suavemente entre um modo de funcionamento sequencial (L = 0)
e um modo de operao altamente paralelizavel tree-based (L = 64).
O modo padro de operao tem L = 64, para operao totalmente hierrquica. Na
verdade, qualquer valor de L 27 dar um hash hierrquico; L = 64 escolhido como
padro para representar um valor suficientemente grande pois o modo de operao
sequencial nunca invocado.

3.2.4 Nmero de rodadas de r (opcional)


O funo de compresso MD6 f tem um nmero controlvel de rounds r. grosso
modo, cada round corresponde a um ciclo de relgio em uma tpica implementao de
hardware, ou 16 passos em uma implementao de software.
O valor padro de r
r = 40 + d / 4;
assim Hd,k,l = Hd,k,l,40 + d / 4. Para d = 160, MD6 tem, assim, um padro de r = 80
rounds; para d = 512 MD6 tem um padro de r = 168 rodadas. Pode-se aumentar r para
aumentar a segurana ou diminuir para melhorar o desempenho, trocando de segurana
para o desempenho.

3.2.5 Outros parmetros MD6


H outros parmetros para a funo hash MD6 que tambm podem ser variados, pelo
menos em princpio (por exemplo, W, Q, c, t0 ... t5, ri, Li, Si para 0 i <rc). Com a
finalidade de definir o que "MD6" significa, essas quantidades devem ser consideradas
fixas com valores padro, como aqui descrito. Mas funes hash MD6 diferentes que
usam outras definies para esses parmetros poderiam ser consideradas e estudadas.

11

3.2.6 Verses nomeao de MD6


Sugerimos a seguinte abordagem para nomear vrias verses do MD6.
No caso mais simples, s precisamos especificar o tamanho: MD6-d especifica a
verso do MD6 tendo o tamanho d. Esta verso tambm tem a chave nula de valor 0, L =
64 (ou seja, operao totalmente hierrquica), e um nmero r de rounds que o padro
para aquele tamanho. Estas so as verses MD6 mais relevantes para SHA-3:
MD6-224
MD6-256
MD6-384
MD6-512.
Algumas das nossas experincias tambm consideram MD6-160, uma vez que
comparvel ao SHA-1. Implementaes de software de MD6 normalmente usam a
verso minscula do nome MD6 como em "md6sum".

Sada do MD6

A sada do MD6 uma string de bits D de tamanho d bits em comprimento:


D = Hd, K, L, r(M);
D um valor hash da mensagem de entrada M. E tambm comumente chamado de
message digest. The MD no nome MD6 reflete essa terminologia.

Modo de operao do MD6


Uma funo hash tipicamente construda a partir de uma funo de compresso,

que mapeia entradas fixas de comprimento para sadas (mais curta) de comprimento.
Um modo de operao especifica como a funo de compresso pode ser usada
repetidamente para permitir hashing de entradas de comprimento arbitrrio para
produzir uma sada de comprimento fixo. Para descrever uma funo hash, necessrio
descrever:
12

Seu modo de operao,


Sua funo de compresso, e
As vrias constantes usadas nas funes.

A funo de compresso f do MD6 recebe uma entrada de tamanho fixo (n = 89


palavras), e produz sadas de tamanhos fixos (porm com comprimento mais curto) (c =
16 palavras):
f : W^89 -> W^16.
A entrada de 89 palavras da funo de compresso f contm uma constante Q de 15
palavras, uma chave K de 8 palavras, uma ID nica U de uma palavra, uma palavra de
controle V e um bloco de dados B de 64 palavras.
Considerando que Q uma constante, uma funo de compresso MD6 efetiva ou
reduzia fQ mapeia entradas de 74 palavras em sadas de 16 palavras.

4.1 Modo de Operao Hierrquico


O modo padro de operao do MD6 baseado em rvore. Veja a Figura 1.
Uma implementao deste modo hierrquico requer armazenamento pelo menos
proporcional a altura da rvore. Uma vez que alguns dispositivos muito pequenos
podem no ter armazenamento suficiente disponvel, MD6 fornece um parmetro
limitativo de altura L. Quando atinge a altura L + 1, MD6 troca de operador paralelo
PAR para operador de compresso seqencial SEQ (Ver figura 2).
O modo MD6 de operao , assim, opcionalmente parametrizado pelo
nmero inteiro L, 0>= L <= 64, o que permite uma transio suave do modo de
operao baseado em rvore (para L muito grande)

para o modo iterativo de

operao para baixo para um modo iterativo de operao (para L = 0).

13

Figura 1
A partir da figura 1 podemos ver a estrutura padro do modo de operao do MD6 (L
= 64). O processo de computao se d de baixo para cima: a entrada M est no level 0,
e o valor hash final a sada da raz da rvore. Cada aresta entre dois ns
representa um pedao de 16 palavras (128 bytes ou 1024 bits). Cada pequeno ponto
preto no nvel 0 corresponde a um pedao de 16 palavras da mensagem de entrada. O
ponto cinza no nvel 0 corresponde a um ltimo bloco parcial (menos do que 16
palavras) que preenchido com zeros at que complete 16 palavras. Um ponto branco
(em qualquer nvel) corresponde a um pedao completado com zeros. Cada ponto preto
mdio ou grande acima do nvel 0 corresponde a uma aplicao da funo de
compresso. O grande ponto preto representa a operao de compresso final; aqui a
raiz. O valor hash final do MD6 obtido por truncagem do valor calculado na raz.

Figura 2

14

A figura 2 mostra a estrutura do modo sequencial de operao MD6 (L=0). A


computao da funo de compresso acontece da esquerda para a direita nicamente;
nvel 1 representa o processamento por SEQ. A sada da funo hash produzida pelo
n mais direita no nvel 1. O crculo branco esquerda no nvel 1 o vetor de
inicializao de 1024 bits em zero todos para o clculo sequencial a esse nvel. Cada
n tem quatro entradas de 1024 bits: um da esquerda, e trs de baixo; o tamanho eficaz
do bloco de mensagem de 384 bytes, uma vez que 128 bytes de 512 bytes da entrada
da funo de compresso so usados para a varivel de encadeamento.

Figura 3
A figura 3 demonstra a estrutura do modo de operao MD6 com um modo
intermedirio de valor de operao (L = 1). A computao da funo de compresso
inicia de baixo para cima e da esquerda para a direita; nvel 2 representa
processamento por SEQ. A sada de funo hash produzida pelo n mais direita
no nvel 2. O crculo branco esquerda, no nvel 2 o vetor de inicializao (todos
os valores zeros) para o clculo sequencial a esse nvel.

4.2 Entrada da funo de compresso


O modo de operao de MD6 formata a entrada para a funo de compresso
f da seguinte maneira: h n = 89 palavras, formatadas como segue com os tamanhos
padro. Veja a Figura 4. Os primeiros quatro itens Q, K, U, V, so entradas
auxiliares, enquanto que o ltimo produto B a carga de dados.
Q Um vetor constante (dando uma aproximao para a parte fracionria da raiz
quadrada de 6) de comprimento q = 15 palavras.
K uma chave de comprimento k = 8 palavras contendo uma chave fornecida de
keylen bytes.
15

U Um ID nico de uma palavra.


V Uma palavra de controle.
B Um bloco de dados de comprimento b = 64 palavras.

Figura 4

4.2.1

ID nico U
O ID U uma entrada auxiliar da funo de compresso (l; i). Ele es

exclusivamente especificaes da operao funo de compresso particular a ser


realizados, dando tanto o nmero de nvel para esta operao e seu ndice dentro do
nvel. Ver figura 5.

L um byte dando o nmero do nvel.


i sete bytes dando a posio dentro do nvel, com a primeira operao da
funo de compresso definada como i = 0.

Por exemplo, a primeira operao de compresso executada sempre tem U = (l, i) = (1,
0).

Figura 5
4.2.2

A palavra de controle V
A palavra de controle V uma entrada auxiliar da funo de compresso que d os
parmetros relevantes para a computao. Ver figura 6.

16

Figura 6

r Nmero de rounds na funo de compresso (12 bits).


L parmetro do modo (nvel mximo) (8 bits).
z definido como 1 se essa a operao final da compresso, caso contrrio

0. (4 bits)
p o nmero de bits que foram preenchidos como 0 no bloco de entrada B. (16

bits)
keylen o comprimento original (em bytes) da chave K fornecida. (8 bits)
d o comprimento desejado para a sada digest. (12 bits)

4.3 Modo de Operao com L=64


O Modo de operao do MD6 descrito na imagem abaixo. Com a configurao
padro de L = 64, a operao SEQ nunca usado; a operao PAR repetidamente
chamada para reduzir o tamanho da entrada por um factor de b/c = 64 /16 = 4 at que
um nico pedao de 16 palavras permanea. Por outro lado, a configurao L igual a 0
produz um modo inteiramente de funcionamento sequencial MD6.

4.4 Modo de Operao MD6 PAR

17

O operador MD6 PAR uma operao de compresso que produz nvel l da rvore a
partir do nvel l - 1. Com a configurao padro de L = 64, esta rotina usada repetidamente
em cada nvel da rvore para gerar o nvel seguinte mais elevada, at que o valor na raiz
produzido.

4.5 Modo de Operao SEQ


O Operador SEQ MD6 uma operao de hash sequencial que produz um
valor de sada de hash final. Com a configurao padro de L = 64, SEQ nunca
usada.

18

Funo de Compresso MD6

19

REFERNCIAS

National Institute of Standards and Technology. Cryptographic hash algorithm


competition. http://csrc.nist.gov/groups/ST/hash/sha-3/
R.Rivest,B.Agre,D.Bailey, C.Crutchfield, Y.Dodis,K.Fleming,A.Khan,J.
Krishnamurthy,Yin ,L.Reyzin, E.Shen, J.Sukha, D.Sutherland, E.Tromer,and Y. Yin. The
MD6

hash

algorithm.

January

15,

2009.

[SHA-3candidate

hash

function]

http://groups.csail.mit.edu/cis/md6/
I.Mironovand L.Zhang. Applications of SAT solvers to cryptanalysis of hash functions.
In 9th International Conferenceon Theory and Applications of Satisfiability Testing
(SAT2006), pages102115,2006.
Eric Brier, Shahram Khazaei, Willi Meier and Thomas Peyrin Linearization Framework
for Collision Attacks: Application to CubeHash and MD6 (Extended Version)
20

21