Loading...
private.me Docs
Get Deaddrop
PRIVATE.ME PLATFORM

Deaddrop: Threshold Secret Drops

Split secrets across channels. Reconstruct only with quorum. Deaddrop uses XorIDA threshold sharing to split any secret into K-of-N shares distributed across independent channels — email, USB, QR code, verbal, physical media. No central server ever holds the complete secret. Any K-1 shares reveal zero information about the original. Not probabilistically. Unconditionally. Quantum-proof by construction.

AVAILABLE NOW @private.me/deaddrop SECURITY INFRASTRUCTURE 126 TESTS
NOW AVAILABLE
@private.me/deaddrop is built and tested. 126 tests across 6 test files — all passing. Full pipeline: serialize, pad, HMAC tag, XorIDA split, xFormat binary envelope, Base45 encoding for transport. Share validation, TTL-based expiry, index verification, and abuse case coverage included.

Enterprise toolkit shipped: @private.me/deaddrop-cli — 10-endpoint management server, 3-role RBAC, Docker deployment. Part of the Enterprise CLI Suite — 21 self-hosted servers, Docker-ready, air-gapped capable.
Section 01

The Problem: Centralized Trust in Secret Exchange

Every existing approach to secret exchange requires trusting a server, a relay, or a network with the complete secret at some point during transit. That single point of trust is a single point of failure.

Signal disappearing messages still route through centralized servers that see metadata — who sent what, when, and to whom. OnionShare depends on Tor relay integrity and requires both parties to be online simultaneously. ProtonMail performs server-side encryption — your keys exist on their infrastructure, accessible to a subpoena or insider. Self-destructing links rely on the host server to actually delete the content and typically leave traces in CDN caches, backup systems, and access logs. In every case, a compromise at the center exposes everything.

The fundamental flaw is architectural: the complete secret exists in one place at one time. Any system that centralizes the secret — even temporarily — creates a window where a single breach, subpoena, or insider threat exposes the entire payload.

Competitive Failure Table

ApproachServer TrustForward SecrecyOffline CapableQuantum-Safe
Signal Disappearing MsgsPartial — server sees metadataYesNoNo
OnionShareTor relay trustNoNoNo
ProtonMailServer-side encryptionNoNoNo
Self-Destructing LinksFull server trustNoNoNo
Encrypted USBNo serverNoYesNo (AES)
Deaddrop (PRIVATE.ME)Zero trust (no server)Yes (ephemeral shares)YesYes (IT-secure)

Deaddrop eliminates centralized trust entirely. The secret is split before it leaves the sender. No single channel, server, or intermediary ever holds enough information to reconstruct.

The Root Cause

The problem is not weak encryption or poor key management. The problem is architectural centralization. Every approach in the table above creates a moment where the complete secret exists in a single location — a server, a relay, an endpoint. That moment is the vulnerability. Increasing key length does not help. Switching algorithms does not help. The only solution is to ensure the complete secret never exists in transit at all.

Deaddrop inverts the model: instead of encrypting a secret and routing it through a trusted channel, the secret is split into mathematically independent fragments that travel through untrusted channels. The security comes from the splitting, not from the channels. Each channel can be fully compromised — monitored, logged, intercepted — and the adversary learns nothing unless they compromise K channels simultaneously.

This is a paradigm shift from "trust the pipe" to "trust the math." The channels are untrusted by design. The security properties hold even against an omniscient network adversary who controls every channel individually but cannot correlate K channels in real time.

Section 02

The Solution: Split Before Transit

Deaddrop splits secrets using XorIDA threshold sharing into K-of-N shares, wraps each share in a binary envelope with HMAC integrity, encodes for transport, and distributes shares across independent channels. Reconstruction requires collecting any K shares. No server. No relay. No trust.

The Pipeline

Six steps transform a secret into transport-ready shares. Each step is pure, deterministic, and independently testable.

1. Serialize. The input secret (arbitrary bytes, string, or structured data) is normalized to a Uint8Array. Strings are UTF-8 encoded. Structured data is JSON-serialized then encoded.

2. Pad. PKCS7 padding ensures the payload aligns to the block size required by XorIDA splitting. Padding is deterministic and reversible — the original length is recoverable from the padded output.

3. HMAC Tag. HMAC-SHA256 is computed over the padded payload. The tag is prepended to the data. This tag is verified before reconstruction — tampered shares are rejected before any XorIDA operation occurs.

4. XorIDA Split. The HMAC-tagged payload is split into N shares using XorIDA threshold sharing over GF(2). Any K shares reconstruct the original. K-1 shares reveal zero information — information-theoretically, not computationally.

5. xFormat Envelope. Each share is wrapped in a binary xFormat envelope (IDA5 magic header 0x49444135) containing the share index, threshold parameters, drop ID, TTL metadata, and the share payload.

