El cre­ci­mie­n­to desor­bi­ta­do de la cantidad de in­fo­r­ma­ción que se procesa en las redes de datos locales y globales nos empuja a buscar co­n­s­ta­n­te­me­n­te maneras de acceder a grandes volúmenes de datos de forma más rápida y de ga­ra­n­ti­zar la seguridad en el in­te­r­ca­m­bio. Para esto, entre otras te­c­no­lo­gías de seguridad, la función hash es pa­r­ti­cu­la­r­me­n­te útil. Aquí te contamos sus pro­pie­da­des 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 in­fo­r­má­ti­ca, como las si­guie­n­tes:

  • La co­mu­ni­ca­ción cifrada entre el servidor web y el navegador, así como la ge­ne­ra­ción de ide­n­ti­fi­ca­do­res de sesión para apli­ca­cio­nes de internet y el al­ma­ce­na­mie­n­to in­te­r­me­dio de datos (caché)
  • La pro­te­c­ción de datos co­n­fi­de­n­cia­les, como co­n­tra­se­ñas, análisis web o formas de pago
  • La firma de mensajes
  • La ide­n­ti­fi­ca­ción de registros idénticos o similares en funciones de búsqueda
De­fi­ni­ción

Función hash: la función hash se utiliza para uni­fo­r­mi­zar la longitud de cadenas ori­gi­na­l­me­n­te di­fe­re­n­tes. Por ejemplo, con la función hash, di­fe­re­n­tes co­n­tra­se­ñas reciben un número fijo de ca­ra­c­te­res pe­r­mi­ti­dos. Sin embargo, no es posible volver a convertir la cadena de ca­ra­c­te­res del valor hash al original.

¿Qué pro­pie­da­des tiene una función hash?

Una función hash debe cumplir con los si­guie­n­tes re­qui­si­tos para tener las pro­pie­da­des adecuadas:

Función hash como proceso uni­di­re­c­cio­nal

No se debe poder recuperar el contenido de los datos ori­gi­na­les a partir del valor hash generado. De este modo, en el ejemplo anterior, a partir de “$P$Hv8rpLa­nTS­Y­SA/2bP1xN.S6Mdk32.Z3”, no se debe poder recuperar la co­n­tra­se­ña “susi_562#alone”.

Evitar co­li­sio­nes 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á ga­ra­n­ti­za­do, también se habla de una función hash cri­p­to­grá­fi­ca. En la imagen anterior, no hay valores hash idénticos y, por lo tanto, no hay co­li­sio­nes entre los datos generados. Existen te­c­no­lo­gías más avanzadas para evitar estas co­li­sio­nes.

La función hash es ul­tra­rrá­pi­da

Si la co­n­ve­r­sión de las entradas en un valor hash lleva mucho tiempo, este pro­ce­di­mie­n­to no sería el adecuado. Por lo tanto, la función hash debe im­ple­me­n­tar­se muy rá­pi­da­me­n­te. 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, de­te­r­mi­na­da por la te­c­no­lo­gía de hash utilizada. El conjunto de ca­ra­c­te­res del valor de entrada es irre­le­va­n­te; siempre se devuelve el mismo número de ca­ra­c­te­res. Los ca­ra­c­te­res pe­r­mi­ti­dos 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 fi­n­ge­r­pri­nt (huella dactilar) también se utiliza para nombrar al valor hash, ya que simboliza la si­n­gu­la­ri­dad de cada valor hash, co­m­pa­ra­ble a la de nuestras huellas da­c­ti­la­res. Usando letras mi­nú­s­cu­las de la “a” a la “f” y números del 0 al 9, con una longitud de valor hash de 64 ca­ra­c­te­res, se pueden crear hasta 1,1579209e+77 co­m­bi­na­cio­nes, lo que significa un 70 seguido de 24 ceros. Esto demuestra que incluso las cadenas más cortas o con más ca­ra­c­te­res uti­li­za­bles producen una huella dactilar funcional.

Los valores hash mostrados en el ejemplo de función hash anterior se generan si­m­ple­me­n­te 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 tra­n­s­mi­sio­nes de datos cifradas por SSL, el ce­r­ti­fi­ca­do 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 in­te­r­ca­m­bia­dos en el proceso también están cifrados, lo que hace casi imposible in­te­r­ce­p­tar 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 cro­no­ma­r­ca­dor, y se tra­n­s­mi­ten con el URL. Estas claves de sesión se necesitan, por ejemplo, para ide­n­ti­fi­car de manera ine­quí­vo­ca a los usuarios de la cesta de la compra. Hoy en día la tra­n­s­mi­sión con el URL ha caído en desuso (por ejemplo: www.domain.tld/index?sid=d4ccaf2627557c756a0762419a4b6695). La ide­n­ti­fi­ca­ción en el en­ca­be­za­do del sitio web como una cookie se ha vuelto más común.

