HAVAL

La versión actual de la página aún no ha sido revisada por colaboradores experimentados y puede diferir significativamente de la versión revisada el 11 de mayo de 2018; las comprobaciones requieren 6 ediciones .
HAVAL
Desarrolladores Yuliang Zheng , Josef Pieprzyk , Jennifer Seberry
Creado 1992
publicado 1992
tamaño de hash 128, 160, 192, 224, 256 bits
Número de rondas 96, 128, 160
Tipo de función hash

HAVAL  es una función hash criptográfica desarrollada por Yuliang Zheng , Josef Pieprzyk y Jennifer Seberry en 1992 .

Dado un mensaje de entrada arbitrario, la función genera un valor hash denominado resumen del mensaje , que puede tener una longitud de 128, 160, 192, 224 o 256 bits. El número de iteraciones es variable, de 3 a 5. El número de rondas en cada iteración es 32. Es una modificación de MD5 .

Algoritmo

Definamos funciones booleanas que se utilizan para realizar operaciones bit a bit en palabras.
1.ª iteración 2.ª iteración 3.ª iteración 4.ª iteración 5.ª iteración El algoritmo recibe un flujo de datos de entrada, cuyo hash debe encontrarse. Este flujo se divide en bloques, cada uno de 1024 bits de longitud. Los siguientes son los 3 pasos del algoritmo.




Paso 1. Expandiendo el mensaje

Primero, el mensaje se expande para que su longitud en bits sea igual a 944 módulo 1024. Para hacer esto, se escribe un bit al final del mensaje y luego el número requerido de bits cero. Los 80 bits restantes se agregan con una representación de 64 bits del número de bits del mensaje antes de la alineación (campo MSGLENG), una representación de 10 bits de la longitud del resumen del mensaje (campo DGSTLENG), una representación de 3 bits del número de iteraciones (campo PASS), y una representación de 3 bits de la versión HAVAL (campo VERSION).

Paso 2. Procesamiento del mensaje en bloques de 1024 bits

Escribamos un mensaje extendido en la forma: , donde  es un bloque de 1024 bits y n es el número de bloques en un mensaje extendido. A continuación, para i de 0 a n-1, realizamos el siguiente cálculo: , donde H  es la función de compresión que se describe a continuación y  es una constante de 256 bits.

Función de compresión H

H procesa el bloque de mensajes en 3, 4 o 5 iteraciones (según el valor del campo PASS). Denotemos las funciones de compresión utilizadas en las iteraciones por y . Sea  una constante de 256 bits y sea la  salida de 256 bits de la función H . Entonces H se puede describir de la siguiente manera (ver figura):








