The primitive
One ciphertext, two passwords, two truths. SDK in TypeScript, Rust, Go, and Python. Apache 2.0. Free for any use, proprietary or open. The wedge.
Every secret leaks eventually. We make sure what leaks is the decoy. SDK in four languages, hosted API, verified audit posture. Built for AI agent platforms, custody products, and security teams who plan for the breach instead of pretending it won't happen.
Get one short note when we launch on Sat 4 July 2026, 08:00 BST. No marketing after that.
When someone has the bytes (a stolen backup, a seized device, a pwned agent), there's only one plaintext to recover. If they have the right key, it's game over.
deny.sh changes that. The same ciphertext decrypts to different content depending on which key you use. One key gives the real plaintext. Another gives a plausible decoy. No forensic tool can tell which is which because mathematically there's nothing to tell. Both decryptions are valid. The bytes don't betray you.
Your primary password protects the real content. Your control password creates a control file, a small key that determines what the encrypted file decrypts to. Different control file, different output.
Write what you want an attacker to see. A low-balance wallet. Old notes. deny.sh computes a second control file that makes the same ciphertext open to the decoy instead. You keep the real control file hidden. The decoy goes somewhere plausible.
The encrypted file never changes. If the bytes leak, what an attacker tries first is the decoy control file you placed somewhere plausible. They decrypt, they see your decoy, they walk away. No hidden partition. No metadata. No tell.
Every other deniability tool ships fingerprintable static decoys. Ours don't. The realism engine generates shape-correct decoys across 17 credential types on demand, runs every candidate through a deterministic validator (Luhn, mod-97, BIP39 checksum, JWT structural, PEM tag), and returns only what passes. The engine sees the type. It never sees your real secret.
sk-proj-1a2b3c4d5e6f7g8h9i0j1k2l3m4n5o6p7q8r9s0t…
include error famous fantasy parade mountain spatial void stumble loyal shop segment
FR47 3915 7204 8629 1048 57
postgres://admin:x7kQ9mP2rL4vW8nJ@db-prod-01.acme-internal.net:5432/maindb
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ1c2VyXzQ1NiIsImlhdCI6MTcxNTAwMDAwMH0.aB3cD9eF2gH5iJ8kL1mN4oPqRsT…
4532 1872 3456 7891
All six examples are real engine output. Validator-gated. Never sees your real secret. Never echoes plaintext. Read the architecture: The decoy realism engine.
Everything runs in your browser. Your keys never leave your machine. The realism engine ships as a static bundle, no server call.
or just start typing below. Everything runs in your browser.
Text, seed phrases, keys, passwords. Max 10MB. Never sent anywhere.
Used to encrypt. You'll need this to decrypt.
Produces the deniable decoy on decrypt.
The ciphertext output from encryption.
Determines which plaintext is revealed. Different control file = different message.
Same ciphertext from step 1.
What an attacker will see. Must be same length or shorter than the original.
Used to encrypt. You'll need this to decrypt.
Produces the deniable decoy on decrypt.
Deniability isn't a feature. It's a category of infrastructure: a cryptographic primitive, an operational runtime, and a verifiable trust posture. We build all three.
One ciphertext, two passwords, two truths. SDK in TypeScript, Rust, Go, and Python. Apache 2.0. Free for any use, proprietary or open. The wedge.
Hosted API with per-tenant key isolation, 365-day audit log, MCP server, and named SLA. The pillar AI agent platforms and custody products run on. Paid.
Published threat model, formal construction proof, reproducible builds, signed releases, RFC 9116 disclosure pipeline. Independent audit in scoping for Q3 2026. The moat brick competitors can't fake.
One primitive. One wire format. One threat model. Pick the surface that fits the workload.
$ npm install deny-sh
# 8.4KB · zero deps · types included
Same wire format, same threat model, same construction. The surface you reach for depends on who you are.
Your seed phrase. A document. A photo. A backup that might end up on a stolen laptop or a breached cloud drive. Open /encrypt, set a real password and a decoy password, done. Free, browser-based, no account.
Adding deniable storage to something you're building. SDK in TypeScript, Rust, Go, and Python. Apache 2.0, zero copyleft, drop-in. Pick a language, npm install deny-sh (or your equivalent), ship.
Serving paying customers who store secrets in agents that get prompt-injected. Per-tenant key isolation, per-tenant audit log, MCP server, named SLA. Agents Infrastructure tier, $999/mo. Agent docs.
Regulated organisation, custody platform, or security product where deniability needs to land in your audit trail. Self-host or private deployment, bring your own KMS, structured audit events for SOC 2 / ISO 27001. From $25K/year.
| deny.sh | VeraCrypt | PGP | BitLocker | |
|---|---|---|---|---|
| Plausible deniability | ✓ | Partial | ✗ | ✗ |
| Cryptographic deniability | ✓ | ✗ | ✗ | ✗ |
| Multiple decoys from one file | ✓ | ✗ | ✗ | ✗ |
| AI-generated decoys (shape-correct, validator-gated) | ✓ | ✗ | ✗ | ✗ |
| No hidden partition needed | ✓ | ✗ | ✓ | ✓ |
| Works on single files | ✓ | Volumes | ✓ | Drives |
| API / SDK | ✓ | ✗ | CLI | ✗ |
Hidden volumes are detectable by disk usage analysis. deny.sh has no volumes, no partitions, no structural tell. Full comparison.
AES-256-CTR, scrypt, and XOR composition. Standard primitives, open construction, no magic. A deniability product gets held to a higher bar, so we publish all four layers. Read each one, run the commands, decide for yourself. Independent cryptographic audit is in scoping for Q3 2026; results will be published when complete.
What we defend against. What we partially defend against. What we do not defend against at all. Plain English, no equivocation.
Read /threat-model →Five-step algorithm. Named primitives at every step (scrypt, AES-256-CTR, HKDF, XOR). Deniability proof sketch. KAT byte-compat across four SDKs.
Read /security →Coordinated disclosure with 48h acknowledgement. GPG key on keys.openpgp.org. RFC 9116 signed security.txt. Safe harbor for good-faith research.
Signed git tags. npm / crates / PyPI / Go-module integrity. SRI on every served asset, with a machine-readable manifest at /.well-known/integrity.json. Reproducible build recipe.
Custody platforms, exchanges, and security products. The same primitive that protects an individual key protects an institution's vault.
Embed the SDK in any product, proprietary or open, with no copyleft surface. Application-layer (vault, dispatcher, dashboard) is dual-licensed AGPL or commercial.
Run deny.sh inside your own infrastructure. Bring your own KMS. Every encrypt / decrypt / deny call logged with structured audit events for SOC 2 / ISO 27001 evidence.
99.95% uptime SLA, <15-min P1 acknowledgement, named security and engineering escalation paths. UK / EU / US business-hours coverage with on-call escalation. Annual contract, paid quarterly or annually.
CLI and browser tools are free forever. API tiers for when you need more.
Full pricing details · Enterprise licensing · Crypto inheritance
Browser-based. No account needed. Free to use. If you need API access, SDKs, or MCP integration, get a free API key after.
What leaks is the decoy.