6. Base45 Encode. Each enveloped share is Base45-encoded for transport over text-safe channels (email, QR codes, SMS, printable media). Base45 is the ISO/IEC 18004 standard encoding used by EU Digital COVID Certificates — mature, well-tested, and universally decodable. For binary channels (USB, file transfer), this step can be skipped to eliminate the ~37% size overhead.

Why Base45?

Base45 was chosen over Base64 for a specific reason: it is the encoding standard adopted by the EU Digital COVID Certificate system (ISO/IEC 18004), making it the most widely deployed binary-to-text encoding in the world for security-critical payloads. Base45 produces output that is safe for QR codes, SMS, email bodies, chat messages, and printed media without escaping or special handling. The ~37% size overhead (vs ~33% for Base64) is a negligible trade-off for universal transport compatibility.

Key Property
No single share reveals any information about the secret. This is not encryption that could be broken with enough compute — it is an information-theoretic guarantee. An adversary holding K-1 shares has exactly as much information about the secret as an adversary holding zero shares: none.
HMAC Before Reconstruction
HMAC-SHA256 is always verified before XorIDA reconstruction. This is a non-negotiable ordering constraint. If a share has been tampered with, it is rejected before any reconstruction operation executes. This prevents malformed shares from producing garbage output that could be mistaken for a valid secret.
Section 03

Architecture

The Deaddrop pipeline transforms a secret into independently distributable shares and back. Every step is reversible, every intermediate is verified.

Split Pipeline

DEADDROP SPLIT PIPELINE Serialize Pad HMAC Tag XorIDA Split xFormat Wrap Base45 Encode

Reconstruct Pipeline

DEADDROP RECONSTRUCT PIPELINE Base45 Decode xFormat Unwrap Validate Index XorIDA Reconstruct HMAC Verify Secret

xFormat Binary Envelope

Each share is wrapped in an xFormat binary envelope before encoding. The envelope structure is:

FieldSizeDescription
Magic4 bytes0x49444135 ("IDA5" in ASCII)
Version1 byteEnvelope format version
Drop ID16 bytesUUID linking shares to the same drop
Share Index1 byte1-based index of this share
Threshold (K)1 byteMinimum shares for reconstruction
Total (N)1 byteTotal shares created
TTL8 bytesExpiry timestamp (ms since epoch)
HMAC32 bytesHMAC-SHA256 integrity tag
PayloadvariableXorIDA share data

The magic header enables quick identification of Deaddrop shares without parsing the full envelope. Corrupted or non-Deaddrop data is rejected at the first 4 bytes.

Multi-Channel Distribution

SHARE DISTRIBUTION (2-OF-3 EXAMPLE) XorIDA Split (2-of-3) Share 1: Email Ch. A Base45 in body Share 2: USB Drive Binary file Share 3: QR Code Printed / scanned Any 2 Shares Reconstruct
126
Tests (all passing)
<1ms
Split latency (typical)
0 bits
K-1 share leakage
6
Pipeline steps
Section 04

Deep Dive: Share Distribution

K-of-N threshold semantics give Deaddrop its power. The sender chooses how many shares to create (N), how many are needed to reconstruct (K), and which channels carry each share. The recipient collects K shares from any K channels.

Threshold Semantics

2-of-2: Both shares required. Maximum security, zero redundancy. If either share is lost, the secret is irrecoverable. Ideal for two-person integrity (TPI) scenarios: nuclear launch codes, dual-key cryptographic ceremonies, escrow release. Both parties must cooperate. Neither can act alone.

2-of-3: Any two of three shares reconstruct. One share can be lost or destroyed without data loss. The most common configuration — balances security with operational resilience. One share provides redundancy against channel failure, physical loss, or custodian unavailability.

3-of-5: Any three of five shares reconstruct. Two shares can be lost or compromised. Designed for distributed teams, multi-jurisdiction custody, or scenarios where geographic separation introduces transport risk. Five-party custody with three-party reconstruction provides the widest margin for operational failure.

4-of-7: Enterprise-grade custody. Four of seven shares reconstruct. Three shares can be lost. Suitable for board-level secret custody, multi-national legal teams, or critical infrastructure key management where maximum redundancy and maximum collusion resistance are both required.

Channel Independence

Shares can travel via any medium. The transport layer is completely decoupled from the cryptographic layer. Each share is a self-contained, opaque blob with no dependency on the other shares or on any specific transport protocol.

