Loren Lisk

A Pastebin That Can't Read Your Pastes

FlashPaper

FlashPaper is a zero-knowledge, self-destructing encrypted pastebin written in Go. It reimplements PrivateBin with full API compatibility, so existing PrivateBin clients work against it unchanged.

The FlashPaper editor in the light theme: an expiration picker, burn-after-reading and discussion checkboxes, an optional password field, a Send button and an empty text area.
Light theme
The same FlashPaper editor in the dark theme, with the theme toggle in the top right now offering Light.
Dark theme

How zero-knowledge works

The browser generates a random key and encrypts the paste with AES-256-GCM before anything leaves the page. The server only ever receives and stores ciphertext, plus the paste's settings (expiry, burn after reading, discussion). The key travels in the URL fragment, the part after #, which browsers never send to the server.

  Browser                                        Server
  -------                                        ------
  1. generate a random 256-bit key
  2. encrypt the paste (AES-256-GCM)
  3. POST ciphertext + settings  ------------->  store ciphertext
                                 <-------------  paste ID

  share link:  /?<paste ID>#<key>
               \__________/ \___/
               sent to the  stays in the browser,
               server       never sent

The AES key itself is derived from that random key with PBKDF2 (100,000 iterations). A password, if set, is mixed in before that step, so the link alone is not enough to open the paste. And since the server never receives the plaintext, it has no paste content to log.

Features

Engineering

Links

"If I had more time, I would have made this shorter."

Top Of Page