¡ BIENVENIDOS !
Por medio de este blog, explicaré la importancia que tiene la función HASH, las características así como los tipos, para poder comprender mejor como funciona y las oportunidades que nos podrían brindar al proteger nuestra información.
Para poder comprender mejor este tema nos preguntamos:
¿QUÉ ES LA FUNCIÓN HASH?
Una función HASH es método para generar claves o llaves que representen de manera 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.
Los hash o funciones de resumen son algoritmos que consiguen crear a partir de una entrada (ya sea un texto, una contraseña o un archivo, por ejemplo) una salida alfanumérica de longitud normalmente fija que representa un resumen de toda la información que se le ha dado (es decir, a partir de los datos de la entrada crea una cadena que solo puede volverse a crear con esos mismos datos).
Estas funciones no tienen el mismo propósito que la criptografía simétrica y asimétrica, tiene varios cometidos, entre ellos está asegurar que no se ha modificado un archivo en una transmisión, hacer ilegible una contraseña o firmar digitalmente un documento.
CARACTERÍSTICAS DEL HASH
En definitiva las funciones hash se encargan de representar de forma compacta un archivo o conjunto de datos que normalmente es de mayor tamaño que el hash independientemente del propósito de su uso.
Este sistema de criptografía usa algoritmos que aseguran que con la respuesta (o HASH) nunca se podrá saber cuales han sido los datos insertados, lo que indica que es una función unidireccional.
Sabiendo que se puede generar cualquier resumen a partir de cualquier dato nos podemos preguntar si se podrían repetir estos resúmenes (HASH) y la respuesta es que teóricamente si, podría haber colisiones, ya que no es fácil tener una función HASH perfecta (que consiga que no se repita la respuesta), pero esto no supone un problema, ya que si se consiguieran (con un buen algoritmo) dos HASH iguales los contenidos serían totalmente distintos.
REQUISITOS QUE DEBEN DE 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 Y FORMAS DE USO
Tablas hash
Una tabla hash es un arreglo o vector en el que se almacenan los datos en la posición indicada por su valor hash.
Su ventaja es que permite accesos muy rápidos a los datos, con una eficiencia aproximada O(k), donde k es constante.
Su desventaja principal es que desperdicia memoria. Esto ocurre porque los datos suelen estar dispersados uniformemente por toda la tabla, y entre ellos quedan espacios vacíos. Se pueden usar, claro está, pero cargar una tabla a más del 70% de su tamaño no es recomendable porque la búsquedas comienzan a tender a cierta linealidad, como si de un lista encadenada se tratara. Otra desventaja muy importante es que una tabla HASH estática tiene dificultades para “crecer” o redimensionarse. La opción más simple cuando una tabla está saturada es crear una nueva más grande y copiar los datos uno por uno. Las técnicas para tablas HASH redimensionables se conoce como hashing dinámico.
Otro punto importante es el tamaño de las tablas hash. Se pudo determinar que con tamaños iguales a números primos las probabilidades de colisión se reducen.
En una tabla hash las celdas pueden contener disntintos datos, entre ellos punteros a un “cajón” de datos, punteros a una lista enlazada, punteros a otra tabla hash, punteros a árboles o grafos, y los datos en sí (sin usar punteros). Esta última opción no es muy conveniente porque el esquema pierde flexibilidad.
Al usar sólo punteros, la tabla hash funciona como índice, y luego podemos agregar datos adicionales dinámicamente. El sistema operativo se encarga de ubicar los distintos bloques en memoria.
CONCLUSIONES:
Nos adentramos en un concepto de informática poderoso, que es extensivamente usado hoy en día. Vimos que el hashing tiene muchos campos de uso, como las tablas hash o la criptografía.
Con respecto a la tablas hash, sus ventajas principales son la velocidad para encontrar datos y la simplicidad del concepto. Sus mayores desventajas son que no permite almacenar los datos ordenados y desperdicia cierto espacio de almacenamiento.
Sin embargo, a mi criterio las ventajas avasallan las desventajas y es muy conveniente usar este tipo de tablas en software que requiere búsquedas rápidas de información.
En la criptografía la principal desventaja es que siempre existirán colisiones si el tamaño de la clave hash es menor que el tamaño de la entrada. Su ventaja es que permite firmar los mensajes de forma que se detecten cambios realizados sobre los datos.
Comentarios
Publicar un comentario