(Nota: una operación de tipo es una operación de la forma: , donde palabras de 32 bits.

Denotemos el número de iteración por j (j =1,…,5). El número de iteración j corresponde a la función de compresión . La entrada de cada función es y , donde  es un bloque de mensaje de 1024 bits que consta de 32 palabras , a consta de 8 palabras . Entonces se puede escribir de la siguiente manera:

1 . Dejar 2 . Repita los siguientes pasos para i de 0 a 31: , donde  son constantes de 32 bits 3 . Sea y sea una salida de 256 bits .

Notación:  - composición de dos funciones (la primera se ejecuta ),

 - módulo de adición ,  son las permutaciones descritas en la Tabla 2.

Nota: no se utilizan constantes en la primera iteración (es decir, ).

A diferencia de la iteración 1, en la iteración 2 y posteriores , no se procesa en el orden de las palabras, sino en el orden especificado en la Tabla 1.

Tabla 1. Orden de procesamiento de textos
( ) 0 una 2 3 cuatro 5 6 7 ocho 9 diez once 12 13 catorce quince dieciséis 17 Dieciocho 19 veinte 21 22 23 24 25 26 27 28 29 treinta 31
( ) 5 catorce 26 Dieciocho once 28 7 dieciséis 0 23 veinte 22 una diez cuatro ocho treinta 3 21 9 17 24 29 6 19 12 quince 13 2 25 31 27
( ) 19 9 cuatro veinte 28 17 ocho 22 29 catorce 25 12 24 treinta dieciséis 26 31 quince 7 3 una 0 Dieciocho 27 13 6 21 diez 23 once 5 2
( ) 24 cuatro 0 catorce 2 7 28 23 26 6 treinta veinte Dieciocho 25 19 3 22 once 31 21 ocho 27 12 9 una 29 5 quince 17 diez dieciséis 13
( ) 27 3 21 26 17 once veinte 29 19 0 12 7 13 ocho 31 diez 5 9 catorce treinta Dieciocho 6 28 24 2 23 dieciséis 22 cuatro una 25 quince
Tabla 2. Permutaciones

Paso 3. Formación del resumen del mensaje

Este paso usa la longitud de 256 bits obtenida en el paso 2. Si el tamaño de hash requerido es de 256 bits, entonces hay un resumen de mensaje. Consideremos los otros 4 casos.

1. Tamaño de hash: 128 bits

Pongámoslo de la siguiente forma:

(el superíndice indica la longitud de X en bits)

Luego, el resumen del mensaje es de 128 bits , donde

2. Tamaño de hash: 160 bits

Pongámoslo de la siguiente forma:

Luego, el resumen del mensaje es de 160 bits , donde

3. Tamaño de hash: 192 bits

Pongámoslo de la siguiente forma:

Dejar

 - resumen del mensaje.

4. Tamaño de hash - 224 bits

Vamos a presentarlo de la siguiente forma:

Luego, el resumen del mensaje es de 224 bits , donde

Constantes utilizadas en el algoritmo

Este algoritmo utiliza 136 constantes de 32 bits. Vamos a escribirlos en el siguiente orden:

una. 2. 3. cuatro 5.

243F6A88 85A308D3 13198A2E 03707344 A4093822 299F31D0 082EFA98 EC4E6C89

452821E6 38D01377 BE5466CF 34E90C6C C0AC29B7 C97C50DD 3F84D5B5 B5470917 9216D5D9 8979FB1B
D1310BA6 98DFB5AC 2FFD72DB D01ADFB7 B8E1AFED 6A267E96 BA7C9045 F12C7F99 24A19947
B3916CF7 0801F2E2 858EFC16 636920D8 71574E69 A458FEA3
F4933D7E 0D95748F 728EB658 718BCD58 82154AEE 7B54A41D C25A59B5

9C30D539 2AF26013 C5D1B023 286085F0 CA417918 B8DB38EF 8E79DCB0 603A180E 6C9E0E8B B01E8A3E
D71577C1 BD314B27 78AF2FDA 55605C60 E65525F3 AA55AB94 57489862 63E81440 55CA396A
2AAB10B6 B4CC5C34 1141E8CE A15486AF 7C72E993 B3EE1411
636FBC2A 2BA9C55D 741831F6 CE5C3E16 9B87931E AFD6BA33 6C24CF5C

7A325381 28958677 3B8F4898 6B4BB9AF C4BFE81B 66282193 61D809CC FB21A991 487CAC60 5DEC8032
EF845D5D E98575B1 DC262302 EB651B88 23893E81 D396ACC5 0F6D6FF3 83F44239 2E0B4482
A4842004 69C8F04A 9E1F9B5E 21C66842 F6E96C9A 670C9C61
ABD388F0 6A51A0D2 D8542F68 960FA728 AB5133A3 6EEF0B6C 137A3BE4

BA3BF050 7EFB2A98 A1F1651D 39AF0176 66CA593E 82430E88 8CEE8619 456F9FB4 7D84A5C3 3B8B5EBE
E06F75D8 85C12073 401A449F 56C16AA6 4ED3AA62 363F7706 1BFEDF72 429B023D 37D0D724
D00A1248 DB0FEAD3 49F1C09B 075372C9 80991B7B 25D479D8
F6E8DEF7 E3FE501A B6794C3B 976CE0BD 04C006BA C1A94FB6 409F60C4

Las primeras 8 constantes representan los primeros 256 bits de la parte fraccionaria del número . Las constantes corresponden a los siguientes 1024 bits de la parte fraccionaria , y así sucesivamente.

Funciones , , y _

Las funciones booleanas , , y , utilizadas en el algoritmo, tienen una serie de propiedades útiles en el caso de la permutación preliminar de sus argumentos:

1) Están equilibrados por 0 y 1. Esto significa que la salida de la función para un conjunto arbitrario de datos de entrada con la misma probabilidad (1/2) puede ser 0 o 1. 2) Son altamente no lineales. [una] 3) Cumplen el criterio estricto de avalancha , es decir, cuando cambia el valor de cualquiera de las variables de entrada, el valor de la función cambia con una probabilidad de 1/2. 4) No se pueden obtener unos de otros aplicando transformaciones lineales a las variables de entrada. 5) Este conjunto de funciones no está correlacionado entre sí en la salida, es decir, cualquier par de funciones no está correlacionada entre sí en la salida (funciones y no se correlacionan mutuamente en la salida si , y  están balanceadas por 0 y 1, no lineales funciones)

