All posts

How zero-knowledge encryption works at Beebeeb

A technical walkthrough of our encryption architecture: from passphrase to ciphertext, with no server-side key material.

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:

  1. Passphrase to Master Key: Argon2id with 256 MB memory, 4 iterations, 4 lanes. This makes brute-force attacks extremely expensive.
  2. Master Key to Per-file Key: HKDF-SHA256 derives a unique 256-bit key for each file using the file ID as context.
  3. 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.

Files only you can read

Beebeeb is end-to-end encrypted, zero-knowledge cloud storage — stored in Falkenstein, Germany, open source, with a 14-day free trial on every plan. Encryption happens on your device; we only ever hold ciphertext we can’t read.

Join the waitlist See pricing How the encryption works