Skip to main content

Cryptography

VeriSeal uses conservative, widely deployed primitives to make evidence independently verifiable.

Hashing (SHA-256)

SHA-256 fingerprints:

  • files (video, image, PDFs),
  • canonical JSON payloads,
  • bundle manifests,
  • ledger entries.

Hashes are represented as lowercase hex.

Canonicalization

For structured data (JSON/messages), VeriSeal applies deterministic canonicalization so independent parties can reproduce the same digest.

Merkle commitments

When multiple components must be committed (media hash, UX log hash, metadata hash), VeriSeal builds a Merkle tree:

  • leaves are component digests,
  • internal nodes are SHA-256(left || right),
  • the Merkle root is the public proof identifier.

Append-only ledger chaining

Each entry includes entry_hash, prev_hash, and created_at_utc (UTC). Any modification breaks the chain.

Signatures (optional)

  • PDF evidence can be signed (RSA-3072).
  • JSON exports can be signed for offline verification.

PDF is render-only; verification must always validate against public JSON.

OpenTimestamps (optional)

OpenTimestamps anchors a digest externally and can become VERIFIED on the Bitcoin blockchain.

Threat model (summary)

Mitigates: post-hoc modification, evidence substitution, contestable timestamps, platform conflict of interest.
Not in scope: compromised capture device, malware before capture, coercion/impersonation without identity flows.