¿Qué es una función hash?

El crecimiento desorbitado de la cantidad de información que se procesa en las redes de datos locales y globales nos empuja a buscar constantemente maneras de acceder a grandes volúmenes de datos de forma más rápida y de garantizar la seguridad en el intercambio. Para esto, entre otras tecnologías de seguridad, la función hash es particularmente útil. Aquí te contamos sus propiedades y sus usos.

La voz inglesa hash significa cortar. Así, la función hashcorta” los datos y les da una longitud uniforme, sin importar el valor inicial. Esta función también recibe el nombre de función de resumen y se utiliza en muchas áreas de la informática, como las siguientes:

  • La comunicación cifrada entre el servidor web y el navegador, así como la generación de identificadores de sesión para aplicaciones de internet y el almacenamiento intermedio de datos (caché)
  • La protección de datos confidenciales, como contraseñas, análisis web o formas de pago
  • La firma de mensajes
  • La identificación de registros idénticos o similares en funciones de búsqueda
Definición

Función hash: la función hash se utiliza para uniformizar la longitud de cadenas originalmente diferentes. Por ejemplo, con la función hash, diferentes contraseñas reciben un número fijo de caracteres permitidos. Sin embargo, no es posible volver a convertir la cadena de caracteres del valor hash al original.

¿Qué propiedades tiene una función hash?

Una función hash debe cumplir con los siguientes requisitos para tener las propiedades adecuadas:

Función hash como proceso unidireccional

No se debe poder recuperar el contenido de los datos originales a partir del valor hash generado. De este modo, en el ejemplo anterior, a partir de “$P$Hv8rpLanTSYSA/2bP1xN.S6Mdk32.Z3”, no se debe poder recuperar la contraseña “susi_562#alone”.

Evitar colisiones con valores hash

Nunca debe suceder que se asigne el mismo valor hash a datos de origen distinto. Cada entrada debe generar un valor hash diferente. Si esto está garantizado, también se habla de una función hash criptográfica. En la imagen anterior, no hay valores hash idénticos y, por lo tanto, no hay colisiones entre los datos generados. Existen tecnologías más avanzadas para evitar estas colisiones.

La función hash es ultrarrápida

Si la conversión de las entradas en un valor hash lleva mucho tiempo, este procedimiento no sería el adecuado. Por lo tanto, la función hash debe implementarse muy rápidamente. En las bases de datos, los valores hash se almacenan en las llamadas tablas hash para asegurar un acceso rápido.

¿Qué valor hash se genera?

El valor hash generado por la función hash tiene una longitud fija, determinada por la tecnología de hash utilizada. El conjunto de caracteres del valor de entrada es irrelevante; siempre se devuelve el mismo número de caracteres. Los caracteres permitidos se definen en la función hash.

De este modo, el valor hash es el resultado calculado con la función hash y un algoritmo hash. El término fingerprint (huella dactilar) también se utiliza para nombrar al valor hash, ya que simboliza la singularidad de cada valor hash, comparable a la de nuestras huellas dactilares. Usando letras minúsculas de la “a” a la “f” y números del 0 al 9, con una longitud de valor hash de 64 caracteres, se pueden crear hasta 1,1579209e+77 combinaciones, lo que significa un 70 seguido de 24 ceros. Esto demuestra que incluso las cadenas más cortas o con más caracteres utilizables producen una huella dactilar funcional.

Los valores hash mostrados en el ejemplo de función hash anterior se generan simplemente con unas pocas líneas de código PHP:

<?php
echo hash('sha256', 'apple'); 
?>

En este ejemplo, el código siempre da como resultado el valor hash o la huella dactilar 3a42c503953909637f78dd8c99b3b85ddde362415585afc11901bdefe8349102.

Al comando hash se le asignó el algoritmo de cifrado sha256 para la palabra apple.

Función hash y sitios web

En las transmisiones de datos cifradas por SSL, el certificado del servidor se envía al navegador del usuario durante la consulta al servidor web. Después, se genera una clave de sesión con una función hash y esta se envía al servidor, donde se descifra y se verifica. Cuando el servidor confirma la clave de sesión recibida, comienza el tráfico de datos HTTP cifrado como HTTPS. Los paquetes de datos intercambiados en el proceso también están cifrados, lo que hace casi imposible interceptar el tráfico de datos.

