Claves, firmas y direcciones · Lección 1 de 5
Funciones hash en la práctica
7 min de lectura
Por qué los hashes importan más allá del encabezado del bloque
Una función hash criptográfica convierte una pieza de información digital en un resultado breve y de tamaño fijo llamado valor hash o resumen. La entrada puede ser una oración, un documento, una transacción o una colección de registros. Un hash seguro está diseñado de modo que incluso un pequeño cambio en la entrada produzca una salida que parezca no tener relación con la original. Esta propiedad es valiosa en una cadena de bloques porque los participantes necesitan comparar información sin inspeccionar repetidamente cada byte de un conjunto de datos grande. También es valiosa fuera de la cadena, cuando un auditor quiere comprobar si la evidencia ha cambiado entre su recopilación y revisión. Un hash es una herramienta de comparación similar a una huella digital, no una tarjeta de identidad ni una garantía de que la información subyacente sea verdadera.
SHA-256, miembro de la familia SHA-2 descrita en el Federal Information Processing Standard (FIPS) 180-4, Secure Hash Standard, del National Institute of Standards and Technology (NIST), produce 256 bits, que suelen mostrarse como 64 caracteres hexadecimales. El sistema hexadecimal usa los dígitos del 0 al 9 y las letras de la a a la f para representar valores binarios de forma compacta. Independientemente de que la entrada original contenga tres caracteres o tres millones, un resumen SHA-256 tiene la misma longitud. Esta longitud fija hace que los resúmenes sean identificadores y verificaciones de integridad convenientes; no significa que un resumen contenga información suficiente para reconstruir la entrada original.
Tres propiedades que conviene distinguir
Resistencia a la preimagen y cálculo unidireccional
La resistencia a la preimagen significa que, dado un valor hash, encontrar una entrada que lo produzca debería ser computacionalmente inviable si se usa correctamente un hash seguro. Por lo tanto, el hashing no es cifrado: el cifrado está diseñado para permitir la recuperación autorizada del texto plano mediante una clave, mientras que un hash normalmente no ofrece una operación de descifrado. Tampoco es, por sí solo, un método para proteger un secreto que pueda adivinarse. Por ejemplo, aplicar hash a una contraseña corta no hace que sea difícil de adivinar si un atacante puede aplicar hash a candidatos comunes. El almacenamiento de contraseñas requiere técnicas aparte, como sales y funciones de hash para contraseñas diseñadas específicamente y deliberadamente costosas. Los detalles operativos quedan fuera de este curso, pero distinguir estos conceptos evita una idea errónea frecuente.
Resistencia a la segunda preimagen y a las colisiones
La resistencia a la segunda preimagen se refiere a la dificultad de encontrar una entrada diferente que produzca el mismo resumen que una entrada especificada. La resistencia a las colisiones se refiere a encontrar dos entradas distintas cualesquiera que produzcan el mismo resumen. Como hay infinitas entradas posibles, pero solo una cantidad finita de salidas, en principio deben existir colisiones. Una función hash criptográfica bien diseñada hace que sea extremadamente difícil encontrar colisiones útiles. Una salida de 256 bits no implica una resistencia a las colisiones de 256 bits: el efecto cumpleaños establece un límite de seguridad inferior para las búsquedas genéricas de colisiones que para las búsquedas de preimágenes. Los estudiantes deben reconocer estos tres términos sin tratarlos como intercambiables ni suponer que todos los algoritmos han mantenido el mismo nivel de seguridad con el paso del tiempo.
Los bytes que se someten al hash son decisivos
Dos personas pueden aplicar hash a lo que parece ser el mismo documento y obtener resúmenes diferentes si no usan bytes idénticos. Un archivo puede tener un tipo de salto de línea diferente; un párrafo copiado puede contener otra representación Unicode del mismo carácter visible; una hoja de cálculo puede incluir metadatos ocultos. Las funciones hash no entienden que dos archivos se vean iguales. Procesan secuencias de bytes específicas. Antes de comparar resultados, identifique el formato del archivo, la codificación de caracteres, el alcance exacto de la entrada y el algoritmo de hash. Registrar estos detalles forma parte de un rastro de auditoría reproducible.
Considere un contrato en PDF. Aplicar hash al archivo PDF exacto puede ayudar a detectar cambios posteriores en ese archivo, incluidos cambios que no son evidentes en la página. Por sí solo, no demuestra que el contrato se haya firmado legalmente, que quien lo firmó haya entendido las condiciones ni que el archivo fuera exacto cuando se recibió por primera vez. Una organización puede registrar un resumen junto con la fuente, la hora de recopilación, el responsable y el historial de gestión. El resumen respalda una afirmación sobre la continuidad del archivo; esos registros complementarios respaldan la procedencia. Ninguno debe confundirse con una certificación independiente del contenido.
Usos comunes en sistemas de activos digitales
Los identificadores de transacciones suelen basarse en hashes de una representación de transacción definida por el protocolo. Un identificador permite que los nodos y analistas se refieran a un objeto de datos específico; su cálculo preciso depende de la red. En Bitcoin, el identificador de transacción convencional (txid) se calcula a partir de la serialización de la transacción sin testigos mediante dos aplicaciones de SHA-256, mientras que un identificador de transacción con testigos (wtxid) incluye la serialización con testigos. Esta distinción importa al comparar resultados de software. Otras redes pueden usar otro algoritmo o tratar una firma como identificador de búsqueda de la transacción. Nunca suponga que todas las cadenas etiquetadas como “hash de transacción” se calcularon de la misma manera.
Los hashes también permiten crear compromisos compactos de colecciones de registros. Un árbol de Merkle combina hashes por capas hasta obtener un resumen, llamado raíz de Merkle, que representa las hojas incluidas según una construcción especificada. Entonces, una prueba puede demostrar que un elemento determinado formaba parte de la colección comprometida sin transmitir todos los demás elementos. Esto demuestra la inclusión con respecto a una raíz conocida; no establece el significado del elemento en el mundo real. El módulo anterior introdujo la función de los hashes en el enlace de bloques. Aquí, la lección aplicable a otros contextos es que los compromisos basados en hashes son afirmaciones precisas y limitadas sobre las relaciones entre los datos.
Los algoritmos de hash no son intercambiables
Los nombres que suenan parecidos pueden ocultar diferencias técnicas. NIST FIPS 202, SHA-3 Standard: Permutation-Based Hash and Extendable-Output Functions, define SHA3-256, entre otras funciones. La construcción Keccak-256, muy utilizada por Ethereum, está relacionada con la familia Keccak, pero no debe tratarse a la ligera como idéntica byte por byte a SHA3-256 estandarizado; sus convenciones de relleno son diferentes. Del mismo modo, SHA-256 y doble SHA-256 son cálculos distintos. Un analista que verifique un valor debe usar el algoritmo y la codificación exacta especificados por el protocolo pertinente, en lugar de elegir una función hash conocida de un menú de software.
| Función | Pregunta habitual | Limitación importante |
|---|---|---|
| Resumen de archivo | ¿Han cambiado estos bytes exactos? | No establece la veracidad de los hechos |
| Identificador de transacción | ¿A qué objeto del protocolo se hace referencia? | Su construcción es específica de cada red |
| Raíz de Merkle | ¿Está un elemento en este conjunto comprometido? | Requiere una raíz de referencia confiable |
| Hash de contraseña | ¿Coincide una contraseña candidata? | Requiere un diseño específico para el almacenamiento de contraseñas |
Procedimiento práctico de comparación
- Identifique exactamente qué objeto se compara: un archivo completo, su contenido, una transacción serializada o una dirección mostrada.
- Registre el algoritmo y la representación utilizados, incluidos la codificación, la red y los campos incluidos o excluidos.
- Calcule u obtenga el resumen de forma independiente y compare el valor completo, no un prefijo abreviado.
- Si el resultado es diferente, investigue las diferencias a nivel de bytes o de representación antes de sacar conclusiones sobre fraude o alteración.
En ocasiones, el software muestra solo los primeros y los últimos caracteres de un resumen largo. Estas abreviaturas pueden ayudar a una persona a localizar un registro, pero no son adecuadas como prueba de una coincidencia exacta. Una suma de verificación usada para detectar errores de escritura puede ser mucho más corta y no es lo mismo que un resumen criptográfico del contenido. Para una comparación formal, conserve el resumen completo y los detalles contextuales de manera que otra persona pueda repetirla. Las afirmaciones más sólidas son acotadas: “estos bytes exactos coincidieron con este algoritmo especificado”, en lugar de “este documento es auténtico en todos los sentidos”.
Enfoque del examen: Explique el tamaño de salida fijo, la propiedad unidireccional, la diferencia entre resistencia a las colisiones y a la preimagen, y por qué el hashing detecta cambios en los bytes, pero no puede demostrar la exactitud ni la autenticidad legal de un registro. Sepa distinguir SHA-256, SHA3-256 y Keccak-256 por sus nombres y especificaciones, y reconozca por qué importa la serialización exacta de la entrada.
Preguntas de práctica
Comprueba lo que has aprendido. Estas preguntas no cuentan para el examen.
Inicia sesión para guardar tu progreso y continuar donde lo dejaste. Es gratis. Iniciar sesión