Whirlpool
De Wikipedia, la enciclopedia libre
De Wikipedia, la enciclopedia libre
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 a partir 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.
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") = 4F8F5CB531E3D49A61CF417CD133792CCFA501FD8DA53EE368FED20E5FE0248C 3A0B64F98A6533CEE1DA614C3A8DDEC791FF05FEE6D971D57C1348320F4EB42D
WHIRLPOOL-1("The quick brown fox jumps over the lazy dog") = 3CCF8252D8BBB258460D9AA999C06EE38E67CB546CFFCF48E91F700F6FC7C183 AC8CC3D3096DD30A35B01F4620A1E3A20D79CD5168544D9E1B7CDF49970E87F1
WHIRLPOOL("The quick brown fox jumps over the lazy dog") = B97DE512E91E3828B40D2B0FDCE9CEB3C4A71F9BEA8D88E75C4FA854DF36725F D2B52EB6544EDCACD6F8BEDDFEA403CB55AE31F03AD62A5EF54E42EE82C3FB35
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") = CB2CB5F1697A6D8C6609998965F97C243B53A29EB973AEC8D388E893C0E7DD9B 6CCA934FE67151300120D409C6F0982923B9D15AA5CA8356BDAF2F97F50351BC
WHIRLPOOL-1("The quick brown fox jumps over the lazy cog") = 64D675832795AED30DCD926DBA32F4E0ED95B067D1C563400C4B600721EA100F 5BC5EBFB9DAB55AA159CB5C52DFF57CF54443D031EF7F38268E0A059450BB9D1
WHIRLPOOL("The quick brown fox jumps over the lazy cog") = DCE81FC695CFEA3D7E1446509238DAF89F24CC61896F2D265927DAA70F2108F8 902F0DFD68BE085D5ABB9FCD2E482C1DC24F2FABF81F40B73495CAD44D7360D3
El hash de la cadena vacía es:
WHIRLPOOL-0("") = B3E1AB6EAF640A34F784593F2074416ACCD3B8E62C620175FCA0997B1BA23473 39AA0D79E754C308209EA36811DFA40C1C32F1A2B9004725D987D3635165D3C8
WHIRLPOOL-1("") = 470F0409ABAA446E49667D4EBE12A14387CEDBD10DD17B8243CAD550A089DC0F EEA7AA40F6C2AAAB71C6EBD076E43C7CFCA0AD32567897DCB5969861049A0F5A
WHIRLPOOL("") = 19FA61D75522A4669B44E39C1D2E1726C530232130D407F89AFEE0964997F7A7 3E83BE698B288FEBCF88E3E03C4F0757EA8964E59B63D93708B138CC42A66EB3
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]