Security

Last updated:

Zero-knowledge in three sentences

Your master password is stretched in your browser into a 256-bit key by Argon2id. That key derives the keys that encrypt your media with XChaCha20-Poly1305 before it leaves your device. Ciphek's servers store opaque ciphertext, byte counts, and the metadata listed in the Privacy Policy — nothing the master password can decrypt.

If our infrastructure is compromised or compelled by lawful process, what becomes available is the encrypted blob set. The plaintext does not exist on Ciphek's systems.

Cipher suite

Every primitive Ciphek uses is named below. The full parameter set, source library, and audit lineage live in the whitepaper.

PrimitivePurposeParametersSource
Argon2idMaster password key derivation (login, enrollment)64 MiB memory, 3 iterations, p=1, 256-bit outputhash-wasm 4.12 (RFC 9106 reference)
XChaCha20-Poly1305Authenticated encryption for media chunks256-bit key, 192-bit nonce, 128-bit tag@noble/ciphers 2.1 (Cure53 audit, 2024)
AES-KWPer-file key wrapping under derived wrapping key256-bit KEK, NIST SP 800-38FWeb Crypto API (browser native)
HKDF-SHA256Subkey derivation (auth key, metadata key, file wrapping key)SHA-256, distinct info labels per subkey@noble/hashes 2.x
TOTP (RFC 6238)Two-factor authentication codes30s step, 6 digits, SHA-1; secret encrypted at restotpauth 9.5
BIP39Recovery mnemonic encoding24 words, 256-bit entropy@scure/bip39 2.x

Audit posture

Ciphek has not yet completed a third-party security audit of its own codebase. The cryptographic primitives we use rely on upstream audit lineage: @noble/ciphers (Cure53, 2024, OpenSats funded), the RFC 9106 reference for Argon2id, and the browser-platform-audited Web Crypto API. A full third-party audit of Ciphek's integration is planned post-launch and will be linked here when complete.

Pen-test results from internal milestones (v1.0: 0 critical, 0 high) are summarized in the whitepaper Audit Results section.