HAVAL - hashes

Los hashes HAVAL generalmente se representan como una secuencia de 32, 40, 48, 56 o 64 números hexadecimales.
Algunos ejemplos de hash (tamaño - 256 bits, número de iteraciones - 5):

HAVAL(" El veloz zorro pardo salta sobre el perro perezoso ") = b89c551cdfe2e06dbd4cea2be1bc7d557416c58ebb4d07cbc94e49f710c55be4

Incluso un pequeño cambio en el mensaje de entrada (en nuestro caso, por un carácter: el carácter "d" se reemplaza por el carácter "c") conduce a un cambio completo en el hash.

HAVAL("El veloz zorro marrón salta sobre el engranaje perezoso") = 60983bb8c8f49ad3bea29899b78cd741f4c96e911bbc272e5550a4f195a4077e

Un ejemplo de un hash HAVAL para una cadena "nula":

HAVAL("") = be417bb4dd5cfb76c7126f4f8eeb1553a449039307b1a3cd451dbfdc0fbbe330

Comparación entre HAVAL y MD5

A diferencia de la función hash MD5, que tiene un tamaño fijo del resumen y el número de iteraciones, HAVAL proporciona 15 variantes de algoritmo diferentes al combinar la longitud del resumen y el número de iteraciones. Esto proporciona más flexibilidad y, por lo tanto, hace que la función hash sea más adecuada para aplicaciones que requieren diferentes longitudes de hash de mensajes y diferentes niveles de seguridad.
Los experimentos han demostrado que HAVAL es un 60 % más rápido que MD5 en 3 iteraciones, un 15 % más rápido en 4 iteraciones e igual de rápido en cinco iteraciones.

Criptoanálisis

Colisiones HAVAL

Una colisión hash  obtiene el mismo valor de función para diferentes mensajes.

En 2003, Bart Van Rompay, Alex Biryukov , Bart Prenel y Joos Vandewalle descubrieron una colisión para HAVAL de 3 iteraciones. [2] Encontrar esta colisión requirió aproximadamente ejecuciones de la función de contracción H .

En 2004, los investigadores chinos Wang Xiaoyun , Feng Dengguo , Lai Xuejia y Yu Hongbo anunciaron una vulnerabilidad que habían descubierto en el HAVAL-128 de 3 iteraciones que permite encontrar colisiones mediante cálculos HAVAL. [3]

En 2006, un grupo de científicos chinos liderados por Wang Xiaoyun y Yu Hongbo llevaron a cabo dos ataques contra HAVAL de 4 iteraciones, que también requirieron operaciones de hashing, respectivamente. También propusieron el primer ataque teórico en HAVAL de 5 iteraciones con el número de operaciones hash aproximadamente igual a . [cuatro]

Véase también

Notas

  1. Tokareva N. N. Funciones booleanas fuertemente no lineales: funciones dobladas y sus generalizaciones (enlace inaccesible) (2008). Archivado desde el original el 15 de febrero de 2012. 
  2. Bart Van Rompay, Alex Biryukov, Bart Preneel y Joos Vandewalle. Criptoanálisis de  HAVAL de 3 pasos .  (enlace no disponible)
  3. Xiaoyun Wang, Dengguo Feng, Xuejia Lai, Hongbo Yu. Colisiones para funciones hash MD4, MD5, HAVAL-128 y RIPEMD  (inglés)  (enlace descendente) (17 de agosto de 2004). Archivado desde el original el 23 de agosto de 2011.
  4. Xiaoyun Wang, Aaram Yun, Parque Sangwoo, Hongbo Yu. Criptoanálisis del HAVAL completo con 4 y 5 pases  (inglés) (2006).  (enlace no disponible)

Enlaces