Las claves de sesión (ID de sesión) se generan a partir de datos variables de la visita a un sitio web, como la dirección IP y el cronomarcador, y se transmiten con el URL. Estas claves de sesión se necesitan, por ejemplo, para identificar de manera inequívoca a los usuarios de la cesta de la compra. Hoy en día la transmisión con el URL ha caído en desuso (por ejemplo: www.domain.tld/index?sid=d4ccaf2627557c756a0762419a4b6695). La identificación en el encabezado del sitio web como una cookie se ha vuelto más común.

El almacenamiento temporal de información en cachés se cifra también con valores hash para que los usuarios no autorizados no puedan sacar ninguna conclusión sobre los sitios web visitados y no puedan obtener los datos de acceso o de pago al ver el caché.

La comunicación entre el servidor FTP y el cliente es similar cuando se utiliza el protocolo SFTP.

Certificados SSL con IONOS

Protege tu dominio y consigue la confianza de tus clientes con una página web con encriptación SSL.

Activación fácil
Seguridad máxima
Asistencia 24/7

Protección de datos confidenciales

Los datos de acceso de las cuentas en línea son con frecuencia el objetivo principal de los ciberataques. Los piratas informáticos desean perturbar el funcionamiento de un sitio, por ejemplo, para reducir los ingresos por publicidad basada en el tráfico u obtener información sobre las formas de pago almacenadas.

En el ejemplo de la página de WordPress, vemos que las contraseñas siempre se codifican antes de almacenarse. En combinación con las claves de seguridad generadas en el sistema, se alcanza un alto nivel de seguridad. Esto es especialmente importante como protección contra los llamados ataques de fuerza bruta, en los que el atacante utiliza una función hash especialmente programada para probar combinaciones hasta encontrar una que permita el acceso. Las contraseñas largas con altos estándares de seguridad dificultan estos ataques, porque la potencia de computación necesaria para descifrar la contraseña crece exponencialmente. Aquí, como siempre, repetimos el consejo: nunca utilices contraseñas simples y asegúrate de mantener tus datos de acceso, sean del tipo que sean, a salvo del acceso no autorizado.

Firma de mensajes

El tráfico de correo electrónico pasa por servidores especialmente adaptados a esta forma de transmisión de mensajes. Las claves generadas por las funciones hash también se utilizan para transmitir datos en las firmas digitales de los mensajes.

Así funciona la transmisión de mensajes con una firma digital:

  • El remitente calcula un valor hash para su mensaje y lo codifica con su clave privada (la firma digital).
  • El mensaje se envía al destinatario junto con el valor hash codificado.
  • El destinatario genera un valor hash del mensaje recibido utilizando la misma función hash. Además, descifra el valor hash recibido con la clave pública y compara ambos.
  • Si ambos valores coinciden, el destinatario puede asumir que el mensaje no ha sido manipulado en la ruta de transmisión.

Recuerda: una firma digital no codifica el mensaje, pero proporciona una prueba de su integridad. El contenido confidencial debe pasar por un proceso de codificación adicional.

¿Cómo ayuda la función hash a las funciones de búsqueda?

La búsqueda de grandes cantidades de datos es un proceso que requiere muchos recursos. Imagina buscar un término en una tabla con muchos campos (nombre, apellido, calle, etc.) que contiene todos los habitantes de una gran ciudad. Esto puede llevar mucho tiempo y requerir mucha potencia de computación. Para simplificar el proceso, se calcula un valor hash para cada objeto de datos, que identifica de manera única cada entrada. Para buscar en la tabla, se calcula de nuevo un valor hash a partir del término de búsqueda, que luego se compara con los valores hash existentes. Se compara un número limitado de letras, dígitos y caracteres con las letras, dígitos y caracteres existentes. Este proceso es mucho más eficaz que la búsqueda en todos los campos de una tabla de datos.

En resumen

Las funciones hash se utilizan para mejorar la seguridad en la comunicación electrónica. Los estándares de seguridad se han vuelto muy sofisticados. Sin embargo, los piratas informáticos tampoco descansan, por lo que los ataques también se están volviendo cada vez más complejos.