Skip to main content

¿Qué es una función de cifrado criptográfico?

PHP Tutorial: Secure Password Hashing using crypt() (Mayo 2025)

PHP Tutorial: Secure Password Hashing using crypt() (Mayo 2025)
Anonim

Una función hash criptográfica 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 hash criptográfica es verificar la autenticidad de un dato. Se puede suponer que dos archivos son idénticos solo si las sumas de verificación generadas de cada archivo, utilizando la misma función criptográfica de hash, son idénticas.

Algunas funciones hash criptográficas comúnmente utilizadas incluyen MD5 y SHA-1, aunque también existen muchas otras.

Las funciones hash criptográficas a menudo se denominan "funciones 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 verificaciones de redundancia cíclica.

Funciones de hash criptográficas: un caso de uso

Digamos que descarga la última versión del navegador Firefox. Por alguna razón, necesitabas descargarlo desde un sitio que no sea el de Mozilla. Debido a que no está alojado en un sitio en el que ha aprendido a confiar, le gustaría asegurarse de que el archivo de instalación que acaba de descargar sea exactamente el mismo que el que ofrece Mozilla.

Usando una calculadora de suma de comprobación, usted calcula una suma de verificación usando una función de hash criptográfica particular, como SHA-2, y luego la 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 pretendía tener.

¿Se pueden revertir las funciones criptográficas de hash?

Las funciones hash criptográficas están diseñadas para evitar la capacidad de revertir las sumas de comprobación que crean a los textos originales. Sin embargo, a pesar de que son virtualmente imposibles de revertir, no están 100% garantizados para salvaguardar los datos.

Los piratas informáticos pueden usar una tabla de arco iris para descifrar el texto sin formato de una suma de comprobación.

Las tablas de arco iris son diccionarios que enumeran miles, millones o incluso miles de millones de sumas de comprobación junto con su valor de texto sin formato correspondiente.

Si bien esto no es técnicamente revertir el algoritmo hash criptográfico, podría serlo, dado que es tan simple de hacer. En realidad, dado que ninguna tabla de arco iris puede enumerar todas las posibles sumas de comprobación existentes, generalmente solo son útiles para frases simples como contraseñas débiles.

Aquí hay una versión simplificada de una tabla de arco iris para mostrar cómo funcionaría uno al usar la función de hash criptográfico SHA-1:

Texto sin formatoSuma de comprobación SHA-1
123458cb2237d0679ca88db6464eac60da96345513964
contraseña1e38ad214943daad1d64c102faec29de4afe9da3d
amo a mi perroa25fb3505406c9ac761c8428692fbf5d5ddf1316
Jenny4007d5eb0173008fe55275d12e9629eef8bdb408c1f
dallas1984c1ebe6d80f4c7c087ad29d2c0dc3e059fc919da2

Un pirata informático debe saber qué algoritmo de hash criptográfico se utilizó para generar las sumas de comprobación para determinar los valores.

Para mayor protección, algunos sitios web que almacenan contraseñas de usuario realizan funciones adicionales en el algoritmo de cifrado criptográfico una vez que se genera el valor pero antes de que se almacene. Este proceso produce un nuevo valor que solo el servidor web entiende y que no coincide con la suma de comprobación original.

Por ejemplo, una vez que se ingresa una contraseña y se genera la suma de control, puede separarse en varias partes y reorganizarse antes de que se almacene en la base de datos de contraseñas, o ciertos caracteres pueden intercambiarse con otros. Cuando se intenta autenticar la próxima vez que el usuario inicie sesión, el servidor web invierte esta función adicional y se genera nuevamente la suma de comprobación original para verificar que la contraseña de un usuario sea válida.

Tomar estos pasos limita la utilidad de un pirateo donde se roban todas las sumas de comprobación. La idea es realizar una función desconocida, por lo que si el pirata informático conoce el algoritmo de cifrado criptográfico pero no el personalizado, no es útil conocer las sumas de comprobación de contraseña.

