AnuncioUna función hash criptográfica, o función hash criptológica, es una función hash que satisface ciertas propiedades que la hacen adecuada para aplicaciones criptográficas. Una función hash genera eficientemente un valor de salida de longitud fija a partir de un valor de entrada, como un mensaje o un archivo: el valor hash. Para el uso criptográfico, se requieren propiedades adicionales: una función hash criptográfica es una función unidireccional, ofrece resistencia a las colisiones y genera un valor hash pseudoaleatorio. Las funciones hash criptográficas se utilizan para comprobar la integridad de archivos o mensajes. Para hacer esto, la función se aplica al archivo que se va a verificar y se compara con un valor hash conocido. Si el nuevo valor hash difiere de este, el archivo ha sido modificado. Para evitar que un atacante altere tanto el archivo como el valor hash, se puede utilizar un método criptográfico basado en claves, como una firma digital o un código de autenticación de mensajes. Las funciones hash criptográficas también se utilizan para almacenar contraseñas de forma segura. Cuando un sistema verifica una contraseña ingresada, compara su valor hash con un valor hash almacenado en una base de datos. Si ambos valores coinciden, la contraseña es correcta. De esta forma se puede evitar almacenar la contraseña en texto plano. Un atacante que tenga acceso de lectura a la base de datos no obtendrá la contraseña. Además, las funciones hash criptográficas se pueden utilizar como generadores de números pseudoaleatorios y para construir cifrados en bloque. Existen muchas funciones hash criptográficas. Algunos de ellos, como el MD5 o el SHA-1, ya no se consideran seguros porque no ofrecen una fuerte resistencia a las colisiones. Entre las funciones utilizadas a menudo en la práctica y que todavía se consideran seguras hoy en día se encuentran las familias de algoritmos SHA-2 y SHA-3. Uso de SHA-256 con OpenSSL (Linux/macOS): echo -n «¡Hola, mundo!» | openssl sha256echo -n «¡Hola mundo!» | openssl sha256Este comando calculará el valor hash SHA-256 de la cadena «¡Hola, mundo!». La opción -n garantiza que no se incluya un carácter de nueva línea en la entrada. Usando SHA-256 con PowerShell (Windows): echo -n «¡Hola, mundo!» | Get-FileHash -Algoritmo SHA256echo -n «¡Hola mundo!» | Get-FileHash -Algorithm SHA256En PowerShell, puede usar el cmdlet Get-FileHash para calcular el valor hash. Este comando calcula el valor hash SHA-256 de la cadena «¡Hola, mundo!». Usando MD5 con OpenSSL (Linux/macOS): echo -n «Hola, mundo!» | openssl md5echo -n «¡Hola mundo!» | openssl md5 De manera similar, puede usar OpenSSL para calcular el valor hash MD5: Usando MD5 con PowerShell (Windows): echo -n «¡Hola, mundo!» | Get-FileHash -Algoritmo MD5echo -n «¡Hola mundo!» | Get-FileHash -Algoritmo MD5Estos comandos demuestran cómo calcular valores hash criptográficos desde la línea de comandos utilizando algoritmos hash populares como SHA-256 y MD5. Recuerde reemplazar «¡Hola, mundo!» con los datos de entrada que desea hash. Las funciones hash se pueden dividir en funciones hash sin llave y dependientes de clave. Una función hash sin clave recibe solo el mensaje como valor de entrada, mientras que una función hash dependiente de clave recibe una clave secreta como segundo valor de entrada junto al mensaje. Según su uso previsto, una función hash sin clave también se denomina Código de detección de modificación y una función hash dependiente de una clave se denomina Código de autenticación de mensajes (MAC). Los MAC incluyen construcciones como HMAC, CBC-MAC o UMAC. Las funciones hash sin llave se dividen a su vez en funciones hash unidireccionales (OWHF) y funciones hash resistentes a colisiones (CRHF). Una función hash unidireccional satisface la propiedad unidireccional y la resistencia a colisiones débil, mientras que una función hash resistente a colisiones satisface además la resistencia a colisiones fuerte. El valor hash también se denomina huella digital porque identifica un mensaje o archivo de forma casi inequívoca. Otro término para el valor hash es resumen de mensaje.