SendCrypted Security Model

Your secrets never leave your device unencrypted.

1. Client-Side Encryption (Web Crypto API)

Unlike traditional "secure" notes, SendCrypted relies on the Web Crypto API, a high-performance, standardized cryptographic engine built directly into your browser. All encryption and decryption happen locally on your computer. Your plaintext data is never transmitted to our server.

2. The URL Fragment (#) Magic

When you share a link, it looks like this: .../s/uuid#decryption-key. The part after the # symbol is called a URL Fragment. By design, browsers never send the fragment to the server. This ensures that even if our database or server were compromised, the attacker would not have the keys needed to unlock your data.

3. Advanced Key Derivation (PBKDF2 & Dynamic Salts)

We don't just use your passphrase directly. We use PBKDF2 with 100,000 iterations to derive a 256-bit AES key. For every single secret, we generate a unique, 16-byte random Salt. This makes "rainbow table" or pre-computation attacks impossible, as an attacker would have to brute-force each secret individually from scratch.

4. Authenticated Encryption (AES-GCM)

We use AES-256-GCM. Beyond just hiding your data, GCM (Galois/Counter Mode) provides integrity. This means the browser can mathematically prove that the data has not been tampered with or modified while stored on the server. If even a single bit of the encrypted blob is changed, decryption will fail.

5. Optional Passphrase (Two-Channel Security)

While the randomly generated URL key provides high entropy and strong security on its own, you can add an optional Passphrase. This provides two key benefits:

6. Server-Side Hardening

Our Go-based backend is designed with a minimal attack surface:

Back to Home