Hashed at acquisition
Every evidence item is hashed before any parser, viewer or index touches it. That hash is the item’s identity for the life of the case, and it is recomputed and verified on every access.
Most forensic suites treat chain of custody as paperwork bolted on after the fact. Bloodhound treats it as the foundation: a cryptographically chained, append-only ledger that every action in the platform writes to.
Every evidence item is hashed before any parser, viewer or index touches it. That hash is the item’s identity for the life of the case, and it is recomputed and verified on every access.
Custody entries are written once. There is no edit path, no delete path and no administrative override. A correction is a new entry that references the original, so the history stays visible.
Each entry embeds the hash of the entry before it. Altering any record in the chain changes its hash, which breaks every link that follows.
A custody entry records the actor, the action, the item, the stated reason and the verified hash of the evidence at that moment. Before it is committed, the entry is hashed together with the previous entry’s hash and signed by the node that wrote it.
The result is a sequence where position matters. Rewriting entry 42 invalidates entries 43 through 117, and a single verification pass makes that obvious to anyone who runs it, including opposing counsel’s expert.
EV-003 recorded with seizure authority, custodian and acquisition tool.
SHA-256 computed over the source image before any read for analysis.
Copy created and hash-matched to the original. A mismatch would have halted the case here.
Read-only mount by j.mercer under warrant 26-CR-1180, hash re-verified on open.
Every field below is captured by the platform as the action happens. None of it depends on an examiner remembering to fill in a form afterwards.
| Field | Captured | Why it matters in court |
|---|---|---|
| seq | Monotonic entry number | Proves no entry was removed from the middle of the record |
| timestamp | UTC, millisecond precision | Places every action on an unambiguous timeline |
| actor | Authenticated identity and role | Attributes each action to a named, accountable person |
| action | Typed event, e.g. ACCESS, EXPORT, TRANSFER | Distinguishes a read-only review from an export of material |
| item | Evidence identifier and scope | Ties the action to a specific exhibit rather than to “the device” |
| reason | Stated justification, required at capture | Documents authority and scope at the moment of access |
| sha256 | Evidence hash verified at that moment | Shows the evidence was unchanged when the action occurred |
| prev_hash | Hash of the preceding entry | Binds this entry to the full history that came before it |
| entry_hash | Hash over this entry’s contents | Detects any later alteration of the entry itself |
| signature | Node signature over the entry hash | Establishes which system wrote the record, verifiable offline |
Verification walks the chain from its anchored root to the newest entry, recomputing each hash as it goes. A modified entry produces a hard failure at a named sequence number, with everything after it marked unverifiable. There is no partial pass.
If it touches evidence, it produces an entry. No privileged action bypasses the record.
Registration, seizure metadata, acquisition tool and version, source hashing.
Working-copy creation, hash comparison results, re-verification on each access.
Every mount, open, preview and read, with actor, role and stated reason.
Parser runs, versions used, indexing, hash-set imports and matching passes.
Every extraction of material out of the case: what was taken, by whom, and to where.
Custody handoffs between examiners, teams, agencies or storage locations.
Opening, sealing, reopening, archival and disposition of the case and its items.
Report generation, signing, manifest creation and the chain state at export time.
Walk through the ledger with an engineer, using a case built from your own reference evidence.