Whirlpool (função hash) - Whirlpool (hash function)

Hidromassagem
Em geral
Designers Vincent Rijmen , Paulo SLM Barreto
Publicado pela primeira vez 2000, 2001, 2003
Derivado de Square , AES
Certificação NESSIE
Detalhe
Tamanhos de resumo 512 bits
Reivindicações de segurança Tamanho de hashsum grande
Estrutura Miyaguchi-Preneel
Rodadas 10
Melhor criptoanálise pública
Em 2009, um ataque rebote foi anunciado que apresenta colisões completas contra 4,5 rodadas de Whirlpool em 2 120 operações, colisões de partida semi-livre contra 5,5 rodadas em 2 120 tempo e quase colisões de partida semi-livre contra 7,5 rodadas em 2 128 Tempo.

Em ciência da computação e criptografia , Whirlpool (às vezes denominado WHIRLPOOL ) é uma função hash criptográfica . Foi desenhado por Vincent Rijmen (co-criador do Advanced Encryption Standard ) e Paulo SLM Barreto , que o descreveu pela primeira vez em 2000.

O hash foi recomendado pelo projeto NESSIE . Também foi adotado pela Organização Internacional de Padronização (ISO) e a Comissão Eletrotécnica Internacional (IEC) como parte do padrão internacional conjunto ISO / IEC 10118-3 .

Características de design

O Whirlpool Galaxy (M51), que inspirou o nome do algoritmo.

Whirlpool é um hash projetado após a cifra de bloco quadrado e é considerado parte dessa família de funções de cifra de bloco.

Whirlpool é uma construção Miyaguchi-Preneel baseada em um Advanced Encryption Standard (AES) substancialmente modificado .

O Whirlpool recebe uma mensagem de qualquer comprimento inferior a 2 256 bits e retorna um resumo da mensagem de 512 bits .

Os autores declararam que

"WHIRLPOOL não é (e nunca será) patenteado. Pode ser usado gratuitamente para qualquer finalidade."

Mudanças de versão

O Whirlpool original se chamará Whirlpool-0 , a primeira revisão do Whirlpool se chamará Whirlpool-T e a versão mais recente se chamará Whirlpool nos seguintes vetores de teste.

  • Na primeira revisão em 2001, o S-box foi alterado de um gerado aleatoriamente com boas propriedades criptográficas para um que tem melhores propriedades criptográficas e é mais fácil de implementar em hardware.
  • Na segunda revisão (2003), foi encontrada uma falha na matriz de difusão que baixou a segurança estimada do algoritmo abaixo de seu potencial. Alterar as constantes da matriz rotativa 8x8 de (1, 1, 3, 1, 5, 8, 9, 5) para (1, 1, 4, 1, 8, 5, 2, 9) resolveu esse problema.

Estrutura interna

A função hash Whirlpool é uma construção Merkle – Damgård baseada em uma cifra de bloco tipo AES W no modo Miyaguchi – Preneel .

A cifra de bloco W consiste em uma matriz de estados de 8 × 8 bytes, para um total de 512 bits.

O processo de criptografia consiste em atualizar o estado com quatro funções de rodada em 10 rodadas. As quatro funções de rodada são SubBytes (SB), ShiftColumns (SC), MixRows (MR) e AddRoundKey (AK). Durante cada rodada, o novo estado é calculado como .

SubBytes

A operação SubBytes aplica uma permutação não linear (a S-box) a cada byte do estado de forma independente. A caixa S de 8 bits é composta por 3 caixas S menores de 4 bits.

ShiftColumns

A operação ShiftColumns muda ciclicamente cada byte em cada coluna do estado. A coluna j tem seus bytes deslocados para baixo nas posições j .

MixRows

A operação MixRows é uma multiplicação à direita de cada linha por uma matriz 8 × 8 . A matriz é escolhida de forma que o número do ramo (uma propriedade importante quando se olha para a resistência à criptanálise diferencial ) seja 9, que é o máximo.

AddRoundKey

A operação AddRoundKey usa xor bit a bit para adicionar uma chave calculada pela programação de chave ao estado atual. A programação da chave é idêntica à própria criptografia, exceto que a função AddRoundKey é substituída por uma função AddRoundConstant que adiciona uma constante predeterminada em cada rodada.

Hashes Whirlpool

O algoritmo Whirlpool passou por duas revisões desde sua especificação original de 2000.

