Hashing

De Seobility Wiki
Saltar a: navegación, buscar

¿Qué es el hashing?

El hashing es el proceso de creación de una firma digital para un documento o cadena de texto. En este sentido, a las firmas se les denomina “hash o código” y pueden ser utilizadas por parte de la entidad receptora para verificar que un formulario, dato o línea de texto no ha sido alterado.

Es por ello que el hashing se puede implementar como método de comprobación de cualquier documento relevante, legal e incluso archivos de software importantes para corroborar que no hayan sido editados o que provengan desde la fuente correcta.

De hecho, es bastante común utilizar el hashing para el almacenamiento de contraseñas combinado con otros métodos que permiten mejorar los términos de seguridad.

Hashing

Un ejemplo de un hash creado por la función hash MD5 cuando se inserta: “contraseña123” en MiracleSalad.

¿Cómo funciona el hashing?

Básicamente, la función del hashing es la de convertir los datos escritos en una cadena de caracteres, aparentemente, aleatoria.

Entonces, para lograrlo, el hashing utiliza lo que se denomina “función hash”: un tipo de algoritmo que sigue una serie de reglas preestablecidas para modificar los caracteres originales y que estos se vean como un valor único y totalmente distinto del auténtico.

Por lo tanto, la cadena de caracteres resultante (denominada firma, valor o hash) que ha sido generada a través del hashing debe ser única y cambiar por completo si se realizan pequeñas modificaciones en el texto original.

¿Para qué se utiliza el hashing?

Generalmente, el hashing se utiliza como un método de verificación de suma confianza para textos, datos y archivos, siendo que, al comprobar las firmas de los ficheros descargados, una usuaria o usuario se asegura de que el archivo no está alterado o que proviene de su desarrollador/a original, lo cual, además, ayuda a prevenir la propagación de malware y evita problemas de seguridad.

Por otra parte, el hashing también juega un papel destacado en el almacenamiento de contraseñas. Es decir, su función permite almacenar una firma de hash en el backend en lugar de guardar la contraseña real y, por lo tanto, si un/a hacker accede a la base de datos, solo puede obtener los valores hash y no las contraseñas verdaderas.

No obstante, a pesar de que el hash mejora la seguridad de, por ejemplo, las contraseñas o datos, se requieren otros elementos de apoyo para asegurar que no existan debilidades en el sistema.

Buenas prácticas del hashing

Si queremos trabajar con el hashing, debemos tener en cuenta que ya existen algunas buenas prácticas que podemos implementar como:

  • No debe ser muy rápida. Es decir, aunque la ejecución de una función hashing no debería demorar mucho tiempo, es importante que tampoco sea muy rápida, pues esto podría indicar que la función es fácil de vulnerar.
  • Pequeñas modificaciones en el documento original conllevan enormes cambios en el valor del hash. En este sentido, es vital comprobar que el hash se renueve por completo cada vez que se realice hasta el más mínimo cambio en el documento original.
  • Salting. Se trata de una práctica que consiste en agregar más caracteres a una data antes de hacer un hashing. Dado que los ataques invasivos todavía se mantienen en práctica para hackear contraseñas codificadas, añadir algunos caracteres al documento original puede evitar que las contraseñas previamente descifradas se compartan con otras/os hackers.

Diferencias entre el hashing y el cifrado o encriptación

Puede que parezcan procesos similares, pero existe una gran diferencia entre ambos: el hashing funciona en un solo sentido, mientras que la encriptación lo hace en dos.

A saber, por una parte, una vez que se cifran los datos con un hash, el valor resultante puede ser utilizado para verificar estos datos o el documento original, pero no permite visualizar el contenido de las contraseñas ni documentos propiamente.

En cambio, el cifrado preserva el archivo completo y la parte receptora puede recuperarlo con una llave de encriptación. Esto significa que, a diferencia del hashing, puede utilizarse para enviar y recibir datos de manera segura.

Ejemplos de los algoritmos hash

  • MD5: la función hash MD5 es un método antiguo prácticamente en desuso, pues es menos seguro que las funciones hashing más avanzadas.
  • SHA-1: es también considerado como uno de los métodos de hashing menos confiables, dado que usualmente genera valores hash cortos si se comparan con las funciones más avanzadas.
  • SHA-3: se trata de la función más avanzada, segura y completa que se recomienda en la actualidad.

Importancia en el desarrollo web

El hashing es una pieza importante del desarrollo seguro de las websites y aplicaciones, ya que garantiza una mejor experiencia de usabilidad.

Por esta razón, si comprendemos cómo funciona el hashing y la manera de implementarlo correctamente siguiendo las buenas prácticas, podemos ofrecer una mayor seguridad a las/os visitantes de nuestra web.

Ampliar conocimientos