3 de septiembre de 2014

Funciones Hash

Podemos difinir como función hash a un algoritmo que permite generar resúmenes que representen de manera casi unívoca a un archivo o dato. Cambien se le da el nombre de hash o digest al resultado de esa función. Estas funciones identifican probabilísticamente a un conjunto de información, dando como resultado un conjunto imagen de tamaño fijo, generalmente menor.

Figura 1: Función Hash

Su propiedad fundamental es que so dos resultados de una misma función son diferentes, las entradas que generaron esos resultados también lo son. No obstante, al ser mucho menor el rango posible de clave que el rango posible de objetos, pueden existir claves resultantes iguales para objetos diferentes, hecho conocido como colisiones.

Un ejemplo es MD5, desarrollado por Ron Rivest en 1992 y basado en sus predecesores MD4 y MD2 a los que se les realizaron mejoras, dando lugar a un algoritmo más seguro, pero más lento. 

Los resúmenes resultantes son de 128bits. Desde el 2005 ha quedado obsoleto debido a que los estudiantes Xiaoyunm Dengguo Feng, Xuejia Lai y Hongbo Yu de la Shandong University (china) anunciaron el descubrimiento de colisiones de hash para esta función. Si bien en ese momento el ataque solo fue teórico y con un cluster armado para tan fin, más tarde se pudo llevar a cabo en forma práctica. Aún así, sigue siendo un algoritmo interesante debido a su sencillez y generalidad.

Otro de los más utilizados es SHA, cuya versión más utilizada y actual estándar es SHA-1, desarrollada en 1994. La familia de SHA fue desarrollada por la NSA y actualmente existen cuatro variantes denominadas SHA-2 (SHA-224, SHA-256, SHA-384 y SHA-512). SHA-1 es similar en funcionamiento a MD5 pero genera un resumen de 160bits.

Entradas populares