Cryptography
Key transparency
What stops the server from quietly swapping your friend’s key for its own and reading everything? A public, tamper-evident receipt book that your app checks automatically.
A dishonest server could hand you the wrong key for your friend and sit in the middle. Privex stops this by keeping a public receipt book of every key ever published. Your app checks it every time: a swapped key either shows up in the book (and you get an alert) or isn’t there (and your app refuses it).
Every registration and prekey rotation is committed to an append-only Merkle log. When a client fetches a peer’s bundle, it verifies a Merkle inclusion proof against a root signed under a pinned key — and it recomputes the leaf from the received key fields rather than trusting the server’s. Any substitution is detectable; a missing entry is rejected.
What it defeats
Server substitutes your friend’s key with one it controls.
The swapped key must appear in the public book — where your friend’s app spots it — or it isn’t there and your app refuses it.
A substituted key must be in the log (equivocation is detectable via the signed root) or absent (inclusion proof fails → reject).
Server forges a valid-looking inclusion proof.
Your app rebuilds the receipt from the key it actually got — a fake can’t match.
Client recomputes the leaf from received fields and checks the root signature under a build-pinned key.