Security
The short version: your records are encrypted on your phone before anything is saved or sent, and we hold no key. This page explains how, and what it costs you.
How the encryption works
Your PIN is stretched with PBKDF2 (310,000 iterations) and used to wrap a random data key. The records are encrypted with that data key using AES-256-GCM. Changing your PIN re-wraps the key — 32 bytes — and never touches the records, which is why it is instant however large the vault.
What the server can see
| We hold | We do not hold |
|---|---|
| Your email address | Your name, or anyone's |
| Which plan you are on, and whether it is paid | Any medicine, condition, or test result |
| An encrypted blob, and roughly how big it is | Filenames, or how many records you have |
| When you last backed up | Your PIN, your recovery codes, or any key |
If this entire database were dumped tomorrow, what an attacker would get is a list of email addresses, some subscription states, and blobs they cannot open.
We refuse to hold your recovery code
This was proposed and rejected on 19 August 2026, and the refusal is permanent.
A recovery code opens the vault completely. Storing one on our servers would be the same thing as storing the key, and would put the locked box and its key in one database. Every claim on this page would become untrue the day we did it — so we do not, on any plan.
The cost of this, stated plainly. If you forget your PIN and lose both recovery codes, your records are gone. Not recoverable by support, not recoverable by us, not recoverable by a court order. That is the same property that makes them unreadable to everyone else.
Two codes, two people
At setup Prescryption prints two recovery codes and asks who will hold the second — a family member, a partner, someone who will still be reachable in ten years. Either code opens the vault on its own. One drawer catching fire should not cost you thirty years of records. Twice a year the app asks whether you can still find them, and either can be replaced without changing the other.
Where the servers are
Encrypted backups are stored in Mumbai, India (Supabase, ap-south-1). Access is enforced at the database with row-level security: a signed-in account can reach its own row and nothing else, which is a rule the database applies rather than something the app is trusted to remember.
What we have not built yet
Cloud backup is still in development, and this page describes the design it is being built to. Nothing has been shipped that contradicts it, and when backup does arrive, what leaves the device will be ciphertext or it will not leave.