Security Report
This page describes cinderpaste's cryptography and threat model in plain terms, including — honestly — what encryption can and cannot protect you from. Security you can't inspect is just a marketing claim.
Threat model
cinderpaste assumes the network and the server may be hostile. It's built so that a passive network observer, a curious operator, or an attacker who fully compromises the server still cannot read your content, because the only thing stored is ciphertext.
Cryptography details
Content is encrypted with AES-256-GCM, an authenticated cipher that also detects tampering. Keyless shares use a random 256-bit key generated in the browser; password shares derive the key with PBKDF2-SHA256 over 600,000 iterations and a 16-byte random salt.
What we protect against
Server compromise and data seizure (only ciphertext exists), network eavesdropping (content is already encrypted before transit), and long-term exposure (pastes expire and burn). No accounts means there's no credential database to breach.
What we can't protect against
We can't protect a link you send over an insecure channel, a device that's already compromised with malware or a keylogger, a screenshot the recipient takes, or a weak passphrase. Anyone who holds the full link can read the paste — treat it like the secret itself.
Server operator threat model
Because the decryption key never reaches the server, a malicious or coerced operator gains nothing but opaque ciphertext. Rate limiting uses a keyed hash of the client IP, so even access logs don't reveal who created which paste.
Legal considerations
There is no plaintext to subpoena. A lawful request can only ever obtain encrypted blobs and metadata like expiry timestamps — never readable content, because we don't have the key to produce it.
Bug bounty
A coordinated disclosure process is planned. Until it's live, please report suspected vulnerabilities privately rather than publicly, and we'll acknowledge and credit responsible reports.
Cryptographic primitives
| Purpose | Primitive |
|---|---|
| Symmetric cipher | AES-256-GCM |
| Key derivation (password pastes) | PBKDF2-SHA256 · 600,000 iter |
| Random key & IV generation | crypto.getRandomValues |
| IP rate-limit hashing | HMAC-SHA256 (keyed) |