MedSeal
Open, offline, and independently checkable

Prove a scan is real, down to the pixel.

MedSeal seals a medical image with an invisible watermark, a block-level SHA-512 fingerprint, and an Ed25519 signature — then anchors the proof on Bitcoin. Change one pixel and it shows exactly where. Anyone can verify, with nothing installed.

Offline
no upload to trust
Pixel-exact
16×16 localization
Bitcoin
public anchor
The seal, end to end AUTHENTIC
  1. The scan

    1024 × 1024 px

    X-ray · CT · MRI · DICOM

  2. Fingerprint

    a3f9c1…7e20

    SHA-512, whole image + 1024 blocks

  3. Sign

    sig 4b8e…d1a0

    Ed25519, key only MedSeal holds

  4. Merkle leaf

    leaf #4821

    Appended to the public proof log

  5. Anchor on Bitcoin

    root 7c2b…f9

    Root timestamped via OpenTimestamps

Schematic of one certificate. How the anchor works →

Verify a scan you were handed.

Drop the image. If MedSeal sealed it, the certificate rides inside — one file is enough. Everything runs on this machine; nothing is uploaded.

Seal a scan so anyone downstream can trust it.

Tag it with patient and hospital, then seal, sign, and append it to the transparency log. Encrypt it for transit or forge it and watch it get caught — all in one console.

Seal a DICOM without breaking your PACS.

Provenance is written to private group 0009 only. Pixel data and every standard attribute stay byte-for-byte unchanged, so an existing DICOM signature and PACS integrity are untouched.

Timestamp anything on Bitcoin.

OpenTimestamps as a service — prove any file or hash existed at a point in time. Only a 32-byte digest ever leaves your machine; you get a portable .ots proof, verifiable with open tools and the public blockchain.

Four layers between a scan and a forgery.

Reversible watermark

Identity woven into the pixels, invisibly

Patient and hospital are embedded so the original recovers bit-for-bit. A radiologist sees no difference on the film.

SHA-512 · 16×16 blocks

Every block fingerprinted

A global hash gives an instant pass or fail; 1024 block hashes say exactly which 0.1% region changed — and where.

Ed25519

Signed with a key only MedSeal holds

Verification trusts that registered key, never the certificate's own claims. A forged certificate signs itself — and fails.

Self-verifying file

Travels as a single image

The certificate rides inside the sealed PNG. Anyone can verify it offline, with nothing to install and no account.

A proof you don’t have to trust us for.

Every seal is appended to an append-only Merkle log. Periodically the log’s single root hash is timestamped onto the Bitcoin blockchain through OpenTimestamps. One anchor covers every scan sealed before it — no per-scan fee, no blockchain of our own.

  • Each scan carries an O(log N) inclusion proof — check it belongs to the root without trusting our server.
  • The root is fixed in Bitcoin's history. We cannot backdate, reorder, or quietly drop a record.
scan#4820scan#4821scan#4822scan#4823hhroot 7c2b…₿ Bitcoinblock #…, ~UTCone timestampOne Bitcoin anchor proves every sealed scan underneath it.
GET /merkle/root · /merkle/proof/<i> · POST /merkle/anchor → downloadable .ots proof