Hash (Ensayo)
Diego Vertiz Alexis
5IM7
Hash
Introducción
Hablando del tema de la seguridad en un sistema, nunca es suficiente para estar protegido, para ello los mecanismos se van innovando para proporcionarnos la mayor seguridad, ya sea por medio de autenticación o de otros. El término autenticación (o autentificación) se refiere al servicio que trata de asegurar que una comunicación sea auténtica, es decir, verificar que el origen de los datos es el correcto, quién los envió y cuándo fueron enviados y recibidos también sean correctos.
Desarrollo
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.
Una función hash recibe un mensaje, de tamaño variable, y produce un resumen del mensaje, de tamaño fijo, el cual es enviado junto con el mensaje. Las funciones hash, en lugar de usar claves secretas, como un cifrado, utilizan un valor secreto común S. Un emisor concatena dicho valor con el mensaje, calcula la función hash determinada con esos valores, y envía dicho texto con el mensaje original. El receptor hace lo mismo, y con ello, al igual que con MAC, verifica que el mensaje no se ha alterado y que el emisor es el indicado.
Existen al menos seis características de una función hash. Las primeras tres determinan su facilidad de uso e implementación: pueden aplicarse a un bloque de datos de cualquier tamaño, producen una salida de tamaño fijo, y son relativamente fáciles de calcular, haciendo que tanto las implementaciones de hardware como de software sean prácticas.
Otras dos características son que es imposible encontrar el valor secreto dado el resumen del mensaje (propiedad unidireccional), y que es imposible encontrar un mensaje alternativo con el mismo valor hash que un mensaje dado. Si una función tiene los cinco atributos anteriores, se clasifica como función débil, mientras que tener la siguiente la clasifica como robusta: que es imposible que dos mensajes diferentes den resúmenes hash iguales.
Las funciones hash son muy usadas, una de las utilidades que tiene es proteger la confidencialidad de una contraseña, ya que podría estar en texto plano y ser accesible por cualquiera y aún así no poder ser capaces de deducirla. En este caso, para saber si una contraseña que está guardada, por ejemplo, en una base de datos es igual a la que hemos introducido no se descifra el hash (ya que debería de ser imposible hacerlo) sino que se aplicará la misma función de resumen a la contraseña que especificamos y se comparará el resultado con el que tenemos guardado (como se hace con las contraseñas de los sistemas Linux).
Otro uso que tiene esta función es la de garantizar la integridad de los datos y es algo que habréis visto muchas veces, por ejemplo en algunas webs que proporcionan descargas de archivos grandes, por ejemplos software, dando junto a su vez el resumen del archivo y la función usada.
Firmar un documento no es algo novedoso, pero la firma digital si lo es un poco más y nos ayuda a verificar la identidad del emisor de un mensaje (así nos podemos asegurar que nuestro jefe nos manda un archivo concreto y no es el vecino que nos gasta una broma).
El método más simple de firma digital consiste en crear un hash de la información enviada y cifrarlo con nuestra cave privada (de nuestro par de claves de la criptografía asimétrica) para que cualquiera con nuestra clave pública pueda ver el hash real y verificar que el contenido del archivo es el que hemos mandado nosotros.
Conclusión
Una tabla hash tiene como principal ventaja que el acceso a los datos suele ser muy rápido si se cumplen que una razón de ocupación no muy elevada (a partir del 75% de ocupación se producen demasiadas colisiones y la tabla se vuelve ineficiente) y una función resumen que distribuya uniformemente las claves. Si la función está mal diseñada, se producirán muchas colisiones.
Sin embargo los inconvenientes de las tablas hash son que tienen necesidad de ampliar el espacio de la tabla si el volumen de datos almacenados crece. Se trata de una operación costosa, tambien cuenta con dificultad para recorrer todos los elementos. Se suelen emplear listas para procesar la totalidad de los elementos y el desaprovechamiento de la memoria. Si se reserva espacio para todos los posibles elementos, se consume más memoria de la necesaria; se suele resolver reservando espacio únicamente para punteros a los elementos.
A pesar de que fueron creadas hace más de dos décadas, su uso sigue vigente y muy probablemente seguirá así, ya que son confiables y díficiles de vulnerar.
Fuentes
Stallings, Williams. Fundamentos de Seguridad en Redes: Aplicaciones y Estándares (segunda edición). Pearson Educación, S.A. Madrid, 2004Corrales, H., Cilleruelo, C. & Cuevas, A. (2014). Criptografía y Métodos de Cifrado. Noviembre 19, 2017, de Universidad de Alcalá Sitio web:
www.uco.es/servicios/biblioteca/CursosP/practicahash2.pdf
Comentarios
Publicar un comentario