The local evidence vault
Where raw responses are kept, how they are encrypted on your device, and what "verified" means when you check them.
#Plain languageIn plain terms
A fingerprint tells you a response has not changed. To actually re-read a response you need the response itself. Where the data licence allows it, Forensia hands the raw responses to your browser, which stores them encrypted on your device. Nothing is kept on a server.
Later you can ask the vault to check itself. It decrypts each saved response and confirms it still matches its fingerprint. Only responses that pass can be exported.
#How it worksHow it works
- The server compresses each response and sends it with the result.
- The browser checks each one against its fingerprint before saving it.
- It encrypts each response with a key that never leaves the browser.
- On a check, it decrypts, decompresses and re-fingerprints every saved response.
- Export packages contain only responses that verified.
#Technical detailThe exact rules
Storage is the browser's IndexedDB. The key is AES-GCM with a 256-bit length, generated in the browser and marked non-extractable, which means script cannot read the key material back out. Each response is encrypted with a fresh random 12-byte nonce. The response's two fingerprints are bound into the encryption as additional authenticated data, so a ciphertext cannot be swapped onto another record.
| Limit | Value |
|---|---|
| Retention | 30 days from first save |
| Responses per snapshot | 512 |
| Compressed size per response | 1,000,000 bytes |
| Compressed size per snapshot | 2,000,000 bytes |
| Original size per snapshot | 64 MiB |
| Original size per response | 8 MiB |
What verified means
A response is marked verified only when all of these hold:
- The snapshot fingerprint recomputes to the stored value.
- The record links to exactly one saved response with the same fingerprint.
- Decryption succeeds, which also authenticates the ciphertext.
- The compressed size and compressed fingerprint match.
- Decompression produces exactly the recorded number of bytes.
- The SHA-256 of the decompressed bytes equals the record's fingerprint.
| State | Meaning |
|---|---|
| Verified | All checks above passed. |
| Reference only | A pointer to a published source. No response was captured. |
| No response | The request got no answer. |
| Not retained | The fingerprint exists but the response was not saved. |
| Missing | A link exists but the saved response is gone. |
| Expired | Past the 30-day retention. |
| Failed | A check did not pass. Export is blocked. |
| Key unavailable | The decryption key cannot be read. |
| Check limit | Too many or too large to check in one pass. |
Export is blocked when the vault has expired, when any response fails, when no response verified, or when a re-check of the interpretation disagrees with the saved bytes.
#LimitsWhat it does not tell you
- On the public beta, raw responses are not sent to the browser at all, because public data sources do not license onward distribution. Fingerprints are still recorded.
- The vault is tied to one browser on one device. Clearing site data deletes it, including the key.
- There is no passphrase and no key backup. A lost key cannot be recovered.
- Saving again does not extend the 30 days.
- Verified means the bytes match what was received. It does not mean the provider's content is true.