ChannelFormatUse Case
EmailBase45-encoded text in bodyRemote delivery, automated pipelines
USB DriveBinary file (.share)Air-gapped environments, physical custody
QR CodeBase45 encoded as QRPrinted drops, mobile scanning
VerbalBase45 read aloud / dictatedEmergency recovery, no-electronic scenarios
SMS / ChatBase45 textImmediate delivery, mobile-first
Physical PrintBase45 printed on paperSafe deposit box, notarized custody

TTL-Based Expiry

Each share carries a TTL (time-to-live) in the xFormat envelope metadata. After the TTL expires, compliant clients reject the share during validation. The secret effectively self-destructs when the last share expires — no server-side deletion required. TTL enforcement is client-side, not server-dependent.

TTL values are configurable per drop:

ScenarioRecommended TTLRationale
Operational intelligence1–24 hoursTime-sensitive; value degrades rapidly
Document exchange7 daysAllows multi-timezone collection
Estate / inheritanceIndefiniteMust survive custodian unavailability
Compliance evidenceMatches retention policySOX 7 years, GDPR per purpose

Share Index Validation

Every share carries its index (1-based) and the threshold parameters (K, N) in the xFormat envelope. Before reconstruction, Deaddrop validates: (a) at least K shares are present, (b) all shares reference the same drop ID, (c) share indices are within range [1, N], (d) no duplicate indices, (e) HMAC verification passes. Malformed or tampered shares are rejected before any XorIDA operation.

Erasure = Destruction
To permanently destroy a secret, delete any (N - K + 1) shares. With a 2-of-3 configuration, deleting any 2 shares makes the secret mathematically irrecoverable — not computationally hard to recover, but information-theoretically impossible. This property maps directly to GDPR Article 17 (Right to Erasure): destroy K shares and the data is gone forever.
Section 05

Benchmarks

Deaddrop operates at sub-millisecond latency for typical secret payloads. The bottleneck is never the cryptography — it is the transport.

Pipeline Performance

<1ms
Split latency (typical payload)
<1ms
Reconstruct latency
~37%
Base45 overhead
<0.1ms
HMAC verify

Payload Size Scaling

PayloadSplit (2-of-3)ReconstructShare Size (Base45)
64 bytes~14µs~12µs~88 chars
256 bytes~35µs~30µs~351 chars
1 KB~58µs~50µs~1.4 KB
64 KB~1.2ms~1.0ms~88 KB
1 MB~33ms~28ms~1.37 MB

Comparison with Traditional Approaches

ApproachLatency (1 KB)Server RequiredOfflineIT-Secure
AES-256-GCM encrypt + share key~140µsNoYesNo
Signal sealed sender~5msYes (server)NoNo
OnionShare (Tor)~500ms+Yes (Tor relays)NoNo
PGP encrypt~2msNoYesNo
Deaddrop (XorIDA)~58µsNoYesYes

Deaddrop is 2.4x faster than AES-256-GCM at 1 KB and information-theoretically secure — a property no encryption-based approach can match regardless of key length or algorithm choice. The performance advantage comes from XorIDA operating over GF(2) — bitwise XOR, the fastest mathematical operation on binary data. No modular arithmetic, no elliptic curve operations, no polynomial evaluation.

XorIDA Performance
At API-typical payloads (<1 KB), XorIDA splitting is 2–11x faster than AES-256-GCM. 64 bytes: 14µs vs 160µs (11.4x). 256 bytes: 35µs vs 122µs (3.5x). 1 KB: 58µs vs 140µs (2.4x). The crossover is ~1–2 KB. Most secrets (keys, credentials, passwords, codes) fall well below this threshold.
Section 06

ACI Surface

Six functions compose the complete Deaddrop lifecycle. Every function returns a Result<T, E> — no thrown exceptions.

createDrop(secret: Uint8Array, config: DropConfig): Result<Drop, DropError>
Serializes, pads, HMAC-tags, XorIDA-splits, xFormat-wraps, and Base45-encodes a secret into K-of-N shares. Returns a Drop containing the drop ID, threshold parameters, TTL, and an array of encoded shares ready for distribution. The original secret is purged from memory after splitting.
collectShare(dropId: string, shareData: string): Result<CollectResult, CollectError>
Decodes a Base45 share, unwraps the xFormat envelope, validates the drop ID match, checks TTL expiry, verifies the share index is in range, and stores the share for later reconstruction. Returns the current collection count and whether the threshold is met.
reconstructDrop(shares: Share[]): Result<Uint8Array, ReconstructError>
Validates that at least K shares are present with matching drop IDs, verifies all HMAC tags, reconstructs via XorIDA, unpads, and returns the original secret as a Uint8Array. Rejects tampered, expired, or insufficient shares before any reconstruction attempt.
verifyShare(share: Share): Result<boolean, VerifyError>
Validates a single share without reconstructing. Checks xFormat envelope integrity, HMAC tag, TTL expiry, index range, and magic header. Returns true if the share is valid and unexpired. Useful for pre-validation before committing to collection.
encodeShare(share: Share): Result<string, EncodeError>
Wraps a raw share in an xFormat binary envelope and Base45-encodes it for text-safe transport. Idempotent — encoding an already-encoded share returns it unchanged.
decodeShare(encoded: string): Result<Share, DecodeError>
Base45-decodes and unwraps an xFormat envelope to extract the raw share, index, threshold parameters, drop ID, and TTL metadata. Validates the IDA5 magic header and envelope structure.
Create and Distribute a Drop
import { createDrop, collectShare, reconstructDrop } from '@private.me/deaddrop';

