The encryption pipeline
At a high level, for every file version:- A per-file AES key is derived from a hybrid key encapsulation step.
- The file is encrypted with AES-256-GCM in streaming mode, in 64 KB chunks.
- Each chunk is authenticated as it is written; tags are verified as it is read.
- The encrypted file and its per-file key envelope are stored.
- The AES key itself is never persisted. It is recomputed on demand from the envelope and the owning key chain.
- Once written, the stored object is additionally protected by the storage infrastructure’s independent encryption-at-rest layer.
Key hierarchy
Master keys wrap the user key chains; the user key chains wrap the per-file envelopes; the envelopes wrap the per-file AES keys. Each level is distinct and must not be described interchangeably.
The
hybrid-e2ee-v1 string you may see in internal metadata is a key-derivation label that is part of the on-disk format. It is a protocol identifier, not a product claim. Renaming it would break decryption of existing objects.
Hybrid post-quantum key encapsulation
Per-file keys are wrapped using two mechanisms together:- X25519, a widely deployed elliptic-curve Diffie-Hellman function.
- ML-KEM-768, a post-quantum key encapsulation mechanism.
The recovery phrase
Users can hold a BIP39 recovery phrase that wraps their private key in the browser. The mnemonic never reaches the backend; the platform stores only the wrapped key material, a derivation salt, and a fingerprint of the phrase. Its function is specific:- The recovery phrase restores your key chain through the platform’s recovery flow, verified with a proof derived from the phrase.
- It is distinct from the master keys, from the per-file keys, and from the decryption key it protects. It is not a second copy of your files.
- An ordinary password reset by email does not disturb the key chain, so file access continues afterwards.
- The phrase must still be treated as a high-value secret by the user.
Encryption in transit
Traffic between clients and Everabyte is served over TLS. Do not terminate TLS with an untrusted certificate or downgrade clients; the API expects HTTPS. Requests between the platform’s internal services are authenticated with service credentials and request signing.Integrity verification
The platform runs a scheduled integrity process that re-reads stored objects, decrypts them inside the platform’s controlled services, and compares the result against a plaintext SHA-256 recorded at write time. Every AES-GCM authentication tag is verified as the object is read. This detects silent corruption introduced below the application layer. Verification runs in budgeted passes rather than covering every object every day. On a mismatch, the platform alerts the account owner, records the event in the audit trail, and exposes status through compliance-gated views; corrupt objects are reported, not silently removed. Restore testing follows the same idea: a sample from a restore point is decrypted and verified server-side, and backup jobs can additionally schedule verification tests that the desktop agent performs locally, restoring a sampled set into an isolated directory. Combined with version history, this is how the platform demonstrates that backups are usable, rather than merely present.Integrity verification and restore testing are platform maintenance processes. They decrypt content within controlled internal workflows to perform their verification function; they are not user-triggered operations and they are not operator access to file content. Their results are reported to the account owner.
What the model protects against — and what it does not
CDN delivery
On enterprise plans, file delivery can optionally go through a CDN. When enabled, the platform streams decrypted bytes to the edge over a token-protected origin path, and the edge serves the object through signed URLs. Signed-URL validity is configurable per company — 5 minutes to 30 days, 6 hours by default — and edge caches hold the object for up to 30 days under versioned cache keys. Hard deletes and access revocations purge the edge cache. That is a real trade-off: it improves latency, and it means decrypted content exists at the edge for as long as it is cached. If your threat model excludes that, use the origin stream route and keep CDN delivery disabled for those buckets.Design guidance for integrations
- Treat
fileIdandversionIdas the authoritative identifiers. Filenames are display metadata. - Do not assume the platform validates a client-supplied checksum. If you need integrity assurance on your side, hash the plaintext yourself and compare after download.
- Do not store encryption key material you obtain from the platform in logs, analytics, or error reports.
- Remember that scopes and bucket restrictions, not encryption, are what limit blast radius from a leaked key.
Related
Access control
Scopes, bucket ceilings, and step-up authentication.
Data residency
Where objects live and what is not guaranteed.
Compliance
What the platform can and cannot attest to.
Versions and restore
How encryption interacts with version history.