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
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.