Security

What “we can’t read your notes” actually means

5 min read

Condei's Security settings on a Mac, listing the recovery code, the devices on the account and the app lock.
On this page

“We can’t read your notes” is a sentence that is easy to write and hard to check. This post says what it means in practice: what happens to a note on your device, what our server is left holding, and the cases where encryption does not help you.

We will be specific about the limits, because a promise with no edges is not worth much.

What happens on your device

Every note, tag, folder and attachment is encrypted on your device, with a key that was generated on your device. That key, the master key, is random. It is not derived from your password, and it is never sent to us in a form we can open.

Each time you save a note, Condei makes a fresh key for that one save, seals the note with it using XChaCha20-Poly1305, and wraps the fresh key under the master key. What leaves your device is the sealed note and the wrapped key. The title, the text, the tags and the folder a note sits in are all inside the sealed part.

Even the relationships between notes are inside it. Which tag a note carries, and which folder it is in, are stored as opaque identifiers within the encrypted payload, so our database has no column from which the structure of your notes could be rebuilt.

A note is sealed on the first device with a key that stays there; the server stores the sealed note; a second device that holds the key opens it. A note is written on your device and sealed with a key that stays there. Only sealed bytes travel to our server, which stores them without being able to read them. Your other device holds the key as well, so it opens the note. Your deviceSealed on yourdeviceFlight Thu 07:40,gate 22Key made here,stays hereOur serverStored, still sealed9f 3c e1 0a7b d4 52 c80e 91 a6 3fNo key hereStores: sealed note,wrapped keysYour other deviceOpened on yourdeviceFlight Thu 07:40,gate 22Holds the key,so it opens thenotesealedbytesonlysealedbytesonly Your deviceSealed on your deviceFlight Thu 07:40,gate 22Key made here, stays heresealed bytes onlyOur serverStored, still sealed9f 3c e1 0a7b d4 52 c80e 91 a6 3fNo key hereStores: sealed note, wrappedkeyssealed bytes onlyYour other deviceOpened on your deviceFlight Thu 07:40,gate 22Holds the key, so it opensthe note
One note, from your device to ours and on to your other device. Only sealed bytes travel.

Where the key lives

The master key is not stored anywhere as it is. It is stored as a set of wrapped copies, each one openable by exactly one thing you have or know: your account password if you set one, your recovery code, a key held inside your device's secure hardware, or a passkey where your authenticator supports it. Adding a way in adds a wrapped copy. Removing one deletes it.

Our server stores that set of wrapped copies, but it cannot open any of them. That is the whole design: the server is a relay and a store for things it cannot read.

The master key above four wrapped copies of it, opened by your password, your recovery code, your device’s secure hardware or a passkey. Our server stores the copies and cannot open any of them. The master key is stored only as wrapped copies. Your password, your recovery code, your device’s secure hardware and a passkey can each open one copy; the password and passkey copies exist only if you set them up. Our server holds the copies and cannot open any of them. Signing in proves who you are; it does not open the key. Master keyRandom. Made on your device.Never stored as it is.Opened by yourpassword (if youset one)Opened by yourrecovery codeOpened by a keyin your device’ssecure hardwareOpened by apasskey (whereyourauthenticatorsupports it)Our server stores these wrapped copies.It cannot open any of them.Signing in proves who you are. It does not open the key. Master keyRandom. Made on your device.Never stored as it is.Opened by yourpassword (if you setone)Opened by yourrecovery codeOpened by a key inyour device’s securehardwareOpened by a passkey(where yourauthenticatorsupports it)Our server stores thesewrapped copies. It cannot openany of them.Signing in proves who you are. Itdoes not open the key.
One master key, several wrapped copies, none of them openable by our server.

This is also why signing in and unlocking are different things. Signing in proves who you are. It does not produce the key. If Apple or Google were compromised and an attacker obtained a valid sign-in token for your account, they would get encrypted data and the account details listed below, not your notes.

What our server holds, and what it can see

