El hashing es un método cri­p­to­grá­fi­co que tra­n­s­fo­r­ma registros de datos y ca­ra­c­te­res de cualquier longitud en valores hash compactos y fijos. Ofrece más seguridad que el cifrado, ya que los valores hash no pueden volver a co­n­ve­r­ti­r­se en valores ori­gi­na­les sin una clave. El hashing es es­pe­cia­l­me­n­te im­po­r­ta­n­te para la gestión y la seguridad de las bases de datos, los datos de los usuarios, la gestión de las co­n­tra­se­ñas y la au­te­n­ti­fi­ca­ción de los accesos.

¿Qué es el hashing?

El hashing es una im­po­r­ta­n­te he­rra­mie­n­ta cri­p­to­grá­fi­ca para tra­n­s­fo­r­mar los datos en los llamados valores hash. Para ello se utiliza una función hash especial, no­r­ma­l­me­n­te en forma de algoritmo. La tarea central del hashing se puede adivinar por la tra­du­c­ción del término al español, esta es, “picar o mezclar”. Y en el hashing no ocurre nada más que eso: conjuntos de datos como co­n­tra­se­ñas, datos de empresas y usuarios u otras formas de datos se de­s­co­m­po­nen y se tra­n­s­fo­r­man en una nueva forma abreviada, el valor hash. En el proceso de hashing, los valores hash siempre tienen la misma longitud y re­pre­se­n­tan registros de datos ori­gi­na­les. Con las tablas hash, los valores hash pueden al­ma­ce­nar­se en bases de datos de forma compacta, segura y ahorrando recursos.

La ventaja del hashing: los valores hash no pueden volver a co­n­ve­r­ti­r­se a su forma original sin una clave. Incluso si caen en las manos equi­vo­ca­das, los ci­be­r­de­li­n­cue­n­tes no pueden hacer nada con los valores hash. Aunque a menudo se confunde el hashing con el cifrado, no es lo mismo: los valores hash no se cifran, sino que se tra­n­s­fo­r­man en una cadena de ca­ra­c­te­res co­m­ple­ta­me­n­te nueva, por lo que no pueden de­s­ci­frar­se. Para un mapeo, se ne­ce­si­ta­ría más bien las claves co­rre­s­po­n­die­n­tes, el algoritmo utilizado y los datos ori­gi­na­les asociados a los valores hash.

¿Cómo funciona el hashing?

El proceso de hashing se compone de tres elementos:

  • Función hash: la función hash suele ser un algoritmo cri­p­to­grá­fi­co que de­s­co­m­po­ne co­m­ple­ta­me­n­te datos de di­fe­re­n­tes lo­n­gi­tu­des, los resuelve y los tra­n­s­fo­r­ma en cadenas siempre de la misma longitud. Estos valores hash son si­g­ni­fi­ca­ti­va­me­n­te más cortos y compactos que los valores ori­gi­na­les.
  • Valor hash: los valores hash son el resultado de la función hash. En el contexto del método hash utilizado, siempre tienen una longitud fija de ca­ra­c­te­res he­xa­de­ci­ma­les, a di­fe­re­n­cia de los valores ori­gi­na­les. La longitud fija de los valores hash depende del método empleado.
  • Tablas hash: los valores hash pueden al­ma­ce­nar­se como tablas hash en bases de datos. Estas requieren mucho menos espacio que el al­ma­ce­na­mie­n­to de los registros de datos ori­gi­na­les. Para crearlas, los registros de datos reciben valores de índice es­pe­cí­fi­cos a través del hashing, que indican dónde se encuentra el registro de los datos. De esta forma, se reduce si­g­ni­fi­ca­ti­va­me­n­te el tiempo de pro­ce­sa­mie­n­to y la potencia de cálculo en la búsqueda de in­fo­r­ma­ción.

