KUVRT

How KUVRT works: encryption and security design

KUVRT is an end-to-end encrypted messenger that runs in the browser. Keys are made on the device from a 24-word recovery phrase, and no phone number or email address is needed. Messages are encrypted per device with a hybrid of X25519 and ML-KEM-768 key agreement, a Double Ratchet and AES-256-GCM, and padded to fixed size classes. The server stores only sealed envelopes, deletes each one when it is delivered or after 45 days at the latest, and cannot read message contents. A public, append-only key log lets every app notice a swapped key, and every release is signed and recorded in that log before the app installs it. On the device, data is encrypted at rest, and with an app lock it opens only with a password stretched by Argon2id, a passkey or the recovery phrase. Connections use TLS 1.3 only.

Identity and keys

Your KUVRT is a set of keys made on your device. The server never receives a phone number, an email address or a name.

Messages

Every message is encrypted on the sending device for each device of the recipient and for the sender's own other devices, each pair of devices with its own session.

What the server stores

The server is a store-and-forward relay. It has no key that opens a message, a photo, a file or the identity card.

Key transparency

Every identity's public keys are recorded in a public, append-only key log, and every app checks that log by itself, so the apps notice a swapped key.

Signed releases and updates

Every release of the web app is signed and recorded in the public key log, and the app checks both before it installs an update.

Encryption on the device

Everything KUVRT stores in the browser is encrypted. With an app lock, the stored data opens only with the password, a passkey or the recovery phrase.

Transport

Every connection to KUVRT uses TLS 1.3, and older versions are refused.