/ secrets
THE DESIGN, WITHOUT THE MYSTERY

How security works.

Wayvo Secrets encrypts and decrypts secret text in your browser using Web Crypto and AES-256-GCM. Every secret has a fresh random 256-bit key and a 96-bit nonce. Authenticated context separates the secret payload from the key check, preventing either from being substituted for the other. Keys stay in the share link’s fragment and are never sent by the application to the API.

Your browser → encrypted envelope → private R2
Share link fragment → recipient’s browser
Explicit Reveal → atomic D1 claim → ciphertext
Recipient’s browser + fragment key → plaintext

Three independent capabilities

The dashboard link grants access to unencrypted labels and delivery metadata, and permission to create secrets. A separate random redemption token authorizes one retrieval. These authorization tokens are deliberately sent to our API over HTTPS; only their hashes are stored. Neither is the secret’s encryption key.

Opening is safe. Revealing is final.

Page loads and status checks never claim a secret or return its protected ciphertext. A separate encrypted key check lets your browser reject an incorrect key before attempting a claim. An explicit Reveal click atomically claims the secret in D1 before R2 is read. Concurrent claims have one winner.

If storage or network delivery fails after a claim, the secret can be lost. We fail closed rather than allow a second retrieval. “Accessed” records ciphertext issued to a claimant, not proof a person saw or understood it. “Unavailable” records a claim that could not finish.

Expiration and deletion

The API enforces expiry immediately. After a claim, ciphertext deletion is attempted; an R2 lifecycle rule deletes remaining objects after seven days, asynchronously. Secret metadata is visible for 365 days. Dashboard links expire after one year of inactivity. Operators must run the documented cleanup schedule to remove retained records.

What encryption cannot protect

Anyone with a full share link can claim its secret. Anyone with a dashboard link can see its metadata and create secrets. There is no recovery for lost links. Sensitive labels, copied text, browser extensions, clipboard history, screenshots, and a compromised device are outside this protection.

A compromised website or malicious future JavaScript could steal plaintext or keys. Open source makes the design auditable; it does not prove that a deployment serves identical code. Turnstile is isolated in a separate-origin frame inside a trusted verification window. Its script cannot access the application’s secret text, keys, or remembered dashboard storage.

Source and reporting

Inspect wayvo-ai/secrets on GitHub. The proposed license is Apache-2.0, pending Wayvo’s publishing approval. For security reports, follow SECURITY.md in the repository. Never include a real secret, a dashboard capability, or a complete share link in an issue or support request.