Whirlpool

WHIRLPOOL es una función de hash diseñada gracias a Vincent Rijmen y Paulo S. L. M. Barreto. El hash ha sido recomendado por el proyecto NESSIE y ha sido adoptado por la Organización Internacional de Estandarización (ISO) y la Comisión Electrotécnica Internacional (IEC) como parte del estándar internacional ISO/IEC 10118-3.

WHIRLPOOL fue desarrollado después del algoritmo de cifrado por bloques Square. WHIRLPOOL es una construcción Miyaguchi-Preneel basada en una modificación del Advanced Encryption Standard (AES). Dado un mensaje de un tamaño menor de 2256 bits, devuelve un hash de 512 bits.

Los autores han declarado que WHIRLPOOL no está patentado (ni lo estará). Puede ser usado libremente para cualquier propósito y las implementaciones de referencia son de dominio público.

El nombre del algoritmo es en referencia a la Galaxia Whirlpool en la constelación Canes Venatici.

Hashes WHIRLPOOL

El algoritmo WHIRLPOOL ha tenido dos revisiones desde la especificación original (año 2000). En la primera revisión, en el 2001, la S-Box generada de manera aleatoria con buenas propiedades criptográficas se cambió a una cuyas propiedades fueron mejoradas y era más sencilla de implementar en hardware. En la segunda revisión, en 2003, la matriz de difusión fue cambiada.

En los siguientes ejemplos, versión original de WHIRLPOOL será llamada WHIRLPOOL-0 y la primera revisión WHIRLPOOL-1.

Los hashes de 512 bits (64 bytes) se representan como 128 caracteres hexadecimales. En estos ejemplos se muestran entradas de 43 bytes ASCII y su correspondiente hash de WHIRLPOOL:

WHIRLPOOL-0("The quick brown fox jumps over the lazy dog") =4F8F5CB531E3D49A61CF417CD133792CCFA501FD8DA53EE368FED20E5FE0248C3A0B64F98A6533CEE1DA614C3A8DDEC791FF05FEE6D971D57C1348320F4EB42D
WHIRLPOOL-1("The quick brown fox jumps over the lazy dog") =3CCF8252D8BBB258460D9AA999C06EE38E67CB546CFFCF48E91F700F6FC7C183AC8CC3D3096DD30A35B01F4620A1E3A20D79CD5168544D9E1B7CDF49970E87F1
WHIRLPOOL("The quick brown fox jumps over the lazy dog") =B97DE512E91E3828B40D2B0FDCE9CEB3C4A71F9BEA8D88E75C4FA854DF36725FD2B52EB6544EDCACD6F8BEDDFEA403CB55AE31F03AD62A5EF54E42EE82C3FB35

Incluso un pequeño cambio hará que (con una probabilidad de 1-10-154) el resultado de la función sea completamente distinto, por ejemplo, cambiando d por c:

WHIRLPOOL-0("The quick brown fox jumps over the lazy cog") =CB2CB5F1697A6D8C6609998965F97C243B53A29EB973AEC8D388E893C0E7DD9B6CCA934FE67151300120D409C6F0982923B9D15AA5CA8356BDAF2F97F50351BC
WHIRLPOOL-1("The quick brown fox jumps over the lazy cog") =64D675832795AED30DCD926DBA32F4E0ED95B067D1C563400C4B600721EA100F5BC5EBFB9DAB55AA159CB5C52DFF57CF54443D031EF7F38268E0A059450BB9D1
WHIRLPOOL("The quick brown fox jumps over the lazy cog") =DCE81FC695CFEA3D7E1446509238DAF89F24CC61896F2D265927DAA70F2108F8902F0DFD68BE085D5ABB9FCD2E482C1DC24F2FABF81F40B73495CAD44D7360D3

El hash de la cadena vacía es:

WHIRLPOOL-0("") =B3E1AB6EAF640A34F784593F2074416ACCD3B8E62C620175FCA0997B1BA2347339AA0D79E754C308209EA36811DFA40C1C32F1A2B9004725D987D3635165D3C8
WHIRLPOOL-1("") =470F0409ABAA446E49667D4EBE12A14387CEDBD10DD17B8243CAD550A089DC0FEEA7AA40F6C2AAAB71C6EBD076E43C7CFCA0AD32567897DCB5969861049A0F5A
WHIRLPOOL("") =19FA61D75522A4669B44E39C1D2E1726C530232130D407F89AFEE0964997F7A73E83BE698B288FEBCF88E3E03C4F0757EA8964E59B63D93708B138CC42A66EB3

Vulnerabilidad de WHIRLPOOL

La investigación sobre el análisis de seguridad de la función WHIRLPOOL ha 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 (CoT). Esto enfatiza la necesidad de mayores medidas de seguridad en su implementación.[1]

Véase también

Referencias

Enlaces externos