Zero-Knowledge Security Architecture
Understanding the advanced security and encryption behind SecureShare
We use the Web Crypto API to generate AES-256-GCM encryption keys and encrypt your data locally. The encryption key never leaves your device and is embedded in the URL fragment.
The decryption key is stored in the URL fragment (after #) which is never transmitted to servers. This ensures true zero-knowledge architecture where we cannot access your data.
Only encrypted data is stored in Upstash Redis with automatic TTL expiration. No encryption keys, metadata, or plaintext data is ever stored on our servers.
Set view limits from 1-10. Once the maximum number of views is reached, the encrypted data is immediately deleted from Redis with no recovery possible.
AES-256-GCM Encryption
We use AES-256-GCM (Galois/Counter Mode) which provides both encryption and authentication. Each encryption uses a unique 96-bit initialization vector (IV) for maximum security.
Web Crypto API
All cryptographic operations use the browser's native Web Crypto API, which provides hardware-accelerated, secure random number generation and encryption.
Zero Server-Side Key Access
Encryption keys are generated client-side and embedded in URL fragments. Since fragments are never sent to servers, we have zero access to decryption keys.
Automatic TTL Expiration
Redis automatically expires and deletes encrypted data based on TTL. No manual cleanup or maintenance required.
Web Crypto API generates cryptographically secure key
AES-256-GCM encryption with unique IV
Only ciphertext and IV stored, never the key
Fragment (#) never sent to server
Recipient's browser decrypts using key from URL
Use HTTPS Always
Always share links over HTTPS to prevent man-in-the-middle attacks on the encrypted data.
Short Expiration Times
Use the shortest reasonable expiration time to minimize the window of exposure.
Single-Use Links
Set max views to 1 for maximum security, especially for highly sensitive credentials.
Share Complete URLs
Ensure the complete URL including the fragment (#) is shared - without it, decryption is impossible.