As pessoas que incorporam a Whirlpool provavelmente usarão a revisão mais recente da Whirlpool; embora não haja fraquezas de segurança conhecidas nas versões anteriores do Whirlpool, a revisão mais recente tem melhores características de eficiência de implementação de hardware e também é provável que seja mais segura. Conforme mencionado anteriormente, é também a versão adotada no padrão internacional ISO / IEC 10118-3 .

Os hashes Whirlpool de 512 bits (64 bytes) (também chamados de resumos de mensagens ) são normalmente representados como números hexadecimais de 128 dígitos .
O seguinte demonstra uma entrada ASCII de 43 bytes (sem incluir aspas) e os hashes Whirlpool correspondentes:

Versão String de entrada Hash computado
Whirlpool-0 " A rápida raposa marrom salta sobre o cachorro preguiçoso "
 4F8F5CB531E3D49A61CF417CD133792CCFA501FD8DA53EE368FED20E5FE0248C
 3A0B64F98A6533CEE1DA614C3A8DDEC791FF05FEE6D971D57C1348320F4EB42D
Whirlpool-T " A rápida raposa marrom salta sobre o cachorro preguiçoso "
 3CCF8252D8BBB258460D9AA999C06EE38E67CB546CFFCF48E91F700F6FC7C183
 AC8CC3D3096DD30A35B01F4620A1E3A20D79CD5168544D9E1B7CDF49970E87F1
Hidromassagem " A rápida raposa marrom salta sobre o cachorro preguiçoso "
 B97DE512E91E3828B40D2B0FDCE9CEB3C4A71F9BEA8D88E75C4FA854DF36725F
 D2B52EB6544EDCACD6F8BEDDFEA403CB55AE31F03AD62A5EF54E42EE82C3FB35

Mesmo uma pequena mudança na mensagem irá (com uma probabilidade extremamente alta de ) resultar em um hash diferente, que geralmente parecerá completamente diferente, exatamente como dois números aleatórios não relacionados. O seguinte demonstra o resultado da alteração da entrada anterior por uma única letra (um único bit, mesmo, em codificações compatíveis com ASCII), substituindo d por e :

Versão String de entrada Hash computado
Whirlpool-0 " A rápida raposa marrom salta sobre o preguiçoso eog "
 228FBF76B2A93469D4B25929836A12B7D7F2A0803E43DABA0C7FC38BC11C8F2A
 9416BBCF8AB8392EB2AB7BCB565A64AC50C26179164B26084A253CAF2E012676
Whirlpool-T " A rápida raposa marrom salta sobre o preguiçoso eog "
 C8C15D2A0E0DE6E6885E8A7D9B8A9139746DA299AD50158F5FA9EECDDEF744F9
 1B8B83C617080D77CB4247B1E964C2959C507AB2DB0F1F3BF3E3B299CA00CAE3
Hidromassagem " A rápida raposa marrom salta sobre o preguiçoso eog "
 C27BA124205F72E6847F3E19834F925CC666D0974167AF915BB462420ED40CC5
 0900D85A1F923219D832357750492D5C143011A76988344C2635E69D06F2D38C

O hash de uma string de comprimento zero é:

Versão String de entrada Hash computado
Whirlpool-0 ""
 B3E1AB6EAF640A34F784593F2074416ACCD3B8E62C620175FCA0997B1BA23473
 39AA0D79E754C308209EA36811DFA40C1C32F1A2B9004725D987D3635165D3C8
Whirlpool-T ""
 470F0409ABAA446E49667D4EBE12A14387CEDBD10DD17B8243CAD550A089DC0F
 EEA7AA40F6C2AAAB71C6EBD076E43C7CFCA0AD32567897DCB5969861049A0F5A
Hidromassagem ""
 19FA61D75522A4669B44E39C1D2E1726C530232130D407F89AFEE0964997F7A7
 3E83BE698B288FEBCF88E3E03C4F0757EA8964E59B63D93708B138CC42A66EB3

Implementações

Os autores fornecem implementações de referência do algoritmo Whirlpool, incluindo uma versão escrita em C e uma versão escrita em Java . Essas implementações de referência foram lançadas em domínio público.

Adoção

Dois dos primeiros programas criptográficos convencionais amplamente usados ​​que começaram a usar o Whirlpool foram o FreeOTFE , seguido pelo TrueCrypt em 2005.

VeraCrypt (um fork do TrueCrypt ) incluiu Whirlpool (a versão final) como um de seus algoritmos de hash suportados.

Veja também

Referências

links externos