Back to home

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

  1. 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.

  2. 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

  3. 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.

PurposeAlgorithmStandard
Your key pairX25519 (Curve25519 ECDH)RFC 7748
Encrypting each resultAES-256-GCM, wrapped as a JWERFC 7516
Key agreement inside the JWEECDH-ES over X25519RFC 8037
Recovery phrase & passwordPBKDF2-HMAC-SHA256, 600,000 iterationsRFC 8018
Recovery phrase format12-word BIP-39 mnemonicBIP-39
Unlocking with a passkeyWebAuthn PRF extension + HKDFWebAuthn L3
Keeping the key on your deviceNon-extractable Web Crypto keyWeb Crypto API