// Split a secret into 2-of-3 shares
const secret = new TextEncoder().encode('TOP SECRET: launch codes alpha-7');
const drop = createDrop(secret, {
  threshold: 2,
  shares: 3,
  ttl: 86_400_000, // 24 hours
});

// Distribute shares via independent channels
sendViaEmail(drop.value.encodedShares[0]);   // Share 1 → email
writeToUsb(drop.value.encodedShares[1]);     // Share 2 → USB drive
printAsQr(drop.value.encodedShares[2]);      // Share 3 → QR code

// Recipient collects any 2 shares to reconstruct
const collected = collectShare(drop.value.dropId, emailShare);
const collected2 = collectShare(drop.value.dropId, usbShare);

const result = reconstructDrop([collected.value.share, collected2.value.share]);
// result.value → Uint8Array identical to original secret
Section 07

Use Cases

Five verticals where threshold secret drops transform operational security from a process into a guarantee.

🕵
INTELLIGENCE
Dead Drops for Classified Material

Field operatives split classified intelligence across physical and digital channels. Share 1 via encrypted radio burst. Share 2 on a micro-SD card at a physical dead drop location. Share 3 via diplomatic pouch. No single interception — electronic or physical — yields actionable intelligence. 2-of-3 means the operation succeeds even if one channel is compromised or lost. Air-gapped environments operate without network connectivity.

Classified + Air-Gapped
📢
WHISTLEBLOWER
Anonymous Leak Channels

A source splits evidence across independent journalist contacts. Each journalist receives one share. No single journalist holds enough to reconstruct the evidence until the threshold is met. This prevents premature publication, creates editorial collaboration requirements, and provides deniability to each individual share holder. The source identity is never encoded in the shares.

Deniability + Coordination
📦
SOFTWARE DELIVERY (ANTI-PIRACY)
Secure Software Update Distribution

Software vendors split update packages across independent delivery channels. Share 1 via CDN. Share 2 via direct download. Share 3 via customer portal. Prevents man-in-the-middle piracy and unauthorized modification of binaries. No single channel interception yields a usable build. 2-of-3 means delivery succeeds even if one CDN is compromised. HMAC verification before reconstruction ensures binary integrity.

Supply Chain Security
NUCLEAR COMMAND
Two-Person Integrity

Two-person integrity (TPI) for nuclear launch codes, weapons vault access, or critical infrastructure activation. 2-of-2 configuration ensures both authorized personnel must cooperate. No single individual can reconstruct. Shares are carried on separate physical tokens. Offline-only operation — no network dependency. Reconstruction verified by HMAC before any downstream action.

TPI + Zero Network
💼
CORPORATE M&A
Split Deal Terms Across Legal Teams

During a merger or acquisition, deal terms, valuations, and term sheets are split across the acquiring legal team, the target legal team, and a neutral escrow agent. No single party can leak the complete deal terms before closing. 2-of-3 reconstruction occurs only when both legal teams agree to proceed. TTL enforcement ensures deal terms expire if the transaction does not close within the negotiation window. Shares can be revoked (deleted) to abort the deal with mathematical certainty.

Deal Security + Escrow
Section 08

Regulatory Compliance

Threshold splitting maps directly to regulatory requirements across four frameworks. Each mapping is a structural guarantee, not a configuration option.

RegulationRequirementDeaddrop Capability
ITAR §120.17Technical data protection — prevent unauthorized exportThreshold split across jurisdictions — no single jurisdiction holds the complete secret. Cross-border seizure yields zero information.
GDPR Art. 17Right to erasure — data must be deletableDelete any (N-K+1) shares to make the secret mathematically irrecoverable. Erasure is provable, not just promissory.
SOX §802Document retention — tamper-evident custodyShares in separate custody with HMAC integrity. Each share is independently auditable. Reconstruction proves document was unmodified.
NIST 800-171CUI protection — controlled unclassified informationInformation-theoretic splitting ensures CUI is never whole outside of authorized reconstruction. Meets NIST 800-171 requirement 3.13.11 (cryptographic mechanisms).
EAR §734.2Export Administration Regulations — dual-use technology controlShares distributed across jurisdictions prevent unauthorized export of complete technical data. Each jurisdiction holds only an opaque fragment.

