Cryptographic Image Authenticity Verification Prove that an edited image differs from its original only in a declared region — without exposing the original.
Fully client-side — no images leave your browser.
A photojournalist takes a photo. There's a person in it whose identity must be protected. The journalist redacts the face and sends the edited image to the newsroom.
The newsroom needs to trust that nothing else in the photo was altered — but the journalist cannot share the unredacted original, because that would reveal the person's identity.
How do you prove an image is authentic when you can't show the original?
SealZero lets the journalist verify the edit cryptographically, then share a verification certificate with the newsroom. Everything runs in the browser — no server, no uploads, no third party.
1. Reporter verifies the edit (private)
The reporter opens sealzero.dev, uploads both the original and edited images (locally, in-browser), and draws a rectangle over the redacted region.
SealZero performs a pixel-level comparison:
- Outside the rectangle — confirms every pixel is unchanged
- Inside the rectangle — confirms the region was modified
Then it generates a shareable verification certificate link containing:
- The reporter's name / identity
- SHA-256 hash of the original image
- SHA-256 hash of the edited image
- Exact coordinates of the declared region
- Verification metrics (% match outside, % changed inside)
- Timestamp
2. Newsroom confirms (public)
The editorial office receives the share link + the edited image file from the reporter.
They open the link and see:
- Verification status — VERIFIED or FAILED
- Reporter identity — who performed the verification
- Verification details — region, hashes, metrics, timestamp
Then they upload the edited image they received. SealZero computes its SHA-256 hash and checks it against the certificate. If it matches — this is the exact same file that was verified. No tampering after verification.
The newsroom never sees the original image. They trust the cryptographic proof.
- Client-side only — no images are uploaded to any server, ever
- Pixel-level verification — sampled comparison with dual tolerances for JPEG robustness
- Reporter identity — author name embedded in the certificate
- Instant hash confirmation — editorial office verifies the received file in one click
- Shareable certificate link — send via email, Slack, or any messenger
- No registration — open the website and start verifying
- Proof generation — SHA-256 hash-binding and Merkle-commitment proofs for image transformations (crop, resize, rotate, redact, etc.)
- Proof verification — upload a
.jsonproof file to verify offline - Performance dashboard — proof history and metrics
- Multi-platform — works on desktop, tablet, and mobile browsers
A reporter redacts a source's face for safety. The newsroom can confirm the rest of the photo is untouched — without ever seeing the unredacted original.
Evidence images need chain-of-custody verification. SealZero proves specific redactions (e.g. blurring license plates) are the only modifications, without exposing sensitive details.
Researchers redact patient data from medical images. Peer reviewers can confirm the scientific content is unaltered.
Internal documents with redacted confidential data can be verified as otherwise authentic before publication.
- Built with Flutter — runs on web, desktop, and mobile
- Cryptography: SHA-256 hashing, Merkle-commitment proofs, pixel-region comparison
- Architecture: MVVM with Provider, GetIt DI, Go Router
- Deployment: GitHub Pages at sealzero.dev
| Layer | Method | Status |
|---|---|---|
Hash-Binding (V1) |
SHA-256 binding over image hashes + transformations + nonce | Live |
Merkle Commitment (V1) |
Pixel-block Merkle trees with inclusion proofs | Live |
| Pixel-Region Comparison | Dual-tolerance sampled comparison (15/ch outside, 3/ch inside) | Live |
| Zero-Knowledge Proofs | Groth16 via Rust/WASM — prove without revealing pixel data | In development |
No installation. No registration. No data leaves your browser.
- External verification flow (reporter → editor certificate)
- Hash-binding and Merkle-commitment proofs
- Shareable verification certificate with hash confirmation
- Web deployment at sealzero.dev
- Zero-knowledge proofs via Groth16 WASM
- Server-side verification records for immutable audit trail
- C2PA / Content Credentials interoperability
- Browser extension for inline verification
Proprietary — All Rights Reserved. Copyright (c) 2025-2026 Piotr Styła.
Any use of this software requires prior written consent from the owner. You may view the source code for informational and evaluation purposes only. See LICENSE.
- Creator: Piotr "hipcio" Styła
- Email: p.styla@gmail.com
- LinkedIn: Piotr Styła
If you find this project useful, please consider supporting the Hospice Foundation in Cracow, Poland — compassionate end-of-life care for patients and families.
Donate: https://fundacja-hospicjum.org/
No images leave your browser | Cryptographic verification | Built with Flutter