En informática y criptografía , Whirlpool (a veces llamado WHIRLPOOL ) es una función hash criptográfica . Fue diseñada por Vincent Rijmen (cocreador del Estándar de cifrado avanzado ) y Paulo SLM Barreto , quien la describió por primera vez en 2000.
El hash ha sido recomendado por el proyecto NESSIE . También ha sido adoptado por la Organización Internacional de Normalización (ISO) y la Comisión Electrotécnica Internacional (IEC) como parte de la norma internacional conjunta ISO/IEC 10118-3 .
Whirlpool es un hash diseñado a partir del cifrado de bloque Square , y se considera que pertenece a esa familia de funciones de cifrado de bloque.
Whirlpool es una construcción de Miyaguchi-Preneel basada en un Estándar de Cifrado Avanzado (AES) sustancialmente modificado.
Whirlpool toma un mensaje de cualquier longitud menor a 2256 bits y devuelve un resumen del mensaje de 512 bits . [3]
Los autores han declarado que
El Whirlpool original se llamará Whirlpool-0 , la primera revisión de Whirlpool se llamará Whirlpool-T y la última versión se llamará Whirlpool en los siguientes vectores de prueba.
La función hash Whirlpool es una construcción de Merkle-Damgård basada en un cifrado de bloque tipo AES W en modo Miyaguchi-Preneel . [2]
El cifrado de bloque W consta de una matriz de estados de 8×8 bytes, para un total de 512 bits.
El proceso de cifrado consiste en actualizar el estado con cuatro funciones de ronda a lo largo de 10 rondas. Las cuatro funciones de ronda son SubBytes (SB), ShiftColumns (SC), MixRows (MR) y AddRoundKey (AK). Durante cada ronda, el nuevo estado se calcula como .
La operación SubBytes aplica una permutación no lineal (la caja S) a cada byte del estado de forma independiente. La caja S de 8 bits se compone de 3 cajas S más pequeñas de 4 bits.
La operación ShiftColumns desplaza cíclicamente cada byte en cada columna del estado. Los bytes de la columna j se desplazan hacia abajo en j posiciones.
La operación MixRows es una multiplicación por la derecha de cada fila por una matriz de 8×8 sobre . La matriz se elige de modo que el número de rama (una propiedad importante cuando se analiza la resistencia al criptoanálisis diferencial ) sea 9, que es el máximo.
La operación AddRoundKey utiliza la operación xor bit a bit para agregar una clave calculada por el programa de claves al estado actual. El programa de claves es idéntico al cifrado en sí, excepto que la función AddRoundKey se reemplaza por una función AddRoundConstant que agrega una constante predeterminada en cada ronda.
El algoritmo Whirlpool ha sufrido dos revisiones desde su especificación original en 2000.
Las personas que incorporen Whirlpool probablemente utilizarán la versión más reciente de Whirlpool; si bien no se conocen debilidades de seguridad en las versiones anteriores de Whirlpool, la versión más reciente tiene mejores características de eficiencia de implementación de hardware y también es probable que sea más segura. Como se mencionó anteriormente, también es la versión adoptada en la norma internacional ISO/IEC 10118-3 .
Los hashes Whirlpool de 512 bits (64 bytes) (también denominados resúmenes de mensajes ) se representan normalmente como números hexadecimales de 128 dígitos .
A continuación se muestra una entrada ASCII de 43 bytes (sin incluir comillas) y los hashes Whirlpool correspondientes:
Los autores proporcionan implementaciones de referencia del algoritmo Whirlpool, incluida una versión escrita en C y una versión escrita en Java . [2] Estas implementaciones de referencia se han publicado en el dominio público. [2]
Sin embargo, las investigaciones sobre el análisis de seguridad de la función Whirlpool han revelado que, en promedio, la introducción de 8 fallos aleatorios es suficiente para comprometer el mensaje hash de 512 bits de Whirlpool que se está procesando y la clave secreta de HMAC-Whirlpool en el contexto de la nube de cosas (CoTs). Esto enfatiza la necesidad de aumentar las medidas de seguridad en su implementación. [5]
Dos de los primeros programas criptográficos ampliamente utilizados que comenzaron a utilizar Whirlpool fueron FreeOTFE , seguido por TrueCrypt en 2005. [ cita requerida ]
VeraCrypt (una bifurcación de TrueCrypt ) incluyó a Whirlpool (la versión final) como uno de sus algoritmos hash compatibles. [6]
{{cite conference}}
: CS1 maint: nombres múltiples: lista de autores ( enlace ) CS1 maint: nombres numéricos: lista de autores ( enlace ){{cite journal}}
: Requiere citar revista |journal=
( ayuda ){{cite journal}}
: Requiere citar revista |journal=
( ayuda )