FUNCIÓN HASH

INTRODUCCIÓN
Esta vez abordaremos una de las técnicas de seguridad más utilizadas a la hora de crear certificados o autenticar datos en los sistemas, que a diferencia de los cifrados anteriormente expuestos en otras entradas de este blog, no necesita alguna clave para funcionar y su uso puede llegar a ser muy diferente. Hablamos de las funciones Hash.

Resultado de imagen para hash function

¿Qué es una Función Hash?
Una función hash es una función matemática que convierte una entrada (que puede ser cualquier dato como números, archivos, etc.) en otro valor comprimido comúnmente conocido como valor hash o mensaje de resumen. La entrada a la función hash es de longitud arbitraria, pero la salida siempre es de longitud fija. (TutorialsPoint, 2017)
Un hash generalmente se muestra como un número hexadecimal y es importante recalcar que a diferencia de los cifrados simétricos y asimétricos, esta no se puede revertir con otro algoritmo de descifrado.
Hash Functions
Hashing se hace para indexar y ubicar elementos en bases de datos porque es más fácil encontrar el valor hash más corto que la cadena más larga. Hashing también se usa en encriptación. (Techopedia Inc., 2017)
Este término también se conoce como algoritmo hash o función de resumen de mensaje.

Un ejemplo de función hash puede ser el siguiente:
md5("hola mundo")=5eb63bbe01eeed093cb22bb8f5acdc3
Esta es la función hash md5, que a partir de cualquier dato de entrada crea una salida hexadecimal de 32 caracteres. Las funciones hash son generalmente irreversibles (unidireccionales), lo que significa que no se puede deducir la entrada si solo se conoce la salida, a menos que se intente con todas las entradas posibles (lo que se denomina ataque de fuerza bruta). (LearnCryptography.com, 2017)

Utilidad de las funciones Hash
Normalmente las funciones Hash se utilizan para verificar información, bajo un contexto en el que las entidades nunca revelan la información real, si no verifican en base a los resultados de los hashes. 
Para hacerlo más claro un ejemplo sería en donde un profesor ofrece un punto extra a los alumnos que resuelvan un problema, sin embargo la cuestión es que ese resultado no se esparza entre ellos. Por lo que el alumno que obtenga la respuesta le debe de aplicar una función hash. 
De este modo, el resultado del problema no se sabrá para los demás compañeros y para que el profesor le otorgue el punto extra, comparara el hash del alumno con el de él.
Resultado de imagen para hash function

Aplicación de las funciones Hash
La aplicación principal de las funciones hash en la criptografía es la integridad del mensaje. El valor de hash proporciona una huella digital de los contenidos de un mensaje, lo que garantiza que el mensaje no haya sido alterado por un intruso, virus o por otros medios. Los algoritmos hash son efectivos debido a la extremadamente baja probabilidad de que dos mensajes diferentes de texto claro produzcan el mismo valor hash. (Northcutt, 2017)

Otra aplicación es en el almacenamiento de las contraseñas en un sistema, en donde se guarda el hash de la contraseña y al momento de hacer el login lo que se compara son el hash del valor introducido y el hash guardado en la base de datos, de esta manera si la base de datos llega a ser expuesta, no se podrá obtener el verdadero valor.
Resultado de imagen para firmas digital hash

Tipos de Función Hash
Hay varias funciones hash bien conocidas actualmente en uso:
  • Hashed Message Authentication Code (HMAC): combina la autenticación a través de un secreto compartido con hash.
  • Message Digest 2 (MD2): orientado a bytes, produce un valor hash de 128 bits a partir de un mensaje de longitud arbitraria, diseñado para tarjetas inteligentes.
  • MD4: similar a MD2, diseñado específicamente para un procesamiento rápido en software.
  • MD5: similar a MD4 pero más lento porque los datos se manipulan más. Desarrollado después de que se informaron debilidades potenciales en MD4.
  • Secure Hash Algorithm (SHA): modelado después de MD4 y propuesto por NIST para Secure Hash Standard (SHS), produce un valor de hash de 160 bits.
Las más utilizadas en la actualidad son las SHA, más en específico el algoritmo Keccak, y la familia de las MD, siendo líder la MD5, aunque lamentablemente esta última no se recomienda su uso ya que en 2004 se encontraron colisiones que lo comprometieron.
Todas se basan en el mismo principio sin embargo varían en su algoritmo y su estrategia de seguridad.
Resultado de imagen para sha1

CONCLUSIÓN
Las funciones Hash son muy útiles para su implementación en diferentes estrategias de seguridad, más en específico, procesos que sirvan de autenticación e integridad de la información. Se debe recalcar que las funciones Hash no compiten con los cifrados simétricos y asimétricos que hemos estado viendo en anteriores ensayos, porque simplemente los dos últimos están más enfocados a la confidencialidad de los datos, mientras que las funciones hash se enfocan más en la integridad.
Por ello lo que se busca hoy en día es que estos sean cada día más robustos y a su vez que no requieran de tanto tiempo, ósea que sean más rápidos. Al decir esto, afirmamos que a pesar de que hay unos algoritmos que ofrecen gran seguridad, ninguno de estos es 100% infalible, ya que al mismo tiempo que avanza la búsqueda de mejores algoritmos de hashing, otras personas buscan la manera de poder romperlos. Sin embargo, debemos de acomodarnos con lo que tenemos por el momento.

Referencias

LearnCryptography.com. (19 de 11 de 2017). What Are Hash Functions. Obtenido de Lear Cryptography: https://learncryptography.com
Northcutt, S. (19 de 11 de 2017). Security Laboratory | Hash Functions. Obtenido de SANS Technology Institute : https://www.sans.edu
Techopedia Inc. (17 de 11 de 2017). Hash Function. Obtenido de Technopedia: https://www.techopedia.com
TutorialsPoint. (19 de 11 de 2017). Cryptography Hash functions. Obtenido de TutorialsPoint | simply easy learning: https://www.tutorialspoint.com

Comentarios

Entradas populares