Criptografía : Algoritmos de autenticación (hash)

Escrito por Sergio De Luz
Redes

¿Qué es una función Hash?

Una función hash es método para generar claves o llaves que representen de manera casi unívoca a un documento o conjunto de datos. Es una operación matemática que se realiza sobre este conjunto de datos de cualquier longitud, y su salida es una huella digital, de tamaño fijo e independiente de la dimensión del documento original. El contenido es ilegible.

Es posible que existan huellas digitales iguales para objetos diferentes, porque una función hash, en el caso del SHA-1 tiene 160bits, y los posibles objetos a resumir no tienen un tamaño límite.

A partir de un hash o huella digital, no podemos recuperar el conjunto de datos originales. Los más conocidos son el MD5 y el SHA-1. Cifrar una huella digital se conoce como firma digital.

Requisitos que deben cumplir las funciones hash:

– Imposibilidad de obtener el texto original a partir de la huella digital.
– Imposibilidad de encontrar un conjunto de datos diferentes que tengan la misma huella digital (aunque como hemos visto anteriormente es posible que este requisito no se cumpla).
– Poder transformar un texto de longitud variable en una huella de tamaño fijo (como el SHA-1 que es de 160bits).
– Facilidad de empleo e implementación.

Ejemplos de funciones Hash

MD5

Es una función hash de 128 bits. Como todas las funciones hash, toma unos determinados tamaños a la entrada, y salen con una longitud fija (128bits).

El algoritmo MD5 no sirve para cifrar un mensaje. La información original no se puede recuperar ya que hay pérdida de datos. MD5 es usado para firmas digitales como veremos próximamente en REDESzone.net

SHA-1

Es parecido al famoso MD5, pero tiene un bloque de 160bits en lugar de los 128bits del MD5. La función de compresión es más compleja que la función de MD5. SHA-1 es más lento que MD5 porque el número de pasos son de 80 (64 en MD5) y porque tiene mayor longitud que MD5 (160bits contra 128bits). Lo que convierte a SHA-1 más robusto y seguro, totalmente apto para VPN’s por ejemplo.

SHA-2

Las principales diferencias con SHA-1 radica en en su diseño y que los rangos de salida han sido incrementados y podemos encontrar:

SHA-224, SHA-256, SHA-384, y SHA-512

El más seguro, es el que mayor salida de bits tiene, el SHA-512, que tiene 80 rondas (pasos), como el SHA-1 pero se diferencia de éste en:

– Tamaño de salida 512 por los 160 de SHA-1.
– Tamaño del bloque, tamaño de la palabra y tamaño interno que es el doble que SHA-1.

Como ocurre con todos los cifrados y hash, cuanto más seguro, más lento su procesamiento y uso, debemos encontrar un equilibrio entre seguridad y velocidad.

Software

En GNU/Linux podéis encontrar el md5sum y el sha1sum por defecto instalados.

En Windows podéis bajar el Snap MD5 que es un todo en uno (tiene para MD5 y para SHA-1).

Espero que os haya gustado el artículo, próximamente más.


Continúa leyendo