Cryptographically Enforced at the Edge
Layer 1: Client-Side Encryption (AES-GCM-256)
Your content is encrypted in your browser BEFORE sending to the server using split-key architecture.
Layer 2: Server-Side Key Encryption
Key B is encrypted with MASTER_ENCRYPTION_KEY before database storage.
Layer 3: Encrypted Database Storage
All seals stored encrypted in Cloudflare D1 database:
🛡️ What an Attacker with Database Access CANNOT Do:
Cloudflare D1 Database Storage
All seals stored encrypted in Cloudflare D1 (SQLite at the edge) with triple-layer encryption. Encrypted blobs stored as base64 TEXT. Maximum 560KB per seal (due to D1 column limits).
Edge Runtime
All API routes run on Cloudflare Workers at the edge, providing low latency and DDoS protection.
Immutable Audit Logs
Every access attempt is logged with timestamps, IP addresses, and outcomes. Logs cannot be modified or deleted.
Encrypted Local Storage
Browser-based encrypted vault for saving seals. AES-GCM-256 encryption with unique key per browser. No server-side storage of user's vault links. Privacy-first design.
Simplified Security Model
Removed seed phrase complexity. Always uses cryptographically random keys. No recovery mechanism (by design). Users control what's stored via COPY | DOWNLOAD | SAVE buttons.
Replay Attack Prevention
Nonce-first validation prevents concurrent token reuse. Database-backed nonce storage ensures replay detection across all worker instances.
Atomic Database Updates
All-or-nothing pulse updates prevent inconsistent state. Single SQL operation ensures both timestamp and unlock time update together.
Strict Token Validation
Format validation rejects malformed pulse tokens before processing. Seal ID, timestamp, nonce, and signature all validated with regex.
Safe Deletion Order
Database-first deletion prevents data loss. If blob deletion fails, seal record is already gone (acceptable orphan).
Collision-Resistant Fingerprinting
SHA-256 hashed fingerprints for rate limiting. Combines IP + User-Agent + Accept-Language without truncation.
Memory Leak Protection
Automatic cleanup of concurrent request tracker at 10K entries. Zero-count entries removed first.
Accurate Access Metrics
Only counts successful unlocks, not locked checks. Provides accurate usage analytics.
File Size Enforcement
560KB limit (before encryption) enforced at all layers: UI validation, API validation, and database storage.
Layer 1: Cryptographic Defenses
Layer 2: Time-Lock Enforcement
Layer 3: Access Control
Layer 4: Operational Security
Zero-Knowledge Architecture
No user accounts, no passwords, no authentication. Security is enforced through cryptography alone. This eliminates credential theft, phishing, and password database breaches.
Time-Lock Enforcement
The server will not release Key B before the unlock time. Server-side validation using Date.now() prevents client-side time manipulation.
Rate Limiting with Fingerprinting
API endpoints use browser fingerprinting (IP + User-Agent + Language) with D1 database persistence. Rate limits survive across all worker instances. 10-20 requests per minute per fingerprint.
No Single Point of Failure
Split-key architecture means neither the server alone nor the client alone can decrypt content.
Triple-Layer Encrypted Storage
All seals encrypted with AES-GCM-256 client-side, Key B encrypted with master key server-side, and database encryption at rest. Zero plaintext storage.
Client-Side Decryption
Decryption happens in your browser. The server never sees the decrypted content.
CAPTCHA Protection
Turnstile CAPTCHA on seal creation prevents automated abuse and bot attacks.
Protected Against:
Not Protected Against:
TimeSeal is open source under the Business Source License. The code is available for inspection and audit on GitHub.
VIEW SOURCE CODE