GDPR Right to Erasure: Mathematical Proof

Traditional systems answer "delete the data" by marking records in a database and trusting the operator to purge backups, caches, and replicas. This is a promissory guarantee — it depends on correct implementation and honest behavior at every layer.

Deaddrop provides a mathematical guarantee. With a 2-of-3 configuration, deleting any 2 shares makes the secret information-theoretically irrecoverable. No amount of computation — classical, quantum, or future — can recover the secret from a single remaining share. The erasure is not a policy. It is a theorem.

Section 09

Cross-ACI Composition

Deaddrop composes with four ACIs to form a complete secret distribution infrastructure. Each integration is additive — Deaddrop works standalone, and each composition unlocks new capabilities.

XLINK + DEADDROP
xLink provides agent-to-agent authenticated messaging with Ed25519 + X25519 cryptography. Combined with Deaddrop, shares can be delivered through authenticated xLink channels with sender verification. Each share is signed by the sender's DID before distribution, ensuring the recipient can verify share authenticity before collection. Agent-mediated secret drops with cryptographic sender identity.
XSTORE + DEADDROP
xStore provides a universal split-storage layer with pluggable backends. Deaddrop shares can be persisted to xStore backends — Share 1 to S3, Share 2 to Azure Blob, Share 3 to an air-gapped volume. Multi-cloud, multi-jurisdiction storage with zero changes to Deaddrop code. xStore handles where. Deaddrop handles what.
XID + DEADDROP
xID provides unlinkable digital identity with ephemeral DIDs. Before delivering a share, verify the recipient's identity through xID's per-verifier ephemeral DID system. The recipient proves identity without revealing a persistent identifier. Identity-verified share delivery without creating a correlation handle.
XPROVE + DEADDROP
xProve chains integrity artifacts into verifiable audit trails. Deaddrop's HMAC tags, split metadata, collection timestamps, and reconstruction events feed into xProve's verification pipeline. Cryptographic proof that a share was delivered, collected, and reconstructed correctly — without revealing the secret. For SOX custody chains and ITAR transfer records, this provides court-admissible evidence of correct handling.

Composition Patterns

Each cross-ACI integration follows the same pattern: Deaddrop handles the split/reconstruct lifecycle, and the composed ACI handles one orthogonal concern (transport, storage, identity, or audit). Integrations are opt-in — Deaddrop works standalone without any of these ACIs. When composed, the combined system inherits the security properties of both layers.

CompositionDeaddrop ProvidesPartner ACI Provides
xLink + DeaddropThreshold splitting + integrityAuthenticated transport + sender identity
xStore + DeaddropShare creation + lifecycleMulti-cloud persistent storage
xID + DeaddropShare delivery gatingRecipient identity verification
xProve + DeaddropOperation artifacts (HMAC, metadata)Verifiable audit chain
Section 10

Security Properties

Deaddrop enforces seven security properties by construction. Every property is tested and independently verifiable.

PropertyMechanismGuarantee
Zero TrustNo central server; shares distributed across independent channelsNo single entity ever holds the complete secret at any point
Information-Theoretic SecurityXorIDA threshold sharing over GF(2)K-1 shares reveal exactly 0 bits about the secret — unconditionally
Forward SecrecyEphemeral shares with TTL expiryExpired shares are invalid; future compromise cannot recover past secrets
Quantum-SafeNo keys, no algorithms to break — IT-secure by constructionNo quantum computer can extract information from fewer than K shares
IntegrityHMAC-SHA256 verified before reconstructionTampered shares are rejected before any XorIDA operation occurs
Provable ErasureDelete (N-K+1) shares to destroy the secretErasure is mathematically provable, not dependent on server compliance
Offline CapabilityPure client-side operations, no network dependencySplit, distribute, collect, and reconstruct without any server or connectivity

HMAC-First Verification

The integrity verification order is critical and enforced at the code level. When shares arrive for reconstruction, the pipeline executes in strict sequence: (1) decode, (2) unwrap envelope, (3) validate metadata (drop ID, index, TTL), (4) verify HMAC-SHA256, (5) only then XorIDA reconstruct. If any step fails, the pipeline halts and returns a typed error. No partial reconstruction is ever attempted.

Fail-closed behavior: Any validation failure — expired TTL, mismatched drop ID, out-of-range index, failed HMAC — causes the entire reconstruction to fail with a specific error code. The system never produces a "best effort" result. Either the output is byte-identical to the original secret, or the operation fails completely.

Threat Model

