Una firma digital prueba dos cosas: qué es el archivo (por su hash) y quién lo firmó (por la clave). No prueba una tercera que casi siempre importa: cuándo. Un hash firmado es un punto sin fecha. Y sin fecha verificable, cualquiera puede firmar hoy un documento y sostener que es de hace un año —o al revés—.
El reflejo es mirar la fecha del archivo. No sirve, y por una razón simple: la controla quien tiene el archivo. La fecha de modificación en disco se cambia con una orden; no es un testigo, es una nota que se escribe el propio interesado.
El sellado de tiempo resuelve esto trayendo a un tercero que no puede fechar hacia atrás.
Cómo funciona una TSA
El estándar clásico es RFC 3161. El flujo es:
- tú calculas el hash de tu archivo (no envías el archivo, solo su huella),
- se lo mandas a una autoridad de sellado de tiempo (TSA),
- la TSA le añade la hora de una fuente fiable y firma el conjunto (tu hash + la hora) con su propia clave,
- te devuelve ese sello.
A partir de ahí, cualquiera verifica el sello con la clave pública de la TSA y confirma dos cosas: que ese hash exacto existía a esa hora, y que no se ha tocado desde entonces. El contenido del archivo nunca sale de tu lado —la TSA solo ve la huella—, lo cual importa cuando el archivo es sensible.
La alternativa sin tercero: encadenar
No siempre quieres depender de un servicio externo. El otro camino es un registro append-only verificable: cada entrada nueva incluye el hash de la anterior, formando una cadena (o un árbol de Merkle). Insertar algo con fecha pasada obligaría a recalcular todo lo que vino después, y eso se detecta. Es el mecanismo de los transparency logs y, en el fondo, el mismo con el que una cadena de bloques fecha sus transacciones sin que nadie tenga que confiar en un reloj central.
Los dos enfoques se combinan: sellas con una TSA para la prueba puntual y encadenas en un log append-only para el recorrido completo.
Qué tiene que hacer tu software
Si el sistema produce evidencia que alguien podría discutir:
- no uses la fecha del sistema como prueba —regístrala si quieres, pero no la presentes como fecha cierta—,
- sella el hash de cada evidencia contra una fuente de tiempo independiente (una TSA, o un log encadenado que tú controles pero que no puedas reescribir sin que se note),
- y guarda el sello junto a la firma y el hash: las tres piezas juntas son las que hacen que una evidencia digital se sostenga cuando la fecha, y no solo el contenido, entra en discusión.
Un hash dice qué. Una firma dice quién. El sellado de tiempo dice cuándo —y sin el cuándo, las otras dos prueban menos de lo que parece.
Xiliux