Función de Compresión BU

Una función de compresión unidireccional BU (bloque único) es una función que transforma dos entradas de longitud fija en una salida de longitud fija, del mismo tamaño que una de las entradas. La transformación es unidireccional, es decir, a partir de una salida no debería ser posible calcular las entradas. Estas funciones se utilizan principalmente en las construcciones Merkle – Damgård y funciones resumen.

 

La unión de las dos entradas debería cumplir el efecto avalancha, es decir, si una entrada cambia en un solo bit, la salida debería cambiar significativamente.

 

Las funciones de compresión unidireccionales a menudo se construyen a partir de cifrados de bloque, los métodos más conocidos son:

Davies-Meyer Esquema
Esquema-DM

 

Davies-Meyer. La función de compresión DM (Davies-Meyer) hace un uso simple del cifrado de bloque subyacente Cb. Los bloques de entrada xi sirven como clave para Cb, por lo tanto, el tamaño de bloque de xi debe coincidir con el tamaño de clave.

El valor hash Hi sirve como texto sin formato para ser manejado con la longitud de bits apropiada. La salida Hi se concatena con la salida anterior Hi−1 con un operador exclusivo.

La salida final HF está definida por la iteración de: Hi = Cbxi (Hi−1) ⊕ Hi−1,

dónde:   1 ≤ i ≤ F, H0 = IV Vector de Inicialización (IV)

 

la entrada x sirve como la clave con longitud de k bit  que podría ser diferente de la longitud de n en la entrada o salida.

 

 

Esquema Matyas-Meyer-Oseas
Esquema MMO

Matyas-Meyer-Oseas (MMO). Esta función es muy parecida a la de Davies-Meyer pero con la entrada x y el valor hash Hi intercambiados. Los bloques de entrada xi sirven como texto simple para ser procesados y el valor hash anterior Hi sirve como clave para el de cifrado de bloque Cb. Debido a las posibles diferencias de longitud en bits de k y n, una función denominada g precede a la entrada de Cb,  g asigna el valor hash anterior de n bits a una clave de k bits.

La salida final HF está definida por la iteración de: Hi = Cbg(Hi−1) (xi) ⊕ xi,

dónde:   1 ≤ i ≤ F, H0 = IV Vector de Inicialización (IV)

 

El ratio usando la función MMO es

A diferencia de Davies-Meyer, esta función toma una longitud de bit de entrada igual a la longitud de bit de salida.

Esquema Miyaguchi-Preneel
Esquema Miyaguchi-Preneel

Miyaguchi-Preneel. La compresión MP (Miyaguchi-Preneel) se puede considerar como una extensión de MMO. Implica añadir el valor de hash anterior Hi−1 en el operador exclusivo para calcular el valor de hash Hi. La salida final HF está definida por la iteración de: Hi = Cbg(Hi−1) (xi) ⊕ xi ⊕ Hi−1  dónde:   1 ≤ i ≤ F, H0 = IV Vector de Inicialización (IV).

 

El ratio usando la función MP es

esta función toma una longitud de bit de entrada igual a la longitud de bit de salida.