ThreatDeaddrop Defense
Single channel compromiseAdversary obtains one share — learns zero information about the secret
K-1 channel compromiseAdversary obtains up to K-1 shares — still learns zero information (IT-secure)
Share tamperingHMAC-SHA256 detects modification before reconstruction; tampered shares rejected
Replay attackTTL expiry and drop ID uniqueness prevent share reuse across drops
Harvest-now-decrypt-laterNot applicable — no encryption to break. IT-security is eternal.
Insider threat (single custodian)No single custodian holds enough shares; requires K-way collusion
Server seizure / subpoenaNo server holds the secret or any shares (unless Enterprise CLI is used, in which case shares are distributed, not centralized)
Quantum adversaryIT-security is independent of computational assumptions; no algorithm to break

Traditional Secret Exchange vs. Deaddrop

DimensionTraditional (Encrypt + Send)Deaddrop (Split + Distribute)
Trust modelTrust the channel (TLS, Tor, E2EE)Trust the math — channels are untrusted by design
Single point of failureServer, relay, or endpoint holds complete secretNo single point holds the complete secret at any time
Offline operationMost require network connectivityFully offline — no server, no network dependency
Quantum resistanceDepends on key exchange algorithm (RSA, ECDH, Kyber)Information-theoretic — unconditionally secure regardless of computation
Erasure proofTrust the operator to delete all copiesDelete (N-K+1) shares — mathematically irrecoverable
Collusion resistanceSingle compromise exposes secretRequires K-way collusion across independent channels
VERIFIED BY XPROVE

Verifiable Secret Operations

Every Deaddrop operation — split, distribute, collect, reconstruct — produces integrity artifacts that xProve can chain into a verifiable audit trail. Prove that secrets were handled correctly without revealing the secrets themselves.

XPROVE DEADDROP AUDIT
Deaddrop's HMAC tags, split timestamps, collection records, TTL metadata, and reconstruction events feed directly into xProve's verification pipeline. For regulated secret exchange (ITAR transfers, SOX document custody, GDPR erasure proof), this provides cryptographic proof of correct secret handling — proof that the secret was split correctly, that shares were delivered to authorized channels, that collection occurred within the TTL window, and that reconstruction produced an unmodified payload. Upgrade to zero-knowledge proofs when auditors need public verification without data disclosure.

Read the xProve white paper →

What Gets Audited

EventRecorded ArtifactxProve Tier
Drop creationDrop ID, threshold (K,N), TTL, creation timestampT1 (HMAC chain)
Share distributionShare index, channel identifier (hashed), delivery timestampT1 (HMAC chain)
Share collectionShare index, collector identity (hashed), collection timestampT1 (HMAC chain)
ReconstructionDrop ID, shares used, reconstruction timestamp, HMAC verification resultT2 (commit-reveal)
Drop destructionDrop ID, shares destroyed, destruction timestampT1 (HMAC chain)
VERIFIABLE WITHOUT CODE EXPOSURE

Ship Proofs, Not Source

Deaddrop generates cryptographic proofs of correct execution without exposing proprietary algorithms. Verify integrity using zero-knowledge proofs — no source code required.

XPROVE CRYPTOGRAPHIC PROOF
Download proofs:

Verify proofs online →

Use Cases

🏛️
REGULATORY
FDA / SEC Submissions
Prove algorithm correctness for asynchronous delivery without exposing trade secrets or IP.
Zero IP Exposure
🏦
FINANCIAL
Audit Without Access
External auditors verify share deferred delivery without accessing source code or production systems.
FINRA / SOX Compliant
🛡️
DEFENSE
Classified Verification
Security clearance holders verify asynchronous delivery correctness without clearance for source code.
CMMC / NIST Ready
🏢
ENTERPRISE
Procurement Due Diligence
Prove security + correctness during RFP evaluation without NDA or code escrow.
No NDA Required
Section 12

Honest Limitations

Honest engineering requires honest documentation. Four known limitations with their mitigations.

LimitationImpactMitigation
Requires K channelsThe recipient must have access to K independent transport paths to collect enough shares for reconstruction.2-of-3 requires only 2 channels. Most scenarios have at least 2 independent paths (email + physical, email + chat, etc.).
No streamingThe full secret must fit in memory for splitting and reconstruction. Very large secrets (multi-GB) require chunking.Chunk large secrets into fixed-size blocks. Each chunk is an independent drop. Typical secret payloads (keys, credentials, codes, documents) are well within memory limits.
Base45 expansionBase45 encoding adds ~37% overhead compared to raw binary, making shares larger than the original secret.37% overhead is acceptable for security-critical payloads. Binary transport (USB, file) skips Base45 encoding entirely. The overhead applies only to text-safe channels.
Share custody burdenLost shares cannot be recovered. If more than (N-K) shares are lost, the secret is permanently irrecoverable.Use N > K for redundancy (2-of-3 tolerates 1 loss, 3-of-5 tolerates 2). Store custody instructions alongside shares. Multiple backup channels reduce loss risk.
No partial reconstructionEither K shares produce the exact original secret, or the operation fails entirely. There is no "degraded" or "approximate" mode.This is by design — partial reconstruction would violate information-theoretic security. The fail-closed behavior prevents silent data corruption.
Client-side TTL enforcementTTL expiry is enforced by compliant clients. A malicious client could ignore TTL and attempt reconstruction with expired shares.Expired shares are flagged in the xFormat envelope metadata. Enterprise deployments enforce TTL at the CLI server level. Defense-in-depth: combine TTL with physical share destruction policies.
Section 13

