The key derivation chain
When you create a Beebeeb account, you choose a passphrase. This passphrase is the root of all your encryption keys — and it never leaves your device.
Here is how we turn your passphrase into file encryption:
- Passphrase to Master Key: Argon2id with 256 MB memory, 4 iterations, 4 lanes. This makes brute-force attacks extremely expensive.
- Master Key to Per-file Key: HKDF-SHA256 derives a unique 256-bit key for each file using the file ID as context.
- Per-file Key to Ciphertext: AES-256-GCM encrypts the file content and filename with a random 96-bit nonce.
What the server sees
Our server receives: an encrypted blob (the file), an encrypted blob (the filename), a nonce, and metadata (size, timestamp, owner ID). It cannot derive any key material. It cannot read the filename. It cannot read the file content.
Sharing
When you share a file, X25519 key exchange creates a shared secret between your key pair and the recipient's public key. The per-file key is re-encrypted under this shared secret. At no point does the server learn the file key.
Recovery
Your master key is also encoded as a 12-word mnemonic recovery phrase. If you lose your passphrase, you can use this phrase to recover your master key and re-derive all file keys. If you lose both, your data is gone. This is the trade-off of real zero-knowledge encryption.