What we protect against, what we do not, and what an attacker with our disks would actually get. Written to be checked, not to reassure.
A transfer key is derived in the client and placed in the URL fragment. Browsers never send fragments to a server, so the key does not reach us even by accident.
Blocks are sealed with XChaCha20-Poly1305 before upload. We hold ciphertext, block hashes and sizes — enough to route and deduplicate, not to read.
Every block carries a SHA-256 declared in the manifest. A block that does not match is rejected at ingest, not silently stored.
| Data | Visible to us | Note |
|---|---|---|
| File contents | no | Sealed client-side; the key never leaves the sender. |
| File names | no | Part of the encrypted manifest. |
| Block sizes and count | yes | Required for routing and dedupe. Padding is available per session. |
| Sender's key ID | yes | Needed for billing and the audit log. |
| Recipient address family and ASN | yes | Kept 14 days for abuse handling, then discarded. |
| Full recipient IP | no | Truncated at ingest before anything is written. |
Send the details to security@fileexchange.site.
We acknowledge within two business days and will tell you plainly whether we consider it in scope.
Please do not run load or denial-of-service tests against production.