Concept
The Dead Man's Switch is an automated inheritance protocol. If you become unresponsive for a configured period, access is transferred to your trusted contacts through a secure, multi-party cryptographic process.
Key Generation & Derivation
┌─────────────────────────────────────────────────────────────────┐
│ YOUR PASSKEY (Hardware) │
└─────────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────┐
│ WebAuthn PRF Extension Output (32 bytes) │
│ (Unique per credential + salt) │
└─────────────────────────────────────────────────────────────────┘
│
▼ HKDF-SHA256
┌─────────────────────────────────────────────────────────────────┐
│ KEK - Key Encryption Key │
│ (256-bit AES key) │
└─────────────────────────────────────────────────────────────────┘
│
▼ AES-256-GCM
┌─────────────────────────────────────────────────────────────────┐
│ DEK - Data Encryption Key │
│ (Random 256-bit key, encrypted by KEK) │
│ Stored in database │
└─────────────────────────────────────────────────────────────────┘
│
▼ AES-256-GCM
┌─────────────────────────────────────────────────────────────────┐
│ Your Encrypted Documents │
│ (Each with unique nonce, stored in DB) │
└─────────────────────────────────────────────────────────────────┘
Contact Key Distribution
┌──────────────────────────────────────────────────────────────────────────┐
│ CONTACT REGISTRATION │
└──────────────────────────────────────────────────────────────────────────┘
Contact's Passkey Your Browser (with DEK)
│ │
▼ PRF + HKDF │
┌───────────┐ │
│ X25519 │ │
│ Private │◄─────── kept secret │
│ Key │ on contact's │
└───────────┘ device │
│ │
▼ Curve25519 │
┌───────────┐ uploaded ┌─────────────┐
│ X25519 │ ─────────────────────►│ Database │
│ Public │ to server │ (contact │
│ Key │ │ record) │
└───────────┘ └─────────────┘
│
▼
┌──────────────────────────┐
│ Your browser fetches │
│ contact's public key │
└──────────────────────────┘
│
▼
┌──────────────────────────────────────────────────────────────────────────┐
│ KEY SHARE CREATION │
│ │
│ DEK ──────► NaCl Box Encryption ◄────── Contact's Public Key │
│ (X25519 + XSalsa20-Poly1305) │
│ │ │
│ ▼ │
│ ┌─────────────────┐ │
│ │ Encrypted Share │ ──────► Stored in database │
│ │ + Ephemeral Key │ (contact_key_shares table) │
│ │ + Nonce │ │
│ └─────────────────┘ │
└──────────────────────────────────────────────────────────────────────────┘
Each contact gets their OWN encrypted copy of the DEK.
Only they can decrypt it with their private key.
Emergency Access Flow
- You configure check-in interval (e.g., 30 days) and quorum threshold (e.g., 2 of 3)
- VaultWard sends check-in reminders via email as deadline approaches
- If you miss check-ins, contacts can log in and request emergency access
- Each request is logged with timestamp, IP, and user agent
- When quorum is reached (e.g., 2 contacts have requested), waiting period begins
- Owner receives alert and can cancel by checking in at any time
- After waiting period expires, key shares are marked as "released"
- Contacts can now download vault and decrypt with their private keys
Emergency Release Process
┌────────────────────────────────────────────────────────────────────┐
│ QUORUM + WAITING PERIOD MET │
└────────────────────────────────────────────────────────────────────┘
│
▼
┌────────────────────────────────────────────────────────────────────┐
│ Server marks key shares as "RELEASED" │
│ (status: active → released) │
└────────────────────────────────────────────────────────────────────┘
│
┌───────────────────────┼───────────────────────┐
▼ ▼ ▼
┌─────────┐ ┌─────────┐ ┌─────────┐
│Contact 1│ │Contact 2│ │Contact 3│
└─────────┘ └─────────┘ └─────────┘
│ │ │
▼ ▼ ▼
Download their Download their Download their
encrypted share encrypted share encrypted share
│ │ │
▼ ▼ ▼
┌───────────┐ ┌───────────┐ ┌───────────┐
│ Decrypt │ │ Decrypt │ │ Decrypt │
│ with own │ │ with own │ │ with own │
│ X25519 │ │ X25519 │ │ X25519 │
│ private │ │ private │ │ private │
│ key │ │ key │ │ key │
└───────────┘ └───────────┘ └───────────┘
│ │ │
▼ ▼ ▼
DEK DEK DEK
│ │ │
▼ ▼ ▼
Decrypt vault Decrypt vault Decrypt vault
documents documents documents
Security Properties
- No Single Point of Failure Multiple contacts required—server, VaultWard staff, or any single contact cannot access alone
- End-to-End Encryption DEK encrypted to each contact's public key; server never sees plaintext DEK
- Owner Override Check in at any time during waiting period to cancel all pending requests
- Waiting Period Configurable delay (24 hours to 30 days) gives you time to respond to alerts
- Per-Contact Keys Each contact has unique keypair; revoking one contact doesn't affect others
- Transparency Log All requests, releases, and downloads logged with IP/timestamp for audit