El al­ma­ce­na­mie­n­to temporal de in­fo­r­ma­ción en cachés se cifra también con valores hash para que los usuarios no au­to­ri­za­dos no puedan sacar ninguna co­n­clu­sión sobre los sitios web visitados y no puedan obtener los datos de acceso o de pago al ver el caché.

La co­mu­ni­ca­ción entre el servidor FTP y el cliente es similar cuando se utiliza el protocolo SFTP.

Protégete y compra un ce­r­ti­fi­ca­do SSL

Evita aparecer en la barra del navegador como "página no segura" y consigue la confianza de tus clientes con una página web con en­cri­p­ta­ción SSL.

Pro­te­c­ción de datos co­n­fi­de­n­cia­les

Los datos de acceso de las cuentas en línea son con fre­cue­n­cia el objetivo principal de los ci­ber­ata­ques. Los piratas in­fo­r­má­ti­cos desean perturbar el fu­n­cio­na­mie­n­to de un sitio, por ejemplo, para reducir los ingresos por pu­bli­ci­dad basada en el tráfico u obtener in­fo­r­ma­ción sobre las formas de pago al­ma­ce­na­das.

En el ejemplo de la página de WordPress, vemos que las co­n­tra­se­ñas siempre se codifican antes de al­ma­ce­nar­se. En co­m­bi­na­ción con las claves de seguridad generadas en el sistema, se alcanza un alto nivel de seguridad. Esto es es­pe­cia­l­me­n­te im­po­r­ta­n­te como pro­te­c­ción contra los llamados ataques de fuerza bruta, en los que el atacante utiliza una función hash es­pe­cia­l­me­n­te pro­gra­ma­da para probar co­m­bi­na­cio­nes hasta encontrar una que permita el acceso. Las co­n­tra­se­ñas largas con altos es­tá­n­da­res de seguridad di­fi­cu­l­tan estos ataques, porque la potencia de co­mpu­tación necesaria para descifrar la co­n­tra­se­ña crece ex­po­ne­n­cia­l­me­n­te. Aquí, como siempre, repetimos el consejo: nunca utilices co­n­tra­se­ñas simples y asegúrate de mantener tus datos de acceso, sean del tipo que sean, a salvo del acceso no au­to­ri­za­do.

Firma de mensajes

El tráfico de correo ele­c­tró­ni­co pasa por se­r­vi­do­res es­pe­cia­l­me­n­te adaptados a esta forma de tra­n­s­mi­sión de mensajes. Las claves generadas por las funciones hash también se utilizan para tra­n­s­mi­tir datos en las firmas digitales de los mensajes.

Así funciona la tra­n­s­mi­sió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 de­s­ti­na­ta­rio junto con el valor hash co­di­fi­ca­do.
  • El de­s­ti­na­ta­rio genera un valor hash del mensaje recibido uti­li­za­n­do 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 de­s­ti­na­ta­rio puede asumir que el mensaje no ha sido ma­ni­pu­la­do en la ruta de tra­n­s­mi­sión.

Recuerda: una firma digital no codifica el mensaje, pero pro­po­r­cio­na una prueba de su in­te­gri­dad. El contenido co­n­fi­de­n­cial debe pasar por un proceso de co­di­fi­ca­ción adicional.

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

La búsqueda de grandes ca­n­ti­da­des 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 ha­bi­ta­n­tes de una gran ciudad. Esto puede llevar mucho tiempo y requerir mucha potencia de co­mpu­tación. Para si­m­pli­fi­car el proceso, se calcula un valor hash para cada objeto de datos, que ide­n­ti­fi­ca 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 exi­s­te­n­tes. Se compara un número limitado de letras, dígitos y ca­ra­c­te­res con las letras, dígitos y ca­ra­c­te­res exi­s­te­n­tes. 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 co­mu­ni­ca­ción ele­c­tró­ni­ca. Los es­tá­n­da­res de seguridad se han vuelto muy so­fi­s­ti­ca­dos. Sin embargo, los piratas in­fo­r­má­ti­cos tampoco descansan, por lo que los ataques también se están volviendo cada vez más complejos.

Ir al menú principal