Firedown Back
Security

How Cloud Backup works

Last reviewed: August 1, 2026

Your files are encrypted on your phone before they leave it. The server stores bytes it cannot decrypt — and metadata it can. Nothing able to read your files is ever transmitted.


01 We assume the server is compromised

Assume it is breached, seized, subpoenaed, or misconfigured by us. Your files stay unreadable in all four cases, because the server never holds anything that can decrypt them.


02 Your recovery code is the whole key

There is no account, no email, no password. Your phone generates a recovery code and derives every key from it locally.

The code is never transmitted — not on backup, not on restore, not when pairing a browser. We hold no copy and cannot produce one.

Lose the code and your backed-up files are gone. Not recoverable by you, not by us. There is no reset link — a reset link is what would let someone else in. Write it down.

03 What happens when you back up a file

  1. A fresh key is generated for that file alone. No single key unlocks the whole backup.
  2. The file is encrypted on your phone, in pieces. Each piece is bound to its position in that file, so pieces cannot be swapped, reordered or moved between files.
  3. The pieces upload straight to the storage provider. No server of ours ever sees anything readable.
  4. That key is locked with one derived from your recovery code and stored beside the file — useless without the code.
  5. The index — names, types, dates, previews — is encrypted as one block. We hold it and hand it back; we cannot open it.

Restore reverses this on your device. No key exists anywhere but your phone.

Encrypting on your device…
Name
Type
Size
428.6 MB — still visible
Saved
2 August 2026 — still visible

This is what leaves your phone. Name and type sit inside the encrypted index. Size and timestamp do not.


04 What we can and cannot see

Encryption hides content, not its existence.

We can see

  • How large each file is
  • How many files you have
  • When you backed them up or restored them
  • The IP address you connected from
  • How much storage credit you hold

We cannot see

  • File names
  • File contents
  • Thumbnails or previews
  • What type of file anything is
  • Which site a download came from
  • Anything you have not backed up
A stored record
ObjectSizeStored
a3f9c2…7e108,388,642 bytes2026-07-14 09:12
b71d04…9fa38,388,642 bytes2026-07-14 09:12
c0e5aa…12b82,104,331 bytes2026-07-14 09:13

That is the whole record: no name, no type. Sizes and timings are real signals, and encryption does not remove them.


05 Paying without being identified

Paying for storage normally creates a record tying a person to an account. This does not.

Credit is issued as an anonymous token via a blind signature: the payment system signs it without seeing what it signs. A payment can be verified as genuine but cannot be linked to the account that spends it. We could not produce that link if asked, because it is never created.

Card details go to the payment provider's own page and never reach us. Lightning involves no card processor.


06 Opening your backup in a browser

Scan a code with the app to open your backup on a computer. What travels is the storage keys, encrypted to that one browser session — not a login token, which could decrypt nothing.

Your recovery code never travels. A paired browser reaches your backed-up files and nothing else; it cannot re-derive the code, and the keys are erased when you sign out or close the tab.

Both screens show the same six digits before the keys are handed over. If they differ, choose They don't match.

Firedown never asks for your recovery code in a browser. No page of ours has a field for it. Any page that does is trying to take your files.

07 What this does not protect against


08 Check it yourself

Encryption, key derivation and the pairing handshake all run in the apps, not on the server. Every claim here can be checked from the client alone.

Where to look
FileWhat it does
sync/crypto/SyncIdentity.javaderives every key from the code
sync/crypto/VaultCrypto.javaper-file encryption
sync/crypto/BookmarkBlob.javathe encrypted index
sync/crypto/Canonical.javarequest signing
sync/crypto/PairSeal.javabrowser pairing
sync/crypto/BlindSignature.javaanonymous payment tokens

Read the source on GitHub, and see our Privacy Policy for what is stored and by whom.

Report security problems privately: see the SECURITY.md file in the app repository, or email [email protected].