Verifica archivos con cURL y b2sum
Garantizar la integridad de los archivos descargados es crucial para la seguridad y la fiabilidad.
En este DevTip, exploraremos cómo verificar de forma segura la integridad de archivos remotos con
dos potentes herramientas de línea de comandos: cURL y b2sum. Cubriremos ejemplos prácticos, técnicas de automatización y casos de uso reales.
Por qué importa la integridad de los archivos
La verificación de integridad de archivos garantiza que los archivos no se hayan alterado ni dañado durante la transferencia. Esto es especialmente importante al descargar software, actualizaciones o datos sensibles. Verificar la integridad de los archivos ayuda a protegerte frente a manipulaciones maliciosas y daños accidentales.
Presentamos cURL y b2sum
- cURL: una herramienta versátil de línea de comandos para transferir datos mediante distintos protocolos, incluidos HTTP, HTTPS, FTP y más.
- b2sum: una utilidad de hash que implementa el algoritmo BLAKE2, conocido por sus ventajas de velocidad y seguridad frente a algoritmos de hash tradicionales como MD5 o SHA-1.
Compatibilidad de versiones
- b2sum: disponible en GNU Coreutils v8.26 y posteriores.
- cURL: todas las versiones recientes admiten las opciones utilizadas.
- Para sistemas antiguos sin b2sum, considera usar sha256sum (ampliamente disponible) o instalar una versión más reciente de Coreutils.
Descarga archivos con cURL
Para descargar un archivo de forma segura, usa el siguiente comando:
curl -fsSLo example.tar.gz https://example.com/example.tar.gz
-f: falla silenciosamente ante errores HTTP (importante para que los scripts gestionen los errores correctamente).-s: modo silencioso, sin indicador de progreso.-S: muestra los mensajes de error (importante cuando se usa con-s).-L: sigue las redirecciones (ten cuidado con las fuentes no confiables).-o: envía la salida a un archivo (especifica el nombre exacto por seguridad).
Cuando descargues archivos de fuentes no confiables, verifica siempre el hash antes de ejecutar o usar el contenido descargado.
Genera y verifica hashes de archivos con b2sum
Después de descargar, genera un hash con b2sum:
b2sum example.tar.gz
Esto produce un hash como este:
130e76babb02d4fdfa14b33dfd2bde3914df6075eaa24fe994d776b4ced30b424e52e6fc26aad620e88ea78232bdfed339669651e83a2eca3c56cc50c5c2559c example.tar.gz
Para verificar un archivo frente a un hash conocido, guarda el hash esperado en un archivo (hash.txt):
130e76babb02d4fdfa14b33dfd2bde3914df6075eaa24fe994d776b4ced30b424e52e6fc26aad620e88ea78232bdfed339669651e83a2eca3c56cc50c5c2559c example.tar.gz
Luego verifica:
b2sum -c hash.txt
Si el archivo está intacto, verás:
example.tar.gz: OK
Automatiza las comprobaciones de integridad en scripts
Automatizar las comprobaciones de integridad de archivos es sencillo. Aquí tienes un ejemplo de script de Bash robusto con una gestión de errores adecuada:
#!/bin/bash
set -euo pipefail # Fail on errors, undefined vars, and pipeline failures
URL="https://example.com/example.tar.gz"
EXPECTED_HASH="130e76babb02d4fdfa14b33dfd2bde3914df6075eaa24fe994d776b4ced30b424e52e6fc26aad620e88ea78232bdfed339669651e83a2eca3c56cc50c5c2559c"
FILE="example.tar.gz"
# Create temporary file
TMP_FILE="$(mktemp)"
trap 'rm -f "$TMP_FILE"' EXIT
# Download with proper error handling
if ! curl -fsSLo "$TMP_FILE" "$URL"; then
echo "Download failed!" >&2
exit 1
fi
# Verify hash before moving to final location
if echo "$EXPECTED_HASH $TMP_FILE" | b2sum -c -; then
mv "$TMP_FILE" "$FILE"
echo "File integrity verified."
else
echo "File integrity check failed!" >&2
exit 1
fi
Este script descarga el archivo en una ubicación temporal, verifica su integridad y solo lo mueve a la ubicación final si la verificación es correcta.
Consideraciones de seguridad
- Descarga siempre desde fuentes confiables a través de HTTPS.
- Verifica las sumas de comprobación del hash antes de usar los archivos descargados.
- Ten cuidado al seguir redirecciones (opción
-L). - Usa versiones específicas en los scripts de producción.
- Considera usar firmas GPG para obtener seguridad adicional.
Ejemplos prácticos y casos de uso
- Distribución de software: asegúrate de que los paquetes de software no hayan sido manipulados.
- Despliegues automatizados: verifica los archivos antes del despliegue en pipelines de CI/CD.
- Verificación de copias de seguridad: confirma que las copias de seguridad estén intactas y sin alteraciones.
b2sum en Transloadit
En Transloadit, nuestro Robot 🤖 /file/hash admite múltiples algoritmos de hash, incluido BLAKE2 (b2). Aunque SHA-256 es el algoritmo predeterminado, puedes especificar «b2» como parámetro de algoritmo para usar el hash BLAKE2 en tus Assembly Instructions cuando uses nuestro servicio de catalogación de medios.
Al integrar estas herramientas sencillas pero potentes en tu flujo de trabajo, puedes mejorar significativamente la seguridad y la fiabilidad de tus procesos de manejo de archivos.
