Funciones de Hash y su Importancia en Criptografía
Clase 12 de 25 • Curso de Fundamentos de Criptografía
Resumen
¿Qué es realmente un hash en criptografía?
Cuando pensamos en un hash, a menudo nos quedamos con la idea errónea de que simplemente se trata de números aleatorios. Sin embargo, la realidad es que los hashes poseen una definición mucho más técnica y esencial para comprender conceptos fundamentales en criptografía. En pocas palabras, un hash es una función que toma datos de entrada (un texto, un archivo, etc.) y lo transforma en una cadena de datos de tamaño fijo. Esta transformación es irreversible, lo que significa que a partir del hash no se puede reconstruir el contenido original.
¿Cómo funcionan las funciones de hashing?
- Compresión irreversible: Un hash “comprime” los datos originales a un tamaño específico, pero, a diferencia de otras formas de compresión, esta acción no puede revertirse. Esto es lo que llamamos una "función de una sola vía".
- Probabilidad de colisión: Existe una pequeña probabilidad de que dos archivos diferentes resulten en el mismo hash. Esto se conoce como colisiones.
- Dominio y rango: En matemática, un dominio es el conjunto de todos los posibles valores de entrada, mientras que el rango es el conjunto de todos los posibles valores de salida. En funciones de hashing, el rango es mucho más pequeño que el dominio, lo que hace que el proceso sea irreversible.
¿Por qué son importantes los hashes en criptografía?
Los hashes son fundamentales para asegurar la integridad de los archivos. Esto significa que puedes verificar que un archivo no ha sido alterado tras ser transmitido o almacenado. Esto es posible gracias a dos propiedades críticas de las funciones de hash:
- Resistencia a colisiones: Minimiza la posibilidad de que dos entradas diferentes produzcan el mismo hash.
- Resistencia a pre-imágenes: Una vez que tienes el hash, es extremadamente difícil determinar cuál fue el archivo original.
Imaginemos un escenario: Alice distribuye una aplicación y Bob quiere asegurarse de que el archivo que descarga es el mismo que proporcionó Alice, sin alteraciones maliciosas de terceros. Bob puede usar el mismo algoritmo de hash que Alice utilizó para comprobar si el archivo que descargó tiene el mismo hash que el original.
¿Existen variantes de las funciones de hash?
Sí, además de las funciones de hash comunes, existen variantes conocidas como códigos de mensaje de autorización (MAC). Estas variantes añaden una capa extra de seguridad:
- HMAC (Hash-based Message Authentication Code): Introduce una llave secreta en el proceso de hashing, garantizando que el mensaje provenga de una fuente confiable. Esto significa que incluso si dos archivos generaran el mismo hash, la ausencia de la clave secreta impediría que un atacante valide su autenticidad.
Por ejemplo, si Alice quiere asegurarse de que solo Bob pueda verificar la integridad de su archivo, Alice puede combinar el archivo con una clave secreta antes de calcular el hash. De esta manera, solo alguien con la clave puede verificar adecuadamente la integridad del archivo.
¡Ahora te reto a que compartas en los comentarios otras funciones de hash que conozcas o tu experiencia usando HMACs u otros tipos de hashes!