Evidence Generation Tool
"Record capture events and data provenance in a cryptographically verifiable manner."
Verify, Don't Trust.
— Mathematical verification, not trust-based assumptions
Utilities / Business — NOT in Photo & Video category. VeriCapture is a specialized professional tool, not a general consumer camera app.
Please read before using VeriCapture
The truth or legitimacy of captured content requires separate verification and investigation.
VeriCapture evidence should be used as one piece of supporting information in your judgment process.
CPP v1.0 compliant evidence generation capabilities
Generate CPP-compliant evidence simultaneously with capture. SHA-256 hash, ES256 digital signature, RFC 3161 timestamp.
Verify evidence integrity via QR scan, JSON import, or file selection. Detects tampering through hash and signature validation.
Records biometric authentication attempt at capture time. NOT identity verification — only records that authentication was attempted.
Complete evidence package for legal/audit submission: Image + Proof JSON + Verification Summary PDF with disclaimers.
RFC 3161 TSA timestamps and Merkle tree inclusion proofs. Third-party time authority for legal-grade timestamp evidence.
Evidence data stored on-device only. External transmission limited to hash values only. No images or personal data transmitted.
The first general-consumer iOS camera application combining these cryptographic evidence capabilities in a single, unified tool.
First general-consumer iOS application to provide direct RFC 3161 Time Stamp Authority integration at the capture moment — not batch-processed later, but immediately at capture time.
Third-party trusted timestamp authority proves exact capture time
First consumer camera application to record biometric authentication attempt at capture time — cryptographically bound to the evidence, recording that OS-level authentication was attempted.
Records authentication attempt — NOT identity verification
First consumer application combining SHA-256 + ES256 digital signatures + RFC 3161 timestamps + Merkle tree integrity logging with biometric attempt recording — all in a single capture workflow.
Complete evidence chain from capture to verification
Explicitly designed as an evidence generation tool — the only consumer camera application that structurally refuses to claim truth verification, authenticity, or anti-fake capabilities.
Records facts, not judgments — verification requires separate investigation
"The first general-consumer iOS camera application combining cryptographic evidence generation (SHA-256, digital signatures, RFC 3161 third-party timestamps, Merkle tree integrity logging) with capture-time OS biometric authentication attempt recording (Attested Capture Mode) and explicit design as an evidence generation tool that does NOT claim to verify truth, authenticity, or identity."
— VeriCapture Technical Positioning, January 2026
Detailed competitive analysis and claim defensibility assessment
Professional evidence generation for specific industries
Legal Submission
Evidence documentation for litigation and disputes
Audit Trail
Business process documentation and compliance records
Field Documentation
Construction sites, inspections, on-site work records
Journalism & Investigation
Interview records, research documentation
Real Estate & Construction
Property condition records, construction progress
Incident Documentation
Accident scenes, trouble situations, evidence preservation
Social Media Sharing
Evidence generation overhead unnecessary for casual sharing
Everyday Photography
Designed as specialized professional tool, not casual camera
Photo Sharing / Distribution
Privacy-sensitive data may be included in evidence
Art & Creative Work
No creative workflow features included
VeriCapture is a professional evidence tool, not a general consumer camera app. Use your device's standard camera for everyday photography.
CPP v1.0 compliant cryptographic architecture
evidence_pack_{proofId}/
├── image.jpg # Original captured image
├── proof.json # Forensic Proof (complete evidence trail)
├── verification_summary.pdf # Verification summary (with disclaimers)
└── README.txt # Evidence Pack explanation
# proof.json contains:
{
"proofId": "...",
"captureTime": "2026-01-16T18:30:45.123+09:00",
"imageHash": "SHA-256 Base64",
"eventHash": "SHA-256 Base64",
"signature": "ES256 Base64",
"publicKey": "PEM format",
"location": { ... }, # Optional
"device": { ... },
"humanAttestation": { ... }, # Optional (Attested Capture Mode)
"timestampResponse": { ... }, # RFC 3161 TSA response
"merkleProof": { ... } # Merkle inclusion proof
}
VeriCapture implements a comprehensive verification model that detects tampering at multiple levels.
Verifies the image file has not been modified since capture.
Image Data → SHA-256 → Computed Hash
proof.assetHash → COMPARE → PASS / FAIL
Detects: Image modification, cropping, filters, compression changes
Verifies the event metadata (timestamp, device info, settings) has not been altered.
rawEvent (Base64) → Decode → SHA-256 → Computed Hash
proof.eventHash → COMPARE
proof.signature → ES256 Verify → Valid Signature?
Detects: Metadata tampering, timestamp falsification, context changes
Verifies the proof existed at the claimed time via third-party Time Stamp Authority.
proof.eventHash → Merkle Proof → Recomputed Root
proof.merkleRoot → COMPARE
proof.tsaResponse → RFC 3161 Verify → Valid Timestamp?
Detects: Backdated captures, proof fabrication, timestamp manipulation
Proof verification via QR, file, or JSON input — with complete chain integrity monitoring
VeriCheck (Left)
Validates proofs via QR scan, file import, or JSON input. Checks EventHash, ES256 signature, image hash, RFC 3161 timestamp, and Merkle proof.
Chain Integrity (Right)
Dashboard shows total events, active/invalidated status, anchor progress, and real-time chain verification with tamper detection.
Every capture event is cryptographically linked to the previous one, creating an unbreakable chain that detects any insertion, deletion, or modification.
Genesis
"GENESIS"
Event₁
prevHash: GENESIS
eventHash: hash₁
Event₂
prevHash: hash₁
eventHash: hash₂
Event₃
prevHash: hash₂
eventHash: hash₃
Verification Rule: For each event[n], verify that event[n].prevHash == event[n-1].eventHash
Each event's content is re-hashed using SHA-256 and compared with the stored eventHash to detect any modification.
Verifies that each event's prevHash correctly references the previous event's eventHash, detecting insertions or deletions.
Checks that all tombstone records correctly reference their target events, detecting orphaned or invalid invalidations.
| Error Type | Detection Method | Implication |
|---|---|---|
PREV_HASH_MISMATCH |
Compare prevHash with previous eventHash | Chain break — possible insertion/deletion |
EVENT_HASH_MISMATCH |
Recompute hash from canonical JSON | Event content modified after creation |
SIGNATURE_INVALID |
ES256 signature verification | Forged event or corrupted signature |
TOMBSTONE_TARGET_MISMATCH |
Compare tombstone target with actual event | Tombstone points to different event version |
ORPHANED_TOMBSTONE |
Look up tombstone target event ID | Target event was illegally deleted |
"Delete ≠ Never happened. Delete = Record that deletion occurred."
VeriCapture's tombstone system ensures even invalidated events leave an immutable audit trail.
A Tombstone is a cryptographically signed record that marks an event as invalidated while preserving the complete audit trail. It is itself a blockchain-linked event.
USER_PRIVACY_REQUEST
USER_ACCIDENTAL_CAPTURE
USER_CONTENT_INAPPROPRIATE
LEGAL_COURT_ORDER
LEGAL_GDPR_ERASURE
SYSTEM_INTEGRITY_COMPROMISED
Deletes the image file while preserving the cryptographic proof. The event remains verifiable; only the visual content is removed.
Creates a Tombstone record marking the event as invalidated. Original event remains read-only; the chain records the invalidation.
Important: Complete deletion of events is intentionally forbidden. This ensures the audit trail remains tamper-evident even under pressure to "make evidence disappear."
Understanding the "I signed myself" constraint
CPP uses a self-signing model, which has inherent limitations:
Organizations using VeriCapture should establish separate policies for: key issuance procedures, device-user binding records, key revocation processes, and audit trail retention.
Why we don't use "Verified"
We deliberately use "Attested" instead of "Verified" because:
Specifications and documentation
Content / Creative AI Profile — the underlying framework VeriCapture implements.
View SpecificationVerifiable AI Protocol — the parent framework defining verifiable AI decision provenance.
View FrameworkSpecification source, JSON schemas, example payloads, and test vectors.
View RepositoryFor inquiries about VeriCapture, CPP specification, or enterprise licensing