Introdução
Uma função hash criptográfica é um conjunto de etapas que permitem converter um bloco arbitrário de dados em uma sequência de comprimento fixo. Qualquer mudança nos dados de entrada leva a uma mudança no valor da função. As funções de hash são usadas para calcular somas de verificação, ao gerar uma assinatura eletrônica, ao armazenar senhas em sistemas de segurança na forma de um código hash, etc.
A família CubeHash de funções hash foi proposta como o novo padrão SHA-3 na competição de hash do Instituto Nacional de Padrões e Tecnologia (NIST) de 2009 .
Este artigo descreve o princípio de operação dessa família e também discute a resistência do algoritmo a vários ataques.
Descrição do Algoritmo
A seguir está um algoritmo de trabalho de acordo com a especificação [1].
O funcionamento do algoritmo é determinado por 3 parâmetros:
- o tamanho da sequência de saída em bits,
- o número de rodadas,
- o tamanho dos blocos da mensagem de entrada em bytes,
A ideia do algoritmo é transformar sequencialmente o estado com base na sequência de entrada. O algoritmo consiste em 5 etapas:
inicialização do estado interno
quebrar uma mensagem em blocos
transformação iterativa de estado
.
32 - ( little-endian).
3
. .
.
. . . .
.
.
.
1,
.
.
F
, , , .
10 :
,
,
,
,
1
,
,
4
,
[2]:

-
:
: - .
: 2 .
-, , - , , , .
CubeHash
, . .. , , .
50% . . , 128 [3].
. . , . . , 64 [3].
.
[4] , ,
.
.
( ),
.
,
, .
, , , . ,
,
, [2]. , , ,
.
F
128- [2]. 15
:
|
AABBCCDD |
EEFFGGHH |
IIJJKKLL |
MMNNOOPP |
|
ABABCDCD |
EFEFGHGH |
IJIJKLKL |
MNMNOPOP |
|
ABBACDDC |
EFFEGHHG |
IJJIKLLK |
MNNMOPPO |
|
ABCDABCD |
EFGHEFGH |
IJKLIJKL |
MNOPMNOP |
|
ABCDBADC |
EFGHFEHG |
IJKLJILK |
MNOPNMPO |
|
ABCDCDAB |
EFGHGHEF |
IJKLKLIJ |
MNOPOPMN |
|
ABCDDCBA |
EFGHHGFE |
IJKLLKJI |
MNOPPONM |
|
ABCDEFGH |
ABCDEFGH |
IJKLMNOP |
IJKLMNOP |
|
ABCDEFGH |
BADCFEHG |
IJKLMNOP |
JILKNMPO |
ABCDEFGH |
CDABGHEF |
IJKLMNOP |
KLIJOPMN |
|
ABCDEFGH |
DCBAHGFE |
IJKLMNOP |
LKJIPONM |
|
ABCDEFGH |
EFGHABCD |
IJKLMNOP |
MNOPIJKL |
|
ABCDEFGH |
FEHGBADC |
IJKLMNOP |
NMPOJILK |
|
ABCDEFGH |
GHEFCDAB |
IJKLMNOP |
OPMNKLIJ |
|
ABCDEFGH |
HGFEDCBA |
IJKLMNOP |
PONMLKJI |
32- . . , , , . , .
.
( )
,
.
,
, . .
.
(cycle per byte cpb). , 1 .
SHA-256, SHA-512 CubeHash16/32 Intel Core 2Duo 6f6 (a) Intel Core 2 Duo E8400 1067a (b) [5]:
11.47 cpb: CubeHash 16/32, (b), amd64 architecture.
12.60 cpb: SHA-512, (b), amd64 architecture.
12.60 cpb: SHA-512, (a), amd64 architecture.
12.66 cpb: CubeHash 16/32, (a), amd64 architecture.
12.74 cpb: CubeHash 16/32, (b), x86 architecture.
14.07 cpb: CubeHash 16/32, (a), x86 architecture.
15.43 cpb: SHA-256, (b) x86 architecture.
15.53 cpb: SHA-256, (b), amd64 architecture.
15.56 cpb: SHA-256, (a), amd64 architecture
17.76 cpb: SHA-512, (b), x86 architecture.
20.00 cpb: SHA-512, (a), x86 architecture
22.76 cpb: SHA-256, (a), x86 architecture
CubeHash SHA-3 -, NIST. Cubehash , . , CubeHash , .
. , CubeHash 8 / 1-512 CubeHash 1 / 1-512, CubeHash 1 / 1-512 , CubeHash 1 / 2-512. - CubeHash 1/128- h.
:
.
DJ Bernstein. Especificação Cubehash (2.b.1)
Vikash Jha. Criptoanálise de Cubehash.
Philip Doughty Jr. Um ataque genérico a CubeHash, um candidato SHA-3.
Benjamin Bloom e Alan Kaminsky. Ataques de bloco único e testes estatísticos em CubeHash.
DJ Bernstein. Ajuste do parâmetro CubeHash: 16 vezes mais rápido.