VaporDrop

Security  Ephemeral encrypted messaging over Tor. Brain-key login, zero accounts, RAM-only storage. Non-NIST cryptography throughout.


What VaporDrop is

VaporDrop is an ephemeral secure drop system for messages and files. It has no accounts, no passwords, no registration. Identity is derived entirely from a phrase you remember — a brain key. Nothing is written to disk. Messages and files auto-expire after seven days and are gone.

The service is accessible exclusively via a Tor v3 onion address. There is no clearnet interface. The transport layer is handled entirely by Tor; the application layer adds end-to-end encryption on top.

VaporDrop is free software written in Go. Source: github.com/Virebent-do-ART/vapordrop.


Brain key: identity without credentials

Traditional authentication requires storing something: a password hash, a token, a certificate. VaporDrop stores nothing. Your identity is derived on the fly from words you provide.

How it works

6+ words (passphrase)
  ↓
Argon2id (memory-hard key derivation)
  ↓
X25519 keypair (asymmetric identity)
  ↓
Ed25519 keypair (signing identity)

The same phrase always produces the same keys. To recover your identity on a new device, type the same words. There is no account to recover, no email to verify, no backup file to protect.

Argon2id is deliberately memory-hard: brute-forcing the phrase requires significant RAM and time per attempt, not just CPU cycles. A passphrase of 6 or more uncommon words is sufficient.

The derived private key is never sent to the server. The server stores only your public key and the ciphertext of your messages — it cannot derive your identity or decrypt anything.


Cryptographic stack

Function Primitive Note
Key derivation Argon2id Memory-hard; brute-force resistant
Asymmetric identity X25519 ECDH key agreement; non-NIST
Message encryption XChaCha20-Poly1305 192-bit nonce; no IV reuse risk
Hashing / integrity BLAKE3 Fast, verified; non-NIST
Signing Ed25519 Message authenticity; non-NIST
Onion service key Ed25519 (VAPOR_KEY) Deterministic Tor hidden service identity

No NIST curves, no AES-GCM, no RSA. The entire stack runs on Bernstein/Aumasson primitives.


Architecture

VaporDrop runs inside Docker. The Go binary holds all session state in RAM. No database, no disk writes beyond the initial container image.

Client (Tor Browser)
  ↓  Tor v3 onion (transport encryption)
VaporDrop Go binary (RAM only)
  — receives encrypted message blob
  — verifies Ed25519 signature
  — stores ciphertext in memory map, keyed by numeric ID
  — auto-expires entries after 7 days
  ↓
Recipient (fetches by numeric ID or QR code)
  — decrypts with X25519 derived key

The server never holds a key that can decrypt the content. Messages are stored as ciphertext blobs. If the server is seized or restarted, all content is gone — there is no recovery path and no backup.


File transfer

VaporDrop supports encrypted file transfers up to 1 GB, chunked for reliable delivery over Tor. Files are treated identically to messages: encrypted before upload, stored as ciphertext, expired after seven days, shared by numeric ID or QR code.

No filename is stored. The recipient needs only the numeric ID and the brain key (or a shared secret) to retrieve and decrypt the file.


Expiration and deletion

  • 7-day TTL — all messages and files expire automatically. No manual deletion required.
  • Server restart — all content is lost immediately. RAM-only means no persistence across restarts.
  • No recovery — there is no recycle bin, no backup, no admin retrieval path. Expired means gone.
  • No logs — VaporDrop does not log access, IDs, or submission timestamps.

Access

VaporDrop is accessible only via Tor. Use Tor Browser to reach the onion address. No clearnet domain is planned.


Self-hosting

VaporDrop ships with a Docker Compose file. Build requirements: Docker, Go 1.21+.

git clone https://github.com/Virebent-do-ART/vapordrop
cd vapordrop
docker compose build
docker compose up -d

Set the VAPOR_KEY environment variable to a stable Ed25519 seed to get a deterministic Tor hidden service address across restarts. Without it, a new onion address is generated on each startup.

# generate a stable key seed (store this securely)
VAPOR_KEY=$(openssl rand -hex 32)
echo "VAPOR_KEY=$VAPOR_KEY" >> .env

Run as a non-privileged user. The container needs no capabilities beyond network access. Do not expose any port publicly — access is via the Tor hidden service only.


No account. No registration. Type your words, encrypt your message, share the ID. Seven days later it never existed.

Open VaporDrop (Tor) →    Source on GitHub →