Encryption Happens in Your Browser

All encryption and decryption runs entirely in your browser, on your device. The text you type is encrypted locally before anything else happens, and your plaintext never leaves your device. Our server never receives, processes, or stores the content of your messages. For logged-in users, the only document-related data we store is an optional title and a creation date — never the encrypted or decrypted content itself.

Algorithms

  • New documents are encrypted with AES-256-GCM (authenticated encryption) using the browser's native WebCrypto API. GCM both encrypts your data and detects any tampering or corruption on decryption.
  • Passphrase-protected documents derive their key from your passphrase with PBKDF2-SHA256 using 600,000 iterations, which makes guessing attacks against the passphrase substantially slower.
  • Older documents were encrypted with AES-256-CBC. They remain fully readable — the app detects the legacy format automatically.

Where Things Are Stored

ModeEncryption keysCiphertext (your document)
Guest (no account)Stored only in your browser's localStorage, on your device.Only on your printed paper. We store nothing.
AccountStored on our server (Supabase), protected by row-level security and your login, so you can access your keys from any device.Still only on your printed paper. We never store message content.

The trade-off, stated plainly: if you create an account, you are trusting our infrastructure with your encryption keys. That is a real trade — you gain multi-device access and protection against losing your keys, but a compromise of our database combined with access to your printed papers could expose your data. If you don't want to make that trade, you have two alternatives:

  • Guest mode with exported key backups — keys never touch our servers; you keep printed or downloaded copies of your keys yourself.
  • Passphrase mode — the key is derived from a passphrase in your head; nothing is stored anywhere, by us or by your browser.

Data-Format Specification

Your printed papers should outlive this service. The complete format is documented below, so anyone with standard cryptographic tools can decrypt a SecurePaper document without our software.

QR chunking

Multi-part codes are SP:<n>/<total>|<chunk>; concatenate chunks in order to reconstruct the ciphertext. Single-part codes carry the ciphertext directly, with no prefix.

SP:1/2|2|mF3kQ9xR2vB8pLtY7cNhKdWq4sJz…

v2 format (current)

2|<base64(iv12 || ciphertext || tag16)> — AES-256-GCM with a 12-byte IV and a 16-byte authentication tag. The key is 64 hex characters (32 bytes).

2|mF3kQ9xR2vB8pLtY7cNhKdWq4sJzE6…==

v2 passphrase format

2p|<iterations>|<base64(salt16 || iv12 || ciphertext || tag16)> — the key is PBKDF2-SHA256(passphrase, salt, iterations, 32 bytes).

2p|600000|Qk9tW7cVpXz…==

v1 legacy format

A hex string whose first 6 characters are an IV checksum prefix; the rest is AES-256-CBC ciphertext. The legacy key string is <64 hex key>iv<32 hex IV>.

What If SecurePaper Disappears?

Your papers stay decryptable. The data format is fully documented above, and we publish a standalone offline decryptor — a single HTML file that works without an internet connection, on any modern browser:

Download the offline decryptor (offline-decryptor.html)

We recommend storing a copy of this file — on a USB drive or printed instructions — together with your important papers, so your backups never depend on our servers being online.

Honest Limitations

No system provides absolute security, and we won't claim otherwise. Things SecurePaper cannot protect you from:

  • A compromised device. If your computer or phone has malware, it can read what you type before encryption ever happens.
  • Losing your key. There is no backdoor and no recovery mechanism for the encryption itself. If you lose your key (or forget your passphrase), your document is gone. That is a feature of strong encryption, but it puts the responsibility for key backups on you.
  • Weak passphrases. PBKDF2 slows down guessing, but a short or common passphrase can still be brute-forced. Use a long, unique passphrase.
  • Someone who has both your paper and your key. Store them separately. A printed key taped to the printed document protects nothing.
  • Our infrastructure, if you use an account. As described above, account mode stores keys server-side. We use row-level security and standard hardening, but you should choose the storage mode that matches your threat model.
  • Physical destruction. Paper burns and fades. For critical data, print multiple copies and store them in different locations.
Our claim, precisely: SecurePaper applies well-studied, standard cryptography (AES-256-GCM, PBKDF2-SHA256) in your browser so that your printed documents are unreadable without the key. Nothing more, nothing less.
Create SecurePaper