Encrypt
Plaintext never leaves your device.
- AES-256-GCM in the browser, padded to size buckets
- Fresh key per record, split 2-of-3: device + two guardians
- Shares travel wrapped in hybrid post-quantum KEM
- Files go to Swarm under the same key scheme
Private data on a public chain
On Arkiv, deleteEntity only clears current state. Kalypso encrypts on your device, proves facts in zero knowledge, and makes deletion real by destroying the keys.
Live on Arkiv Rabdi · chain 7794095
What it does
Plaintext never leaves your device.
Use your data without showing it.
Delete the key, not the data.
A database on ciphertext.
How it works
Encrypt on device, commit, split the key, write ciphertext to Arkiv.
Generate a ZK proof over the commitment and publish it.
Anyone checks it from Arkiv in the browser. No keys.
All shares destroyed and signed. Receipt goes on-chain.
An archive node replays old calldata. Decryption fails.
Encrypted queries
Arkiv can't filter values it can't read, so we never ask it to. Each query compiles to equality checks on HMAC tags that Arkiv's own index answers. Measured live on Rabdi, with the same results as decrypting everything.
| Query | Arkiv alone, on ciphertext | With Kalypso |
|---|---|---|
| Range on an encrypted field | Download + decrypt all · 3,034 ms | 1 query · 497 ms |
| COUNT on an encrypted field | Decrypt every record | 1 count query · 0 rows |
| Children of 5 parents (JOIN) | 5 queries · 1,826 ms | 1 query · 389 ms |
| Insert patient + doctor + visit + lab | 4 txs, not atomic | 1 atomic tx |
| Delete a parent and its children | k+1 txs, found by scan | 1 tx, keys destroyed |
| Proofs of 45 records | 45 queries | 3 queries |
Arkiv Rabdi · chain 7794095