Enterprise CLI

@private.me/deaddrop-cli is a self-hosted secret drop management server — Docker-ready, air-gapped capable, with three-role RBAC, share lifecycle management, and append-only audit logging.

10
REST endpoints
3
RBAC roles
4000
Default port
Docker
Deployment

Endpoints

MethodPathPermissionDescription
GET/healthHealth check
POST/dropsdrop:createCreate a new drop (split secret)
GET/dropsdrop:listList active drops
GET/drops/:iddrop:readGet drop metadata (no shares)
POST/drops/:id/sharesshare:depositDeposit a share for collection
GET/drops/:id/shares/:shareIdshare:collectCollect a specific share
POST/drops/:id/reconstructdrop:reconstructReconstruct from collected shares
DELETE/drops/:iddrop:destroyDestroy drop and all shares
POST/shares/verifyshare:verifyVerify share integrity
GET/auditaudit:readAudit log entries

RBAC Roles

Admin — full access: create, destroy, reconstruct, deposit, collect, verify, audit. Full lifecycle control over all drops and shares.
Operator — create drops, deposit and collect shares, verify shares. Cannot destroy drops or read audit logs. Intended for field personnel handling share distribution.
Auditor — read-only: list drops, read metadata, read audit logs. Cannot create, destroy, or handle shares. Intended for compliance officers and security reviewers.

Air-Gapped Deployment

The CLI server operates without any external network dependency. All cryptographic operations are local. No DNS resolution, no certificate validation against external CAs, no telemetry. Deploy in SCIF environments, submarine networks, or any facility where outbound connectivity is prohibited. The Docker image includes all dependencies — no runtime package fetching.

SECRETS NEVER STORED
The server stores only share envelopes and metadata (drop ID, threshold, TTL, collection status). The server never holds the complete secret — by design, it never holds more than one share per drop (the deaddrop model distributes shares to separate custodians/channels). Reconstruction happens in memory per-request and the result is returned to the caller, not persisted. Share storage is purged on TTL expiry. Audit logs record operations but never record share content or reconstructed secrets.
Docker Deployment
docker build -t deaddrop-cli -f packages/deaddrop-cli/Dockerfile .
docker run -d --name deaddrop -p 4000:4000 \
  -v deaddrop-data:/data \
  -e DEADDROP_ADMIN_KEY=your-secret-key \
  deaddrop-cli
Section 14

Enhanced Identity with Xid

Deaddrop can optionally integrate with Xid to enable unlinkable anonymous sharing — verifiable within each transfer context, but uncorrelatable across drops, recipients, or time.

Three Identity Modes

Basic (Default)
Static Sender/Recipient DIDs
One DID per sender/recipient, persistent across all anonymous drops. Simple, but linkable — same identities can be tracked across transfers, recipients, and time.
Current Deaddrop behavior
Deaddrop+ (With Xid)
Ephemeral Per-Transfer DIDs
Each anonymous drop gets unique sender and recipient DIDs derived from XorIDA-split master seeds. DIDs are unlinkable across transfers and rotate per epoch. Verifiable within drop context, but cross-transfer correlation is impossible. ~50µs overhead per share.
Cross-transfer unlinkable
Deaddrop Enterprise
K-of-N High-Assurance Anonymous Identity
Require 3-of-5 signals (biometric + device TPM + location + time + YubiKey) to authorize anonymous disclosure. IAL2/3 assurance levels for whistleblowing, classified leaks, or sensitive legal disclosures. Continuous refresh ensures only authorized sources can initiate drops.
IAL2/3 compliance

How Ephemeral Anonymous Sharing Works

Anonymous Drop Workflow (Deaddrop+ with Xid)
// Initialize Deaddrop with Xid integration
import { DeaddropClient } from '@private.me/deaddrop-cli';
import { XidClient } from '@private.me/xid';

const xid = new XidClient({ mode: 'ephemeral' });
const drop = new DeaddropClient({ identityProvider: xid });

