Qué es un hash y para qué sirve
Un hash es una huella de tamaño fijo que se calcula a partir del contenido de un archivo. Si cambia una sola letra, la huella cambia entera, y así puedes probar que una copia es idéntica al original.
Antes de entregar un disco a un abogado, un técnico calcula su huella. Después, cualquiera puede repetir el cálculo y comprobar que nada se tocó.
Al final de esta lección
Nota
Puedo probar que un archivo no ha cambiado y leer sus metadatos.
Palabras clave
| Palabra | Qué significa | Ejemplo |
|---|---|---|
| Hash | una huella de tamaño fijo calculada con el contenido | sha256sum |
| Integridad | que un archivo sigue igual que al principio | |
| Metadatos | datos sobre un archivo: dueño, fechas, tamaño | |
| Marca de tiempo | la fecha y la hora de un suceso | |
| Hora Unix | los segundos que pasaron desde el 1 de enero de 1970 |
Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.
Una letra distinta cambia todo el hash
Una función hash lee todo el archivo y da un número largo, escrito en hexadecimal. Con el mismo contenido siempre da la misma huella. Con un contenido distinto da otra, aunque la diferencia sea mínima.
Además, desde la huella no se puede recuperar el archivo. Solo sirve para comparar.
La huella del texto hola
printf 'hola' | sha256sumSe muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
El mismo texto con un salto de línea
printf 'hola\n' | sha256sumSe muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
El texto con la primera letra en mayúscula
printf 'Hola' | sha256sumSe muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
Ejemplo: tres textos casi iguales
| Texto | Primeros caracteres de la huella |
|---|---|
| hola | b221d9dbb083 |
| hola y un salto de línea | 133ee9892937 |
| Hola | e633f4fc79ba |
Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.
La misma huella calculada con Python
import hashlib
# Cambia el texto por "Hola" y mira cuántos caracteres cambian.
texto = "hola"
huella = hashlib.sha256(texto.encode()).hexdigest()
print(huella)
print("Longitud:", len(huella))
Ejemplo: tamaño de la huella según el algoritmo
| Algoritmo | Cifras hexadecimales | Se usa en un análisis |
|---|---|---|
| MD5 | 32 | No: se pueden fabricar dos archivos con la misma huella |
| SHA-1 | 40 | No: tiene el mismo problema |
| SHA-256 | 64 | Sí: es la opción habitual |
Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.
La huella de un archivo del caso
sha256sum case/etc/passwdSe muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
Calcula la huella antes y después de copiar
El método tiene tres pasos. Calcula la huella del original y apúntala en la hoja de custodia. Haz la copia. Calcula la huella de la copia y compara.
Si coinciden, la copia es exacta. Si no, algo falló y repites la copia. La orden anterior imprime 64 cifras, dos espacios y el nombre del archivo.
Los metadatos cuentan quién y cuándo
Los metadatos son datos sobre el archivo, no dentro de él. Los más útiles son el dueño, los permisos, el tamaño y tres fechas.
Cada fecha responde a una pregunta distinta. Aprende cuál es cuál antes de citar una.
Ejemplo: las tres fechas de un archivo
| Fecha | Qué marca | Cambia cuando |
|---|---|---|
| mtime | La última modificación del contenido | Alguien edita o guarda el archivo |
| atime | El último acceso | Alguien lo lee, si el sistema lo apunta |
| ctime | El último cambio del propio archivo | Cambian sus permisos, su dueño o su nombre |
Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.
El instante cero de la hora Unix
date -u -d @0 '+%Y-%m-%d %H:%M:%S'Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
Un número de segundos convertido en fecha
date -u -d @1760400000 '+%Y-%m-%d %H:%M:%S'Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
Un error frecuente
Advertencia
Mucha gente cree que la fecha de un archivo prueba cuándo se hizo. Una orden como touch cambia la fecha de modificación en un segundo. Trata una fecha como una pista. Confírmala con un registro o con otro archivo.