El fu­n­cio­na­mie­n­to del hashing se basa en cinco pro­pie­da­des ca­ra­c­te­rí­s­ti­cas que ga­ra­n­ti­zan la seguridad y la fia­bi­li­dad:

  • De­te­r­mi­ni­s­mo: la función hash debe generar siempre un valor hash de longitud fija y corta in­de­pe­n­die­n­te­me­n­te de la longitud de las di­fe­re­n­tes entradas.
  • No legible: el hashing tra­n­s­fo­r­ma los valores ori­gi­na­les en valores hash, que no se pueden leer di­re­c­ta­me­n­te. No debe haber forma de descifrar el valor hash en el sentido clásico y generar el texto o cadena original a partir de él.
  • Seguridad contra co­li­sio­nes de valores: no se debe asignar el mismo valor hash a di­fe­re­n­tes entradas. Si dos valores ori­gi­na­les reciben el mismo valor hash, hay una colisión. Los valores hash di­s­ti­n­ti­vos y únicos reducen los puntos de ataque y aumentan la seguridad. Sin embargo, de­pe­n­die­n­do de la apli­ca­ción, pu­n­tua­l­me­n­te se puede buscar una colisión.
  • Co­n­ti­nui­dad o no co­n­ti­nui­dad: en principio, los valores hash ofrecen mayor seguridad si son no-continuos, es decir, si di­fe­re­n­tes conjuntos de datos ori­gi­na­les reciben valores hash lo más di­fe­re­n­tes posible. El uso de valores hash continuos, por otro lado, es pre­fe­ri­ble cuando el hashing se utiliza para gestionar conjuntos de datos y entradas similares.
  • Velocidad: el hashing no solo permite una mayor seguridad, sino también un acceso más rápido a las bases de datos.

Hashing: áreas de apli­ca­ción

Las ventajas y la fu­n­cio­na­li­dad del hashing quedan es­pe­cia­l­me­n­te claras con la ayuda de varios casos de uso y áreas de apli­ca­ción. Las áreas típicas de apli­ca­ción son:

  • Creación de tablas hash
  • “En­cri­p­ta­ción” de datos im­po­r­ta­n­tes
  • Búsqueda de du­pli­ca­dos
  • Sumas de co­m­pro­ba­ción y firmas digitales
  • Búsqueda de datos similares
  • Sistemas de au­te­n­ti­ca­ción
  • Caching

Gestión de bases de datos

El hashing ofrece la ventaja de que grandes ca­n­ti­da­des de datos pueden al­ma­ce­nar­se de forma más compacta y eficiente en forma de tablas hash. Para ello, las cadenas de ca­ra­c­te­res se combinan como tabla hash en la base de datos en una dirección y bajo una posición concreta con valores hash. Esto ahorra memoria, aumenta la seguridad de las bases de datos y acelera la búsqueda de entradas es­pe­cí­fi­cas en la tabla hash. Los valores hash y las tablas hash optimizan la or­ga­ni­za­ción y la gestión de las in­frae­s­tru­c­tu­ras de índices y datos.

A modo de ejemplo: las bases de datos de clientes suelen incluir in­fo­r­ma­ción im­po­r­ta­n­te como nombres, datos de contacto o di­re­c­cio­nes. Si hay que buscar in­fo­r­ma­ción es­pe­cí­fi­ca en una base de datos, una búsqueda regular llevaría mucho tiempo. Esto se debe a que habría que escanear toda la base de datos en busca de los valores buscados. Sin embargo, mediante el hashing se pueden formar bloques de datos con una posición y dirección es­pe­cí­fi­ca en la base de datos. Así, durante el proceso de búsqueda, el ordenador salta in­me­dia­ta­me­n­te a la posición a la cual se puede dirigir el valor hash asociado en una tabla hash.

Firmas digitales y sumas de co­m­pro­ba­ción

El hashing también juega un papel im­po­r­ta­n­te como método de au­te­n­ti­ca­ción. Por ejemplo, se utiliza para crear firmas digitales, las llamadas huellas digitales. De esta forma, es posible confirmar la in­te­gri­dad de la co­mu­ni­ca­ción entre el emisor y el receptor. Asimismo, también se pueden vincular las co­n­tra­se­ñas con un valor hash al crear una nueva cuenta de usuario. Cada vez que se quiere iniciar sesión en la cuenta, la co­n­tra­se­ña in­tro­du­ci­da se convierte en hash y se compara con el valor hash al­ma­ce­na­do. En un proceso de re­cu­pe­ra­ción de co­n­tra­se­ña, se generará también un valor hash para la nueva clave.