Encryption hides what you write. It does not hide the shape of the container. Our privacy policy lists what we can see, and you can read it in full in section 4 of the privacy policy. In summary:

  • that you have an account, and which sign-in method it uses;
  • your email address, unless you use Apple's private relay;
  • how many notes you have, and roughly how large each one is;
  • when you last changed each note;
  • which devices are yours, when each was last seen, and approximately where you were at sign-in and sync time, from truncated network addresses;
  • which attachments belong to which note.

Sizes are padded before encryption, so we see an approximate length and not an exact one. A very long note is still visibly a long note.

The timestamps deserve a plain word. Over weeks, "when you last changed each note" adds up to a reliable picture of when you are awake, when you work and when you are away. We hold that, and we do not pretend otherwise.

What we do not see: titles, text, tags, folder names or which folder a note is in.

Two columns. What our server can see: your account, email address, devices, rough location, how many notes you have, their rough sizes, when you changed them and which attachments go with which note. What it cannot see: titles, text, tags and folders. Our server can see that you have an account and how you sign in, your email address unless you use Apple’s private relay, which devices are yours and when each was last seen, roughly where you are from truncated network addresses, how many notes you have, roughly how large each one is, when you last changed each note and which attachments belong to which note. It cannot see titles, text, tags, folder names or which folder a note is in. This is a summary; the full list is in section 4 of the privacy policy. Our server can seeThat you have an account, andhow you sign inYour email address (unless youuse Apple’s private relay)Which devices are yours, andwhen each was last seenRoughly where you are, fromtruncated network addressesHow many notes you haveRoughly how large each one is(padded)When you last changed each noteWhich attachments belong towhich noteOur server cannot seeTitlesTextTagsFolder names, or which folder anote is in Our server can seeThat you have an account, andhow you sign inYour email address (unless youuse Apple’s private relay)Which devices are yours, andwhen each was last seenRoughly where you are, fromtruncated network addressesHow many notes you haveRoughly how large each one is(padded)When you last changed eachnoteWhich attachments belong towhich noteOur server cannot seeTitlesTextTagsFolder names, or which folder anote is in
What the server can see, and what stays sealed. The full list is in section 4 of the privacy policy.

If our server were breached

Three cases follow from that design. An operator who looks at the database sees the metadata above and no note. A stolen database backup yields encrypted notes and wrapped keys. A read-only compromise of the host gives the same, plus live metadata. None of them has a key.

A stolen password is not enough either. Someone who phishes your sign-in password gets a session. To read notes they still need an approval from one of your devices, or your recovery code.

What encryption does not protect you from

A compromised device that is unlocked. While Condei is unlocked, your notes are readable on that device, so malware on it, or someone controlling it, can read them too. No end-to-end design survives that.

A phone in the wrong hands. The key is tied to your device and can be read only while the device itself is unlocked, so a locked or powered-off phone yields encrypted data. That also means the phone's own lock is what stands between a stranger and your notes. If they hold your unlocked phone and the app lock is off, which is the default, they can open Condei and read every note you have not individually locked. The app lock and per-note locking are yours to turn on.

Things you switch on that live outside Condei's encryption. If you turn on Show Notes in Spotlight on an Apple device, the titles and text of your notes sit in that device's own search index, protected by the device's passcode or Mac login and not by Condei's lock. A Home Screen widget can show note titles and short previews without unlocking Condei, unless you turn on Hide note contents.

The person you share with. A shared note is encrypted, and the people you share it with can read it. Removing someone stops their future access. It does not take back what they have already read or copied.

Sharing also has a metadata cost. We can see that a share exists, who is in it and in what role, and how often its members change it. We cannot see what a shared note says, or its name.

A future version of the app. End-to-end encryption is a property of the code running on your device. An app that could be built to leak your keys would defeat it, and no server design can prevent that. This is true of every end-to-end encrypted product, ours included.

A malicious version of our own server. We do not currently detect a server withholding or rolling back your items. We can see that risk and have not yet closed it.

So what is the promise

The promise is narrow and it is checkable. Nobody at Condei can read your notes, because we have never held a key that opens one. There is no database query, admin setting or identity check that produces a readable note. Support cannot recover notes for you either, which is the other side of the same fact.

The promise is not that we know nothing about you. It is that what we know is on a short list, and the list is in section 4 of the privacy policy. If you have a question about it, write to us at the address on the support page.