Descargar y verificar hashes de archivos: guía del desarrollador
La verificación de la integridad de los archivos es esencial para asegurar que los archivos
descargados no se hayan corrompido ni manipulado durante la transferencia. En esta guía mostramos un
proceso de dos pasos: primero, usa cURL para descargar tanto el archivo como su archivo de suma de
verificación correspondiente y luego verifica la integridad del archivo con utilidades del sistema
como sha256sum.
Entender los hashes de archivos
El hash de un archivo es una cadena única de tamaño fijo que funciona como huella digital del contenido del archivo. Entre los algoritmos de hash más comunes se encuentran:
- SHA-256 (recomendado para uso general)
- SHA-512 (para mayor seguridad)
- SHA-1 (heredado: evítalo en aplicaciones críticas para la seguridad)
- MD5 (heredado: evítalo para una verificación segura)
Los hashes de archivos son fundamentales para verificar descargas de software, detectar modificaciones no autorizadas de archivos, garantizar la integridad de los datos e implementar mecanismos de caché.
Descargar archivos y sus hashes
La mayoría de las distribuciones de software ofrecen un archivo de suma de verificación aparte junto con la descarga. Al descargar ambos archivos, puedes verificar que el archivo que recibiste coincide con el hash esperado. Por ejemplo:
# Download both the file and its sha-256 checksum
curl -fsSLO https://example.com/file.tar.gz
curl -fsSLO https://example.com/file.tar.gz.sha256
Las opciones -fsSLO hacen que cURL falle de forma silenciosa ante errores HTTP, funcione en modo
silencioso mostrando los errores, siga las redirecciones y guarde el archivo con el mismo nombre que
en la URL.
Ejemplo real: verificar una versión de cURL
Considera el ejemplo de verificar una versión de cURL. Este ejemplo descarga la versión y su suma de
verificación, y luego verifica la integridad con sha256sum:
# Download cURL release and its checksum
curl -fsSLO https://curl.se/download/curl-8.5.0.tar.gz
curl -fsSLO https://curl.se/download/curl-8.5.0.tar.gz.sha256
# Verify the checksum
sha256sum -c curl-8.5.0.tar.gz.sha256
Este método se ha verificado con cURL 8.5.0 y utilidades estándar de Linux.
Automatizar la verificación con bash
Integra la verificación de archivos en tu flujo de trabajo con un script de bash que descarga un archivo y su suma de verificación, y luego verifica su integridad:
#!/bin/bash
set -euo pipefail
FILE_URL="https://example.com/file.tar.gz"
FILE_NAME="$(basename "$FILE_URL")"
# Download file and checksum with retry mechanism
curl -fsSL --retry 3 -o "$FILE_NAME" "$FILE_URL"
curl -fsSL --retry 3 -o "$FILE_NAME.sha256" "$FILE_URL.sha256"
# Verify file integrity
if sha256sum -c "$FILE_NAME.sha256"; then
echo "✓ File verification successful"
else
echo "✗ File verification failed" >&2
exit 1
fi
Consideraciones de seguridad
- Usa HTTPS: descarga siempre los archivos y las sumas de verificación por HTTPS para protegerte contra manipulaciones.
- Confía en las fuentes: asegúrate de que tanto el archivo como su suma de verificación provengan de fuentes de buena reputación.
- Selección del algoritmo de hash: prefiere algoritmos seguros como SHA-256 o SHA-512; evita MD5 y SHA-1.
- Verifica la autenticidad: cuando esté disponible, verifica los archivos de suma de verificación con firmas GPG para confirmar su autenticidad.
Integración con GitHub Actions
Automatiza la verificación de archivos dentro de tu pipeline de CI/CD con GitHub Actions:
name: Verify Downloaded Files
on: [push, pull_request]
jobs:
verify:
runs-on: ubuntu-latest
steps:
- name: Download File and Checksum
run: |
curl -OL "$DOWNLOAD_URL"
curl -OL "$DOWNLOAD_URL.sha256"
env:
DOWNLOAD_URL: https://example.com/file.tar.gz
- name: Verify Checksum
run: sha256sum -c *.sha256
Este ejemplo descarga el archivo y su suma de verificación, y luego verifica la integridad con sha256sum.
Resolución de problemas
- Problemas de discrepancia de hash:
- Verifica que ambos archivos se hayan descargado por completo (comprueba los tamaños de archivo).
- Asegúrate de que el archivo de suma de verificación tenga el formato correcto, sin espacios adicionales ni finales de línea incorrectos.
- Problemas de descarga:
- Confirma que la URL sea accesible y que la conectividad de red sea estable.
- Comprueba que haya suficiente espacio en disco.
- Mensajes de error comunes:
sha256sum: no properly formatted checksum lines found: verifica el formato del archivo de suma de verificación.curl: (22) HTTP error: verifica la URL y los permisos necesarios.
Buenas prácticas
- Descarga siempre los archivos y las sumas de verificación por HTTPS.
- Usa un algoritmo de hash seguro como SHA-256 para la verificación.
- Implementa la verificación automatizada en scripts o pipelines de CI/CD.
- Monitorea y actualiza tus scripts de verificación para adaptarlos a cambios en los estándares de hash o a herramientas en desuso.
Conclusión
Verificar la integridad de los archivos es esencial para una distribución de software segura y para
proteger tu flujo de trabajo de desarrollo. Al usar cURL para descargar archivos y utilidades del
sistema como sha256sum para la verificación, puedes asegurarte de que tus datos no hayan sido
manipulados. Este enfoque se puede integrar sin problemas tanto en procesos manuales como
automatizados.
Si necesitas soluciones robustas para gestionar la subida de archivos y su procesamiento, Transloadit ofrece capacidades avanzadas para garantizar la integridad y la seguridad de los datos en todo tu flujo de trabajo.