A modo de ejemplo: las firmas digitales pueden uti­li­zar­se para comprobar si los mensajes, las descargas o incluso las páginas web son seguras. Para ello, los re­mi­te­n­tes generan valores hash a partir de los mensajes o pro­po­r­cio­nan un valor hash al descargar un programa. Los de­s­ti­na­ta­rios, a su vez, también generan un valor hash con la misma función hash. Este se compara con el valor hash su­mi­ni­s­tra­do, no­r­ma­l­me­n­te en­cri­p­ta­do. Un claro ejemplo de ello es el cifrado SSL y TLS de Internet. En este caso, el servidor web envía el llamado ce­r­ti­fi­ca­do de servidor al navegador. El hashing genera una clave de sesión a partir del ce­r­ti­fi­ca­do, que el servidor recibe, descifra y confirma. Tras la au­te­n­ti­ca­ción, se produce el tráfico de datos HTTPS. El SFTP funciona de forma similar.

Co­n­tra­se­ñas y otros datos sensibles

Para almacenar datos sensibles, como co­n­tra­se­ñas o datos de acceso y de usuario, el hashing ofrece una seguridad co­n­si­de­ra­ble­me­n­te mayor. Esto se debe a que no se almacenan en la base de datos en su forma original o “si­m­ple­me­n­te” en­cri­p­ta­dos. En su lugar, los registros de datos se de­s­co­m­po­nen en valores hash, que son inútiles incluso en caso de robo de datos sin los medios o claves adecuados. Cuando se introduce una co­n­tra­se­ña, el valor hash calculado para la co­n­tra­se­ña se compara con el valor hash al­ma­ce­na­do. El hashing también se utiliza a veces en el caching para que los datos al­ma­ce­na­dos te­m­po­ra­l­me­n­te, como las páginas webs visitadas o los datos de inicio de sesión y de pago, sean ilegibles para personas no au­to­ri­za­das.

Ejemplo: incluso el al­ma­ce­na­mie­n­to de co­n­te­ni­dos diversos, como textos o archivos de audio y vídeo, puede ser más seguro gracias al hashing. Las es­tru­c­tu­ras binarias de los archivos se tra­n­s­fie­ren a valores hash compactos que pueden uti­li­zar­se para re­fe­re­n­ciar el bloque de datos co­rre­s­po­n­die­n­te. Dado que los valores hash están vi­n­cu­la­dos a la posición de la base de datos, los datos buscados no solo pueden en­co­n­trar­se más rá­pi­da­me­n­te, sino que también son ilegibles para los atacantes sin la clave co­rre­s­po­n­die­n­te y no pueden tra­n­s­fe­ri­r­se a la forma original.

¿Qué ventajas tiene el hashing?

Las ventajas del hashing de un vistazo:

  • Los datos sensibles se pueden almacenar y gestionar de forma segura y compacta.
  • Los conjuntos de datos tra­n­s­fe­ri­dos en valores hash no pueden ser “de­s­ci­fra­dos” o tra­n­s­fe­ri­dos de nuevo a su forma original sin más.
  • El acceso a las bases de datos es más rápido porque los valores hash están asociados a po­si­cio­nes en la base de datos.
  • Los valores hash robados no son útiles para los atacantes sin las apli­ca­cio­nes apro­pia­das o la in­fo­r­ma­ción sobre la función hash.
  • El in­te­r­ca­m­bio seguro de datos, mensajes o programas in­fo­r­má­ti­cos puede au­te­n­ti­car­se o firmarse de forma fiable mediante el hashing.

Hashing y blo­c­k­chain

El hash y las funciones hash son una parte central del blo­c­k­chain o cadena de bloques. Para au­te­n­ti­car las tra­n­sac­cio­nes con las cri­p­to­mo­ne­das como Bitcoin, se generan hashes durante el proceso de minado. Bitcoin, por ejemplo, funciona con el algoritmo de hash SHA-256, que convierte cadenas de cualquier longitud en una cadena fija, o hash, de 64 ca­ra­c­te­res. Estas legitiman, au­te­n­ti­fi­can y do­cu­me­n­tan las cri­p­to­tra­n­sac­cio­nes oficiales, las depositan en la cadena de bloques y ga­ra­n­ti­zan así un alto grado de seguridad.