Contraseñas y funciones de criptografía hash

Una base de datos guarda las contraseñas de los usuarios de una manera similar a una tabla de arco iris. Cuando se ingresa su 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 otorga acceso si los dos son idénticos.

Dado que una función criptográfica hash produce una suma de comprobación no reversible, ¿es seguro para usted hacer que su contraseña sea tan simple como 12345, en lugar de 12@34$5, simplemente porque las sumas de comprobación en sí mismas no pueden ser entendidas? No, y he aquí por qué.

Estas dos contraseñas son imposibles de descifrar con solo mirar las sumas de comprobación:

MD5 para 12345: 827ccb0eea8a706c4c34a16891f84e7b

MD5 para 12 @ 34 $ 5: a4d3cc004f487b18b2ccd4853053818b

A primera vista, puede pensar que está bien usar cualquiera de estas contraseñas. Esto es cierto si un atacante trató de descifrar su contraseña adivinando la suma de comprobación MD5, que nadie hace, pero no es cierto si se realiza un ataque de fuerza bruta o diccionario, que es una táctica común.

Se produce un ataque de fuerza bruta cuando se realizan múltiples puñaladas al azar para adivinar una contraseña. En este caso, sería fácil de adivinar. 12345, pero bastante difícil de averiguar al azar el otro. Un ataque de diccionario es similar en que el atacante puede probar cada palabra, número o frase de una lista de contraseñas comunes (y no tan comunes), y12345 Es una de esas contraseñas comunes.

A pesar de que las funciones criptográficas de hash producen sumas de comprobación difíciles de hacer imposible de adivinar, aún debe usar una contraseña compleja para todas sus cuentas de usuarios locales y en línea.

Más información sobre las funciones criptográficas de hash

Puede parecer que las funciones criptográficas de hash están relacionadas con el cifrado, pero las dos funcionan de diferentes maneras.

El cifrado es un proceso bidireccional en el que algo se cifra para volverse ilegible y luego se descifra para usarlo nuevamente de forma normal. Puede cifrar los archivos que ha almacenado para que cualquier persona que acceda a ellos no pueda usarlos, o puede usar el cifrado de transferencia de archivos para cifrar los archivos que se mueven a través de una red, como los que carga o descarga en línea.

Las funciones hash criptográficas funcionan de manera diferente, ya que las sumas de comprobación no deben revertirse con una contraseña especial para el deshashing. El único propósito de las funciones de hash criptográficas es comparar dos datos, como al descargar archivos, almacenar contraseñas y extraer datos de una base de datos.

Es posible que una función criptográfica hash produzca la misma suma de comprobación para diferentes datos. Cuando esto sucede, se denomina colisión, que es un gran problema, ya que el punto entero de una función de cifrado criptográfico es realizar sumas de comprobación únicas para cada entrada de datos.

Las colisiones que pueden ocurrir es porque cada función criptográfica de hash produce un valor de una longitud fija independientemente de los datos de entrada. Por ejemplo, la función hash criptográfica MD5 genera 827ccb0eea8a706c4c34a16891f84e7b, 1f633b2909b9c1addf32302c7a497983 y e10adc3949ba59abbe56e057f20f883e para tres bloques de datos totalmente diferentes.

El primer checksum es de 12345. El segundo se generó a partir de más de 700 letras y números, y el tercero es de 123456.

Las tres entradas tienen diferentes longitudes, pero los resultados siempre tienen solo 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 podrían crear porque se supone que cada pequeño cambio en la entrada produce una suma de comprobación completamente diferente. Debido a que hay un límite en la cantidad de sumas de comprobación que puede producir una función de hash criptográfica, siempre existe la posibilidad de que encuentre una colisión.

Esta es la razón por la que se han creado otras funciones 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 control, menor será la probabilidad de que ocurra una colisión.