Integridad no es cifrado: verificar archivos con SHA-256 en Python
Integridad no es cifrado: verificar archivos con SHA-256 en Python Las palabras «seguridad», «cifrado» e «integridad» suelen mezclarse. Sin embargo, una huella SHA-256 permite detectar cambios en un archivo; no oculta
Integridad no es cifrado: verificar archivos con SHA-256 en Python
Las palabras «seguridad», «cifrado» e «integridad» suelen mezclarse. Sin embargo, una huella SHA-256 permite detectar cambios en un archivo; no oculta su contenido ni prueba por sí sola quién lo creó.
El problema y el alcance del ejemplo
La ficha de Encrypted: Cifrado de Archivos resume su función así: «Cifrado local de archivos, limpieza de metadatos EXIF, escáner OCR y privacidad.» Encrypted anuncia cifrado local y comprobación de integridad. Para estudiar una de esas funciones construimos un verificador SHA-256 por bloques, sin afirmar que sea el código usado por el producto.
Cómo reproducir la idea
Necesitas Python 3. Ejecuta el script en un directorio de pruebas: crea dos archivos distintos y observa sus resúmenes.
from hashlib import sha256
from pathlib import Path
def digest(path: Path) -> str:
h = sha256()
with path.open('rb') as handle:
for block in iter(lambda: handle.read(1024 * 1024), b''):
h.update(block)
return h.hexdigest()
archivo = Path('mensaje.txt')
archivo.write_text('Version original', encoding='utf-8')
original = digest(archivo)
archivo.write_text('Version alterada', encoding='utf-8')
modificado = digest(archivo)
print('Antes:', original)
print('Después:', modificado)
print('¿Son iguales?', original == modificado)
Qué demuestra el código
Leer por bloques evita cargar un archivo enorme en memoria. Al modificar un byte, el resumen normalmente cambia de forma significativa. Si guardamos la huella antes de una transferencia, podemos compararla con la del archivo recibido.
Pruebas recomendadas
Prueba con un archivo grande y observa que el uso de memoria se mantiene acotado. Modifica un carácter y vuelve a calcular la huella. Para una comprobación real, la huella esperada debe provenir de una fuente confiable.
Límites que conviene reconocer
SHA-256 no cifra y tampoco autentica un origen si un atacante puede sustituir tanto el archivo como su huella. Para autenticidad se requieren firmas digitales o MAC, según el caso. Para confidencialidad se necesita cifrado autenticado y gestión de claves.
Qué aprendemos
Una buena herramienta de privacidad debe explicar claramente qué amenaza resuelve cada operación. Una suma de verificación y una contraseña tienen objetivos diferentes.
Contexto y enlaces del autor
El tema se relaciona con las funciones declaradas públicamente de Encrypted: Cifrado de Archivos, una aplicación Android de AppInitDev. El código anterior es un ejemplo independiente: no se ha inspeccionado el repositorio privado ni se afirma que sea la implementación interna de la app. La referencia aparece al final para ofrecer contexto, no como requisito para completar el tutorial.
- Google Play: Encrypted: Cifrado de Archivos
- Página de la aplicación: https://encrypted.appinitdev.com/
- Sitio del desarrollador: AppInitDev
Referencia técnica
Originally published by Dev.to Security. Aggregated on AIWithGhost for educational purposes — full credit and traffic to the original publisher.