En el blo­c­k­chain, el hashing cumple tres funciones pri­n­ci­pa­les:

  • Minería: el re­n­di­mie­n­to de la minería de una red de cri­p­to­mo­ne­das también se denomina hashrate, que muestra cuántos mineros están activos. Los mineros generan hashes re­so­l­vie­n­do ro­m­pe­ca­be­zas ma­te­má­ti­cos. Si un hash es válido, se valida un bloque de tra­n­sac­ción. Cuanto mayor sea la tasa de hash, más monedas o tokens se podrán generar. La cri­p­to­mi­ne­ría se basa, por ende, en al­go­ri­t­mos de hash basados en tra­n­sac­cio­nes.
  • Blo­c­k­chain: las tra­n­sac­cio­nes re­gi­s­tra­das y validadas se do­cu­me­n­tan se­cue­n­cia­l­me­n­te como bloques. Se añaden a la cadena de bloques en el curso de la minería. Cada bloque está vinculado al anterior y contiene el valor hash del bloque pre­ce­de­n­te. Esto excluye la po­si­bi­li­dad de que se añada un bloque no válido o pe­r­ju­di­cial.
  • Ge­ne­ra­ción de claves: el hashing también se utiliza para tra­n­s­fe­rir cri­p­to­mo­ne­das. En este caso, la au­te­n­ti­ca­ción tiene lugar a través de claves públicas y privadas mediante hashing.

¿Cómo de seguro es el hashing?

En principio, los expertos en pro­te­c­ción de datos aconsejan el uso de hashing para almacenar las bases de datos y los datos sensibles de la forma más segura posible. El hash es pre­fe­ri­ble al cifrado clásico porque los valores hash no contienen pistas sobre los registros de datos ori­gi­na­les ni pueden ser “de­s­ci­fra­dos”. Incluso los ataques de fuerza bruta, en los que se prueban co­m­bi­na­cio­nes de cadenas hasta encontrar una coin­ci­de­n­cia, requieren un número as­tro­nó­mi­co de intentos.

Sin embargo, hay actores ma­li­cio­sos que hacen coincidir listas de valores hash robados con tablas arcoíris, también llamadas tablas rainbow. Son listas de valores hash robados y cre­de­n­cia­les asociadas a ellos. Si un valor hash de la base de datos coincide con un valor hash de la lista rainbow y la co­n­tra­se­ña asignada, entonces hay una brecha de seguridad. Por esta razón, también se aconseja cambiar re­gu­la­r­me­n­te las co­n­tra­se­ñas, ac­tua­li­zar­las pe­rió­di­ca­me­n­te y utilizar al­go­ri­t­mos de hashing nuevos o ac­tua­li­za­dos. Por ejemplo, el Internet En­gi­nee­ri­ng Taskforce (IETF) recomendó los si­guie­n­tes al­go­ri­t­mos hash en 2021:

  • Argón2
  • Bcrpt
  • Scrypt
  • PBKDF2

Otra forma de hacer el hashing aún más seguro son los procesos de en­cri­p­ta­do in­fo­r­má­ti­co, como por ejemplo salting y pepper. Con “Salting”, cada co­n­tra­se­ña tra­n­s­mi­ti­da en valores hash recibe una cadena adicional generada alea­to­ria­me­n­te. “Salts”, con una longitud re­co­me­n­da­da de 16 ca­ra­c­te­res, hace que los ataques de fuerza bruta sean casi im­po­si­bles y, por tanto, ofrece una seguridad aún más fiable. Si a co­n­ti­nua­ción se añade un código de 32 ca­ra­c­te­res llamado “Pepper” para todas las co­n­tra­se­ñas, los valores hash robados son casi im­po­si­bles de descifrar, ni siquiera, aunque hayan co­n­se­gui­do el “Salt” adecuado.

Ir al menú principal