Security model

Zero-knowledge, by construction

Lockday is end-to-end encrypted. Your content is encrypted on your device before it is sent anywhere, so the people who run the server, including us, cannot read it. Here is exactly how that works, in plain terms.

What the server can & cannot see

The server's job is to shuttle encrypted blobs between your devices. It needs a little metadata to do that, and nothing more.

Visible to the server
  • Random entity IDs Not derived from your content
  • Timestamps When an item was created or last changed
  • Sync metadata Whether an item is deleted or pending sync
  • Relationships Which task belongs to which project
Encrypted, never visible
  • Task titles & notes The words you write
  • Due dates & times When things are due
  • Project / section / label names How you organize
  • Recurring schedules How often something repeats

How your data is locked

Lockday uses envelope encryption. Each item gets its own key; those keys are sealed to your personal keypair; and that keypair is wrapped with a key derived from your secret.

  1. Your content is encrypted with a unique per-item key (a DEK).
  2. Each item key is sealed to your personal public key, so only your private key can open it.
  3. Your private key is the single root secret. It is wrapped with a key derived from your password or recovery secret using Argon2id, and never leaves your device in usable form.

Because the root key never changes, you can rotate your password or add a new unlock method without ever re-encrypting your data.

The cryptography

Content encryption AES-256-GCM

Every task, note, and name is sealed with a unique key.

Key derivation Argon2id

Memory-hard, so guessing your password is slow and expensive even on specialized hardware.

Key wrapping X25519 + ML-KEM-768

A post-quantum hybrid seals each item key to your keypair, so it stays safe even against a future quantum computer.

Password storage (server) BCrypt

Over a hash that was already computed on your device.

Transport TLS + signed JWT

Encrypted in flight, with signed access tokens.

Unlocking the app

No lock

Opens instantly. The key is protected by a random device key.

PIN

6–12 digits. Entered to unlock, and never stored in the clear.

Biometric

Face or fingerprint via your OS, backed by the same PIN.

After a few wrong attempts, unlocking is rate-limited with an increasing cooldown that survives restarts. On phones the wrapped key is additionally protected by the hardware keystore (TEE / Secure Enclave).

Recovery

End-to-end encryption has a hard rule: account recovery is not data recovery. If you forget your secret and have no backup, no one, including us, can decrypt your data. That is the point.

So Lockday walks every new user through recording a recovery phrase and saving a key backup during onboarding, and lets you verify that secret any time from Settings. The backup carries your key wrapped with a portable secret you control, so you can restore on a new device.