Duress Decoy Vaults & Plausible Deniability
In hostile physical situations (such as border crossings, device confiscation, or physical coercion), standard cryptographic defenses fail because the adversary forces you to reveal your password. ZevSafe's Duress Decoy Vault provides plausible deniability: entering your secondary decoy password unlocks a convincing set of innocuous documents while keeping your true sensitive data mathematically invisible.
How Duress Mode Protects You
Enable Duress Mode During Lock
When creating your vault, toggle "Duress Decoy Vault". Enter your confidential Primary Password, and then define a completely different Decoy Password.
Select or Generate Decoy Files
Provide innocent files (such as family vacation photos, tax summaries, or receipts) or click "Generate Realistic Decoys" to create convincing travel itineraries and household budgets automatically.
Unlock According to Context
To access your true files, enter your Primary Password. If forced to surrender your password under physical coercion, enter your Decoy Password. ZevSafe unlocks the decoy vault cleanlyโleaving zero indication that another vault exists!
Dual-Manifest Container Architecture
When Duress Mode is active, ZevSafe sets bit 1 in the header flags (V3_FLAG_DURESS = 0x02) and appends two independent encrypted manifests at the tail of the container:
+-------------------------------------------------------------------------+
| Primary Data Chunks + Decoy Data Chunks (Interleaved STREAM AEAD) |
+-------------------------------------------------------------------------+
| ENVELOPE 0 (Primary Manifest): |
| [ Salt (32B) | IV (12B) | Length (4B) | Ciphertext (M0) | GCM-Tag (16B) ] |
+-------------------------------------------------------------------------+
| ENVELOPE 1 (Decoy Manifest): |
| [ Salt (32B) | IV (12B) | Length (4B) | Ciphertext (M1) | GCM-Tag (16B) ] |
+-------------------------------------------------------------------------+
Each envelope possesses its own independent 32-byte CSPRNG salt, 12-byte initialization vector, and 128-bit authentication tag.
Mathematical Indistinguishability ($IND\text{-}CPA$)
Under the standard cryptographic security definitions of AES-256-GCM, the ciphertext output is computationally indistinguishable from uniform random noise:
When an examiner supplies the decoy password, Envelope 1 validates its authentication tag and decrypts the decoy catalog. Envelope 0, meanwhile, fails tag validation and is indistinguishable from pseudorandom padding. The examiner has no mathematical mechanism to determine whether Envelope 0 represents an unauthenticated primary vault or simply random noise.
// js/stream-unpacker.js: Authenticate candidate password against both envelopes
async function unlockDuressVault(trailerBytes, candidatePassword) {
// 1. Attempt decryption of Envelope 0 (Primary)
try {
const manifest = await decryptEnvelope(envelope0Bytes, candidatePassword);
return { type: 'PRIMARY', manifest };
} catch (e) {
// Authentication tag failed โ expected if candidate is decoy password
}
// 2. Attempt decryption of Envelope 1 (Decoy)
try {
const manifest = await decryptEnvelope(envelope1Bytes, candidatePassword);
return { type: 'DECOY', manifest };
} catch (e) {
throw new Error("Invalid password: Failed authentication across both envelopes");
}
}
Automated Realistic Decoy Generator
Empty vaults or single dummy files trigger suspicion during forensic inspections. ZevSafe includes an automated synthetic generator that constructs realistic file structures:
| Category | Generated Synthetic Files | Realistic Content |
|---|---|---|
| Travel & Vacations | itinerary.txt, hotel_confirmation.pdf |
Flights, booking references, rental car details, day-by-day sightseeing. |
| Culinary & Recipes | sourdough_guide.md, mediterranean_diet.txt |
Ingredient lists, fermentation temperatures, baker's percentages. |
| Personal Budget | monthly_expenses_2026.csv, utilities.txt |
Plausible electricity, water, rent, and grocery line items. |
Security Invariants
| Invariant | Guarantee | Audit Result |
|---|---|---|
| Cross-Envelope Isolation | Decoy key cannot decrypt primary data chunks or manifest. | VERIFIED • Distinct PBKDF2 salts and keys. |
| Zero UI Tell-Tale Signs | Unlocking in decoy mode presents identical explorer UI without warning badges. | VERIFIED • Indistinguishable user interface. |
| Safe Buffer Scrubbing | Candidate key material zeroized after failed attempts. | VERIFIED • .fill(0) on all intermediate buffers. |