Truncando la salida de SHA256 a 128 bits

19

Supongamos que necesitamos / preferimos la salida de hash de 128 bits, por ejemplo, para generar una clave de cifrado de 128 bits o, en otras aplicaciones (por ejemplo, la verificación de la integridad del archivo), para consumir menos espacio de almacenamiento.

No conozco ninguna función hash de 128 bits nueva / estándar / ininterrumpida, por lo que parece que tenemos que usar SHA256.

¿Es aceptable truncar la salida SHA256 a 128 bits? ¿Este hash truncado tiene una seguridad igual a un hash de 128 bits? Me refiero a un hash de 128 bits que no tiene vulnerabilidades conocidas; definitivamente no es MD5!

Tengo una idea de cómo lograr esto:

MD5(Truncate128(SHA256_hash))

No sé si esto tendrá algún beneficio / detrimento para la seguridad.

    
pregunta H M 24.04.2013 - 22:24
fuente

2 respuestas

16

Aunque SHA-256 ofrece nominalmente una salida de 256 bits, no se conoce ninguna debilidad cuando la salida se trunca a 128 bits, excepto, por supuesto, debilidades inherentes a la longitud de salida más corta; p.ej. la resistencia a la colisión cae de lo inviable 2 128 a lo posible (pero difícil) 2 64 .

Esto no es una propiedad genérica de las funciones hash (*), pero es algo "obvio" de cómo se define SHA-256. En particular, cuando NIST definió SHA-224, una función hash con una salida de 224 bits, simplemente tomaron SHA-256, con un vector de inicialización distinto y una salida truncada.

(*) Se puede mostrar que una función hash segura determinada, cuando se trunca, no puede ser muy mala, pero aún puede ser un poco peor de lo esperado. Para SHA-256, el truncamiento parece seguro.

    
respondido por el Tom Leek 24.04.2013 - 22:31
fuente
2

Como Tom acaba de decir, puede truncar la salida del SHA-256 a 128 bits por integridad, porque 128 bits es suficiente para evitar colisiones de forma razonable.

Sin embargo, las funciones hash como SHA-256 no son adecuadas para la generación de claves o la autenticidad del archivo (solo integridad).

Si desea generar una clave, use algo como PKBDF2 o scrypt. Si desea autenticar un archivo, use las funciones HMAC (que pueden confiar en SHA-256).

Fuente: Introducción a la criptografía en Coursera.

    
respondido por el user25151 24.04.2013 - 22:45
fuente

Lea otras preguntas en las etiquetas