Shabal


Shabal es una función hash criptográfica presentada por el proyecto de investigación Saphir, financiado por Francia, a la competencia internacional del NIST sobre funciones hash .

Los socios de investigación de Saphir (con la excepción de LIENS) iniciaron la concepción de Shabal y luego se les unieron socios del proyecto de investigación Saphir2 que contribuyeron activamente al diseño final de Shabal. Saphir (Security and Analysis of Hash Primitives) es un proyecto financiado por ANR sobre funciones hash. Saphir comenzó en marzo de 2006 con una duración de tres años y reunió a cinco socios: Cryptolog International, DCSSI, France Telecom (líder), Gemalto y LIENS. Los socios de Saphir2 provienen tanto de la industria como de la academia; Además de los socios de Saphir, 4 nuevos socios: EADS SN, INRIA, Sagem Sécurité y UVSQ se unieron y contribuyeron al proyecto. [1]

Shabal participó en la competencia de funciones hash del NIST, donde pasó a la segunda ronda, pero no logró ingresar a la ronda final. Shabal no fue seleccionado como finalista principalmente por motivos de seguridad. Aunque la seguridad del algoritmo de hash completo no se vio comprometida, el descubrimiento de propiedades no aleatorias con complejidades de tiempo bajas planteó preocupaciones entre los criptógrafos del NIST sobre la posibilidad de ataques más potentes en el futuro. [2]

Shabal utiliza un modo de operación que puede considerarse como una variante de una construcción de hash Merkle-Damgård de tubo ancho. El estado interno de Shabal consta de tres partes, denominadas A, B y C. La permutación con clave de Shabal actualiza A y B mediante registros de desplazamiento de retroalimentación no lineales que interactúan entre sí. El bucle principal de la permutación utiliza multiplicación modular por tres y cinco, suma modular, XOR, complementación y operaciones AND.

donde M es el bloque de mensajes y W es el contador. Después de procesar todos los bloques de mensajes, se aplican tres rondas de finalización en las que se fijan el bloque de mensajes y los valores del contador. Se definen dos parámetros ajustables (p, r) para Shabal, donde p es el número de bucles realizados dentro de la permutación de clave y r es el tamaño de A. El valor predeterminado de (p, r) es (3, 12). Además, p y r deben satisfacer 16p ≡ 0 mod r. La misma función interna se utiliza para todos los tamaños de salida de Shabal. [2]