Integrity & trust 

Overview 

When a backup finishes, T3Vault seals it with BackupIntegrityService:

  1. Hash artefacts (*.zip incl. database.zip, legacy database.sql.gz / database.sql, MANIFEST.json) with SHA-256.
  2. Write integrity.json (algorithm, createdAt, file digests).
  3. Optionally write integrity.json.hmac (HMAC-SHA256 bound to the site secret).
  4. Submit the digest of integrity.json to OpenTimestamps calendars and store the proof as integrity.json.ots.
  5. Write integrity-meta.json (stamp outcome metadata — not a trust anchor).

Trust model:

  • Changing backup files without a new seal breaks the hash check.
  • Forging a new seal requires a new OpenTimestamps proof.
  • Final time-stamp time comes from the Bitcoin blockchain, not this server.
  • A large gap between createdAt and that blockchain time is treated as suspicious (T3Vault allows up to 72 hours for calendar → chain confirmation).
  • Until the proof is fully attested, status stays pending.
  • HMAC is only checked when the site secret is available; on foreign hosts it is skipped so cross-system restore still works.

Verification states 

State Meaning
ok Hashes match and OTS proof is attested within the time window
pending Hashes OK; calendar proof not yet upgraded to Bitcoin
missing Integrity files incomplete
stamp_failed Stamping failed earlier; hashes may still be OK
tampered Hash or OTS digest mismatch / attestation skew
checking Transient UI state while a check runs