Una función de hash criptográfico es un algoritmo que se puede ejecutar en datos como un archivo individual o una contraseña para producir un valor llamado suma de comprobación.
El uso principal de una función de hash criptográfico es verificar la autenticidad de un dato. Se puede suponer que dos archivos son idénticos sólo si las sumas de comprobación generadas a partir de cada archivo, utilizando la misma función de hash criptográfico, son idénticas.
Algunas funciones de hash criptográficas de uso común incluyen MD5 y SHA-1, aunque también existen muchas otras.
Las funciones de hash criptográficas se denominan a menudo «funciones de hash», pero eso no es técnicamente correcto. Una función hash es un término genérico que abarca funciones hash criptográficas junto con otros tipos de algoritmos como las comprobaciones de redundancia cíclica.
Índice de contenidos
Funciones criptográficas Hash: Un caso de uso
Digamos que descargas la última versión del navegador Firefox. Por alguna razón, necesitabas descargarlo de un sitio que no fuera el de Mozilla. Como no está alojado en un sitio en el que hayas aprendido a confiar, te gustaría asegurarte de que el archivo de instalación que acabas de descargar es exactamente el mismo que el que ofrece Mozilla.
Utilizando una calculadora de suma de comprobación, se calcula una suma de comprobación utilizando una función de hash criptográfica particular, como SHA-2, y luego se compara con la publicada en el sitio de Mozilla. Si son iguales, puedes estar razonablemente seguro de que la descarga que tienes es la que Mozilla quería que tuvieras.
¿Pueden revertirse las funciones criptográficas Hash?
Las funciones de hash criptográfico están diseñadas para evitar la posibilidad de revertir las sumas de comprobación que crean de vuelta a los textos originales. Sin embargo, aunque son virtualmente imposibles de revertir, no están 100% garantizados para salvaguardar los datos.
Los hackers pueden utilizar una tabla arco iris para calcular el texto plano de una suma de comprobación. Las tablas Rainbow son diccionarios que enumeran miles, millones o incluso miles de millones de sumas de comprobación junto con su correspondiente valor de texto sin formato.
Aunque esto no está invirtiendo técnicamente el algoritmo de hash criptográfico, podría serlo, dado que es tan simple de hacer. En realidad, dado que ninguna tabla arco iris puede enumerar todas las sumas de comprobación posibles que existen, por lo general sólo son útiles para frases simples como contraseñas débiles.
He aquí una versión simplificada de una tabla arco iris para mostrar cómo se trabajaría cuando se utiliza la función de hash criptográfico SHA-1:
Rainbow Table Example Plaintext SHA-1 Suma de comprobación 123458cb2237d0679ca88db64eac60da96345513964Contraseña1e38ad214943daad1d64c102faec29de4afe9da3dilovemydoga25fb3505406c9ac761c8428692fbf5d5d5df5df1316Jenny4007d500d500d5eb0173008fe55275d12e9629eef8b408b8c1fd408c1f1984c1ebe1
Un hacker debe saber qué algoritmo de hash criptográfico se usó para generar las sumas de comprobación para calcular los valores.
Para mayor protección, algunos sitios web que almacenan contraseñas de usuario realizan funciones adicionales en el algoritmo de hash criptográfico después de generar el valor pero antes de almacenarlo. Este proceso produce un nuevo valor que sólo el servidor web entiende y que no coincide con la suma de comprobación original.
Por ejemplo, después de introducir una contraseña y generar la suma de comprobación, se puede separar en varias partes y reorganizarla antes de almacenarla en la base de datos de contraseñas, o se pueden intercambiar ciertos caracteres con otros. Cuando se intenta autenticar la próxima vez que el usuario inicia sesión, el servidor web invierte esta función adicional y se vuelve a generar la suma de comprobación original para verificar que la contraseña de un usuario es válida.
Tomar estos pasos limita la utilidad de un hacker en el que se roban todas las sumas de comprobación. La idea es realizar una función que es desconocida, así que si el hacker conoce el algoritmo de hash criptográfico pero no el personalizado, entonces conocer las sumas de comprobación de contraseñas no es útil.
Contraseñas y funciones criptográficas Hash
Una base de datos guarda las contraseñas de los usuarios de manera similar a una tabla arco iris. Cuando se introduce la contraseña, se genera la suma de comprobación y se compara con la que está registrada con su nombre de usuario. Entonces se le concede acceso si los dos son idénticos.
Dado que una función de hash criptográfica produce una suma de comprobación no reversible, ¿es seguro para usted hacer su contraseña tan simple como 12345 , en lugar de 12@34$5 , simplemente porque las sumas de comprobación en sí no pueden ser entendidas? No, y aquí está el por qué.
Estas dos contraseñas son imposibles de descifrar con sólo mirar las sumas de comprobación:
MD5 para 12345: 827ccb0eea8a706c4c34a16891f84e7b
MD5 para 12@34$5: a4d3cc004f487b18b2ccd4853053818b
A primera vista, usted puede pensar que está bien usar cualquiera de estas contraseñas. Esto es cierto si un atacante intentó averiguar su contraseña adivinando la suma de comprobación MD5, lo que nadie hace, pero no es cierto si se realiza un ataque de fuerza bruta o de diccionario, que es una táctica común.
Un ataque de fuerza bruta ocurre cuando se toman múltiples puñaladas al azar para adivinar una contraseña. En este caso, sería fácil adivinar 12345 , pero bastante difícil descifrar al azar el otro. Un ataque de diccionario es similar en el sentido de que el atacante puede probar cada palabra, número o frase de una lista de contraseñas comunes (y no tan comunes), y 12345 es una de esas contraseñas comunes.
Aunque las funciones de hash criptográficas producen sumas de comprobación difíciles de adivinar, debería utilizar una contraseña compleja para todas sus cuentas de usuario en línea y locales.
Más información sobre las funciones criptográficas Hash
Podría parecer que las funciones de hash criptográficas están relacionadas con la encriptación, pero las dos funcionan de manera diferente.
La encriptación es un proceso bidireccional en el que se encripta algo para que sea ilegible y luego se descifra para que se vuelva a utilizar normalmente. Puede cifrar los archivos que ha almacenado para que cualquiera que acceda a ellos no pueda utilizarlos, o puede utilizar el cifrado de transferencia de archivos para cifrar los archivos que se mueven por una red, como los que carga o descarga en línea.
Las funciones de hash criptográficas funcionan de forma diferente en el sentido de que las sumas de comprobación no están pensadas para ser invertidas con una contraseña especial de lavado. El único propósito de las funciones de hash criptográficas es comparar dos piezas de datos, como cuando se descargan archivos, se almacenan contraseñas y se extraen datos de una base de datos.
Es posible que una función de hash criptográfica produzca la misma suma de comprobación para diferentes piezas de datos. Cuando esto sucede, se llama colisión, lo cual es un gran problema considerando que el objetivo de una función de hash criptográfica es hacer sumas de control únicas para cada entrada de datos en ella.
Las colisiones pueden ocurrir es porque cada función de hash criptográfica produce un valor de una longitud fija independientemente de los datos de entrada. Por ejemplo, la función de hash criptográfico MD5 genera 827ccb0eea8a706c4c34a16891f84e7b, 1f633b2909b9b9c1addf32302c7a497983, y e10adc3949ba59abbe56e057f20f883e para tres bloques de datos totalmente diferentes.
La primera suma de comprobación es de 12345 . El segundo fue generado a partir de más de 700 letras y números, y el tercero es de 123456 . Las tres entradas son de diferentes longitudes, pero los resultados son siempre de sólo 32 caracteres desde que se utilizó la suma de comprobación MD5.
No hay límite en el número de sumas de comprobación que se pueden crear porque cada pequeño cambio en la entrada se supone que produce una suma de comprobación completamente diferente. Debido a que hay un límite en el número de sumas de comprobación que una función de hash criptográfica puede producir, siempre existe la posibilidad de que se produzca una colisión.
Esta es la razón por la que se han creado otras funciones de hash criptográficas. Mientras que MD5 genera un valor de 32 caracteres, SHA-1 genera 40 caracteres y SHA-2 (512) genera 128. Cuanto mayor sea el número de caracteres que tiene la suma de comprobación, menor será la probabilidad de que se produzca una colisión.