How the encryption works
Salubase uses zero-access encryption. A report is readable while it's being processed, but once its results are saved, only you can decrypt them.
In short
Encrypted after processing
Your results are encrypted as soon as your report is processed, before they're saved.
Only you hold the key
We can't decrypt your saved results, and a stolen copy of our database is no use without your recovery phrase, passkey or password.
No reset, by design
If you lose every way to unlock your key, we can't recover your results. That's what keeps them private.
What happens to your report
Processing
Our servers and an AI provider read your report to find your results. The file is deleted once its results are extracted, and the working copy once processing finishes.
Encryption
Each result is encrypted with your public key and saved. Only your private key can decrypt it, and we never receive that key in a usable form.
Terms: public-key encryption · X25519 · AES-256-GCM
Reading
When you open your results, your browser unlocks your private key and decrypts them on your device.
Terms: client-side decryption
Your key
Your browser creates your key pair when you set up encryption. It locks the private key before sending it to us, so we only ever store a locked copy.
Terms: key pair · key wrapping
Recovery phrase
Twelve words shown once, when you set up. Write them down and keep them offline. They work on any device, even without your passkey or password.
Terms: BIP-39
Passkey
Unlock with your device's fingerprint, face or PIN.
Terms: WebAuthn · PRF
Password (optional)
Make it strong, and different from your sign-in password: your sign-in password passes through our servers, but this one never leaves your device. A password is the only way in that someone with a stolen copy of our database could try to guess.
Terms: PBKDF2
If you lose all of them, your results can't be recovered. We don't keep any copy of your key that could restore access.
On a shared computer, sign out when you're done. Once unlocked, your key stays usable on that device until you sign out.
What we can see
Encryption covers your saved results: values, units, dates, ranges and the names printed on your report. A few things aren't covered yet, and we plan to cover each of them.
Reports while they're processed. Our servers and the AI provider read each report while finding its results (see our Terms). Anything that fails or needs your review stays readable until it's fixed, reprocessed or deleted.
Which tests you had. Each result is linked to a standard marker, such as Glucose, so your history can be grouped. That link isn't encrypted, and neither are each file's name, upload time and the fingerprint we use to spot duplicate uploads.
Failed marker samples. To fix what went wrong, we keep a copy of each failed marker: its name, units, reference range and the error, with the value replaced by a stand-in. It doesn't include your account, the date or the line with your result, and it stays after you delete your account.
Technical details
For the technically curious. These are open standards, and the protection doesn't depend on keeping them secret.
| Purpose | Algorithm | Standard |
|---|---|---|
| Your key pair | X25519 (Curve25519 ECDH) | RFC 7748 |
| Encrypting each result | AES-256-GCM, wrapped as a JWE | RFC 7516 |
| Key agreement inside the JWE | ECDH-ES over X25519 | RFC 8037 |
| Recovery phrase & password | PBKDF2-HMAC-SHA256, 600,000 iterations | RFC 8018 |
| Recovery phrase format | 12-word BIP-39 mnemonic | BIP-39 |
| Unlocking with a passkey | WebAuthn PRF extension + HKDF | WebAuthn L3 |
| Keeping the key on your device | Non-extractable Web Crypto key | Web Crypto API |