Why sovereignFeaturesPricingvs SupabaseIndustriesBlogFAQContactSign inStart free
WattleDB  /  Encryption demo

We store it. We still can't read it.

Encrypt personal data inside your own trust domain. WattleDB only ever receives ciphertext and blind-index hashes, so our staff, our servers, our backups, and any subpoena we're served all see gibberish. You can still search it. Try it below, nothing you type leaves this browser.

๐Ÿ”‘ Your key is generated in this browser and never sent anywhere. It stands in for the key that, in production, lives in your infrastructure, not ours.
โ‘  Your app YOUR TRUST DOMAIN

A clinic saving a patient. Red fields are personal data, encrypted before they leave. Green fields are non-sensitive and stay readable so your app still works normally.

โ‘ก What crosses the wire to WattleDB WE SEE THIS

The exact payload sent to the database. Personal fields are ciphertext; searchable ones also carry a one-way blind-index hash. Non-sensitive fields are plaintext.

// Fill the form and hit "Encrypt & save" to see the payload.
โ‘ข What WattleDB actually stores OUR DATABASE
idname_encname_bidxemail_encemail_bidxdob_encmedicare_encappt_typestatus

This is the raw table. Toggle "What you see" to decrypt it in your browser, the only place the key exists. A WattleDB engineer, a stolen backup, or a warrant served on us gets the left view.

โ‘ฃ Search encrypted data, server-side, without ever decrypting it

A support agent looks someone up by email or name. Your app hashes the search term into a blind index; the database matches on the hash. WattleDB runs the WHERE and never sees the plaintext term or the result.

// Run a search to see the blind-index lookup.

Equality match only, this is the honest limit of the free tier's blind index. "sarah" will not match "sarah.nguyen@โ€ฆ"; the whole value must match. Prefix/substring search is a separate, paid capability.

What this demo is. It runs the same cryptographic construction WattleDB's encryption uses, AES-256-GCM to encrypt each field and HMAC-SHA256 for the blind index, live in your browser via the Web Crypto API. The key is generated here and never transmitted. In production the crypto runs in a component inside your infrastructure (an Acra encryption proxy you run, or our SDK in your backend), and WattleDB's Postgres stores exactly what you see in panel โ‘ข. This is a demonstration of the mechanism, not a live connection to a WattleDB database.

Where the key lives is the whole point

Encryption only means "the provider can't read it" if the provider never holds the key. So the crypto happens in your trust domain, and we only ever receive the output:

[ YOUR TRUST DOMAIN ] [ WATTLEDB ] your app โ”€โ”€โ–ถ encryption proxy / SDK โ”€โ”€โ”€โ”€ ciphertext + โ”€โ”€โ–ถ Postgres โ”‚ blind index (stores holds the key only this) (we never see it) search term โ”€โ”€โ–ถ hash to blind index โ”€โ”€โ”€โ”€ WHERE bidx = โ€ฆ โ”€โ”€โ–ถ matches on hash result โ—€โ”€โ”€ decrypt with key โ—€โ”€โ”€โ”€โ”€โ”€โ”€ ciphertext โ—€โ”€โ”€โ”€โ”€ returns ciphertext

Because the key sits on your side, there is no configuration, insider, backup, or legal order that lets WattleDB turn the ciphertext back into a name. That is the difference between encryption at rest (we hold the key, so we can read it) and this.

What this does and doesn't protect

โœ… Protects against us

WattleDB staff, a server compromise, a stolen backup, and a subpoena served on WattleDB all see only ciphertext and hashes. We cannot produce your customers' PII because we do not hold the key.

โœ… Still searchable

Exact-match lookups (by email, by name) work server-side through blind indexes, so support tools and login flows keep working without decrypting the whole table.

โš ๏ธ You hold the key, and the risk

If you lose the key, the data is gone, permanently. There is no recovery, by design. Key custody becomes your most important operational responsibility.

โš ๏ธ Not every field, not every query

Blind indexes do equality only (no LIKE/range in the free tier), and low-cardinality fields (e.g. a yes/no) can leak through frequency. You choose which fields to encrypt and which stay plaintext for querying.

Sovereign hosting and a provider that can't read your PII

Australian-owned, Australian-hosted managed Postgres, with opt-in client-held encryption for the fields that matter most. Available on higher plans.

Talk to us about encryption →