OpenResPublica TruthChain ยท About

About TruthChain

TruthChain is an open-source cryptographic document anchoring system built for government offices and institutions that need tamper-evident, publicly verifiable records without relying on any centralised database.

How it works

  1. Document received โ€” An operator submits a PDF through the secure operator portal.
  2. SHA-256 fingerprinting โ€” A unique 256-bit hash is computed from the exact bytes of the document.
  3. Hash chain entry โ€” The hash is linked to the previous record's chain hash, creating a tamper-evident sequence.
  4. GPG signing โ€” The full audit record is digitally signed with the operator's Ed25519 key.
  5. Encrypted vault storage โ€” The signed JSON record is written to a LUKS2 AES-XTS-512 encrypted drive, locked with a physical hardware key.
  6. PDF stamping โ€” The original PDF receives a footer stamp with control number, sequence, hash, chain hash, timestamp, and QR code.
  7. Public ledger sync โ€” The signed record (hash only โ€” never the document) is pushed to this public GitHub repository within 60โ€“90 seconds.

Security properties

Tamper evidence

Any modification to a published record breaks all subsequent chain hashes. Forgery is detectable by anyone.

Non-repudiation

Every record carries an Ed25519 GPG signature. The operator cannot credibly deny having issued the record.

Privacy by design

Only the hash is published. The document itself never leaves the encrypted vault, complying with RA 10173.

Offline verifiable

Anyone can clone this repository and verify records without trusting any third-party service.

Technical stack

Vault encryptionLUKS2 / AES-XTS-512 / Argon2id
Document signingEd25519 / GnuPG (30-day rotating keys)
FingerprintingSHA-256
Chain algorithmSHA-256(seq | hash | prev_chain | timestamp)
Transport securitySSH Ed25519 (persistent, 30-day)
EnginePython / Flask / Gunicorn / Alpine Linux
Public ledgerGitHub Pages (append-only by policy)
ComplianceRepublic Act 10173 (Data Privacy Act of 2012)