// Each transfer derives unlinkable DIDs automatically
const receipt = await drop.send({
  payload: sensitiveDocument,
  recipient: 'whistleblower-hotline'
});
  → [Deaddrop] Deriving ephemeral sender DID from master seed...
  → [Deaddrop] Sender DID: did:key:z6MkE... (unique to this drop + epoch)
  → [Deaddrop] Deriving ephemeral recipient DID...
  → [Deaddrop] Recipient DID: did:key:z6MkF... (unique to this drop + epoch)
  → [Deaddrop] XorIDA split with ephemeral identities (~50µs)

// Transfer is anonymous with unlinkable DIDs
// Verification works within drop, but cross-transfer correlation fails
Integration Pattern
Deaddrop+ is not a new ACI — it's an integration of two existing ACIs (Deaddrop + Xid). This demonstrates ACI composability — building blocks combine to create enhanced capabilities without requiring new primitives.

See the Xid white paper for details on ephemeral identity primitives and K-of-N convergence.

Market Positioning

Industry Use Case Compliance Driver
Whistleblowing Anonymous disclosure with IAL3 source verification SOX, Dodd-Frank, EU Whistleblowing Directive
Journalism Source protection with unlinkable submission patterns Shield laws, First Amendment, GDPR
Legal Sensitive disclosure with attorney-client privilege ABA Model Rules, work product doctrine
Healthcare Anonymous adverse event reporting with HIPAA compliance HIPAA, 42 CFR Part 2, FDA 21 CFR 803

Key Benefits

  • Cross-transfer unlinkability — Can't track senders across multiple drops
  • Per-drop derivation — Same sender has different DIDs per transfer
  • Epoch rotation — DIDs automatically rotate daily/weekly/monthly
  • Split-protected derivation — Master seed is XorIDA-split, never reconstructed
  • Verifiable anonymity — Prove source authenticity without revealing identity
  • Regulatory compliance — Meets whistleblower protection requirements
Section 15

Get Started

Install Deaddrop, split your first secret, and distribute shares across channels — all in a few lines of code.

Install
npm install @private.me/deaddrop

Requirements

Runtime: Node.js 18+ or any environment supporting Web Crypto API (crypto.getRandomValues). Browser, Deno, Bun, and Cloudflare Workers all supported. No native addons, no WASM, no platform-specific binaries.

Dependencies: Zero runtime dependencies. XorIDA threshold sharing, HMAC-SHA256, PKCS7 padding, xFormat envelope, and Base45 encoding are all implemented internally. No third-party cryptographic libraries. Supply chain attack surface: zero.

TypeScript: Full type definitions included. Strict mode compatible. Every function returns Result<T, E> for explicit error handling without exceptions. No any types. All error variants are enumerated and documented.

Bundle size: Under 15 KB gzipped. Suitable for edge deployment, serverless functions, and mobile applications where bundle size matters.

Quick Start — Threshold Secret Drop
import {
  createDrop,
  collectShare,
  reconstructDrop,
  verifyShare,
} from '@private.me/deaddrop';

// 1. Create a 2-of-3 drop
const secret = new TextEncoder().encode('CLASSIFIED: operation nightfall');
const drop = createDrop(secret, {
  threshold: 2,
  shares: 3,
  ttl: 3_600_000, // 1 hour
});

// 2. Distribute shares via independent channels
const [share1, share2, share3] = drop.value.encodedShares;
// share1 → email channel A
// share2 → USB dead drop
// share3 → QR code (redundancy)

// 3. Verify a share before collecting
const valid = verifyShare(decodedShare);
// valid.value → true (integrity + TTL + index OK)

// 4. Collect any 2 shares and reconstruct
const result = reconstructDrop([shareA, shareB]);
// result.value → Uint8Array identical to original
const plaintext = new TextDecoder().decode(result.value);
// "CLASSIFIED: operation nightfall"
GET STARTED

Ready to deploy Deaddrop?

Talk to Sol, our AI platform engineer, or book a live demo with our team.

Book a Demo

Deployment Options

🌐

SaaS Recommended

Fully managed infrastructure. Call our REST API, we handle scaling, updates, and operations.

  • Zero infrastructure setup
  • Automatic updates
  • 99.9% uptime SLA
  • Pay per use
View Pricing →
📦

SDK Integration

Embed directly in your application. Runs in your codebase with full programmatic control.

  • npm install @private.me/deaddrop
  • TypeScript/JavaScript SDK
  • Full source access
  • Enterprise support available
Get Started →
🏢

On-Premise Enterprise

Self-hosted infrastructure for air-gapped, compliance, or data residency requirements.

  • Complete data sovereignty
  • Air-gap capable
  • Docker + Kubernetes ready
  • RBAC + audit logs included
Enterprise CLI →