CipherOnce
CipherOnce
FeaturesHow it worksSecurity
CipherOnce
CipherOnce

Built for privacy-conscious users. Zero-knowledge architecture designed from day one — your secrets stay yours, permanently.

AES-256-GCM EncryptedZero Server KnowledgeOpen SourceNo Data Retention
Open source on GitHub

Product

  • How it works
  • Features
  • Security
  • Create Secret
  • User Manual

Company

  • About
  • Privacy Policy
  • Terms of Service
  • Security Disclosure

© 2026 CipherOnce. All rights reserved.

All systems operational
Security Architecture

Client-Side Encryption Explained

At CipherOnce, encryption isn't a feature we added — it's the foundation we built on. Every secret is locked before it leaves your browser, using the same cryptographic primitives trusted by financial institutions worldwide.

What Client-Side Encryption Actually Means

"Encryption" is one of the most overused and misrepresented words in tech. Many services claim to encrypt your data — but what they mean is that your data is encrypted in transit (HTTPS) or at rest on their servers using keys they control. That's not real privacy. If they have the key, they have your secret.

Client-side encryption is fundamentally different. It means the encryption operation — turning your plaintext into unintelligible ciphertext — happens on your device, in your browser, before any data is transmitted. By the time your secret touches our network, it is already locked. We receive a ciphertext we cannot read and a storage task we can fulfill without knowing what we are storing.

We don't encrypt your secrets — your browser does. We only store the result.

The Encryption Flow, Step by Step

  1. 01

    You type your secret: Your plaintext exists only in your browser's memory. It is never logged, never buffered to disk by our code, and never sent anywhere in its readable form.

  2. 02

    A unique key is generated: The browser's built-in Web Crypto API generates a cryptographically random AES-256-GCM key. This key is unique per secret — we never reuse keys.

  3. 03

    Your secret is encrypted locally: Using that key and a random initialization vector (IV), your plaintext is transformed into ciphertext. Without the key and IV, the ciphertext is computationally indistinguishable from random noise.

  4. 04

    Only ciphertext goes to our servers: The encrypted blob and the IV are transmitted to our servers for storage. The key stays in your browser, appended to the shareable link as the URL fragment (#key). Browsers never include the fragment in HTTP requests.

  5. 05

    Your recipient opens the link: Their browser parses the URL fragment, extracts the key, fetches the ciphertext from our API, and decrypts it locally. Our server only sees a request for an encrypted record — never the key, never the plaintext.

  6. 06

    After viewing, the record is deleted: Once the view limit is reached or the expiry passes, the encrypted record is permanently removed from our database. Nothing persists.

Why This Matters More Than You Think

  • Server breach resilience: If our database were stolen, attackers would find only encrypted blobs — useless without the keys, which we never store.

  • No insider threat: Our own engineers, DBAs, and infrastructure operators cannot read your secrets. It is architecturally impossible, not just policy-prohibited.

  • Legal immunity: Because we hold no decryption keys, no court order or government request can compel us to produce readable content — because we genuinely don't have it.

  • Trustless by design: You don't need to trust our promises. You can verify our open-source code and confirm that the encryption happens before data transmission.

The Standard We Use: AES-256-GCM

AES-256-GCM (Advanced Encryption Standard, 256-bit key, Galois/Counter Mode) is the encryption algorithm used by the U.S. government for top-secret classified information. It provides both confidentiality (your data cannot be read) and authenticity (tampered ciphertext is detectable). A 256-bit key has 2²⁵⁶ possible values — more than the number of atoms in the observable universe.

We use the browser's native SubtleCrypto API, which is implemented in hardware-accelerated native code — not JavaScript. This means the encryption is both maximally secure and practically instantaneous.

No account required · Free forever · Open source