LiveSecurity · Encrypted File Transfer

Web · libsodium · Cloudflare R2 · Streaming decryption · drop.inbox.locker

Locker Drop

Encrypt here. Share the link. Keep the key out of the upload.

Locker Drop encrypts file content in the browser before upload. A share link carries the decryption key in its URL fragment, which is not part of an ordinary HTTP request. The recipient decrypts on their device. The backend handles payment, storage, transfer metadata, and lifecycle management.

Locker Drop — image 1 of 1

Origin

How it started

Private mail and private file transfer share a difficult boundary: the interface has to be simple without hiding what the system can and cannot protect. Locker Drop makes that boundary tangible—encrypt on the sending device, keep the key out of the upload, and decrypt at the recipient.

Features

What it does

  • Authenticated streaming encryption

    libsodium secretstream uses XChaCha20-Poly1305 to encrypt in frames and detect modified ciphertext. Chunked processing avoids requiring an entire file to be decrypted in memory at once.

  • The key travels separately from the upload

    The browser generates the key. The share link places it after the #, outside the ordinary HTTP request. Anyone with the full usable link may be able to decrypt, so the link itself must be treated as sensitive.

  • Optional password protection

    Argon2id password derivation protects a wrapped key. Sharing the password through a separate channel gives the recipient another requirement beyond possession of the link.

  • Browser-side receiving

    The recipient path uses a service worker for streaming decryption into a download. The end-to-end experience depends on browser support and transfer conditions.

  • An honest lifecycle

    Expiry concerns hosted ciphertext and access through the service. It cannot erase a copy a recipient has already downloaded. Operational metadata is separate from encrypted file content.

Under the hood

Engineering

  • Standard primitives, observable failure

    The crypto integration uses libsodium rather than a custom cipher. Local tests exercise round trips, a changed byte, and wrong-password rejection. A 3,158,073-byte sample passed through four frames in the inspected test suite; that is a bounded test, not a promise about unlimited file sizes.

  • Keep encryption and service claims separate

    A passing cryptographic round trip does not prove production upload reliability, expiry behavior, cross-browser support, or the absence of every security flaw. The service also handles operational metadata; encrypted content is not the same as anonymity.

  • A proof you can touch

    The portfolio's browser experiment uses native Web Crypto AES-GCM to show authenticated encryption with a small predefined sample. It deliberately does not pretend to be Locker Drop's XChaCha20-Poly1305 transfer protocol or a production upload. Encrypt, recover the original, then change one byte and observe rejection.

Stack

  • Next.js · TypeScript
  • libsodium · XChaCha20-Poly1305 secretstream
  • Argon2id password wrapping
  • Cloudflare R2 · Multipart uploads
  • Service workers · Streaming decryption
  • Polar payments