A zero-knowledge digital vault that unlocks secrets only if the owner fails to check in, and only with unanimous nominee approval.
Dead Serious is a secure, cryptographically enforced inheritance vault built for HackNC 2026 under The Agency (cybersecurity & privacy) track.
It allows users to store sensitive digital secrets that:
- 🔐 Are encrypted client-side
- ⏳ Unlock only after missed check-ins
- 👥 Require multi-party consensus (3-of-3)
- 🧩 Cannot be decrypted by the server
- 📬 Keep nominees secret until activation
Unlike traditional password managers, nominees do not know they are nominees until the unlock phase begins.
Modern digital assets include crypto wallet seed phrases, password managers, confidential documents, business continuity plans, and personal final messages — yet there is no widely accessible system that provides:
- Zero-knowledge encryption
- Time-locked activation
- Distributed trust via key splitting
- Silent nomination
Dead Serious addresses this gap.
- User uploads secret files
- Browser generates a 256-bit AES key
- Secret is encrypted using AES-256-GCM
- Master key is split into 3 shares using Shamir's Secret Sharing
- Encrypted vault + encrypted shares stored
- Check-in interval set
- User must click "I'm Alive" to stay active
- TTL refreshes on each check-in
- If TTL expires → system assumes inactivity
When TTL expires:
- Nominees are notified
- Each nominee submits their key fragment
- Shares are combined client-side
- Master key reconstructed
- Vault decrypted locally
The server never sees plaintext or reconstructed keys.
| Layer | Technology |
|---|---|
| Frontend | React (Vite), React Router, TailwindCSS |
| Cryptography | Web Crypto API (AES-256-GCM), secrets.js-grempe |
| Backend | Node.js, Express |
| Datastore | PostgreSQL, Amazon S3 |
Dead-Serious/
│
├── frontend/
│ └── src/
│ ├── pages/
│ │ ├── CreateVault.jsx
│ │ ├── Dashboard.jsx
│ │ └── NomineeUnlock.jsx
│ ├── components/
│ │ ├── VaultForm.jsx
│ │ ├── CheckInCard.jsx
│ │ └── ApprovalStatus.jsx
│ ├── crypto/
│ │ ├── encrypt.js
│ │ ├── decrypt.js
│ │ └── shamir.js
│ ├── api/
│ │ └── client.js
│ ├── App.jsx
│ └── main.jsx
│
├── server/
│ ├── routes/
│ ├── services/
│ ├── utils/
│ └── server.js
│
└── README.md
- Node.js v18+
cd server
npm install
npm startCreate a .env file in server/:
PORT=3000cd frontend
npm install
npm run devIf you run into Node version issues, install:
npm install -D vite@5 @vitejs/plugin-react@4
- Create vault with a short TTL for demo purposes
- Show encrypted vault stored in Valkey
- Allow TTL to expire
- Nominees each submit approval
- Shares combined client-side
- Vault decrypted in the browser
"Not even we can decrypt this vault — only mathematics can."
Dead Serious protects against:
| Threat | Mitigation |
|---|---|
| Server compromise | No plaintext ever stored server-side |
| Single-party misuse | Requires unanimous 3-of-3 approval |
| Early access | Time-lock via TTL |
| Insider threats | Zero-knowledge architecture |
| Replay token misuse | Single-use invite tokens |
- Legal death verification
- Identity verification for nominees
- File upload scaling
- Multi-device recovery
- Flexible threshold schemes (2-of-3, 3-of-5)
- Secure file upload support
- On-chain notarization
- Hardware key integration
- Executor roles
- Multi-factor nominee authentication
| Name |
|---|
| Sharwari Akre |
| Divya Kannan |
| Dhruva Kamble |
| Soham Deshpande |
Dead Serious directly addresses the cybersecurity & privacy track through:
- Data privacy — client-side encryption only
- Zero-knowledge architecture — server holds no usable secrets
- Distributed trust — Shamir's Secret Sharing prevents single-party control
- Cryptographic enforcement — mathematics, not policy, enforces access
Hackathon project — NC State HackNC 2026