1:1 Double-Ratchet-style
Messages carry the RCDR1 protocol: an initial X25519 ratchet step, then per-message keys from symmetric chains. Old keys can’t decrypt new traffic.
Services7 pages
Work & products4 pages
Play & try6 pages
Resources4 pages
About4 pages
Nothing matches that search.
01 Flagship project Under active development
Private by architecture, not by promise. An end-to-end encrypted messenger I’m building from the ground up — one Flutter codebase for Android, iOS, Windows and Linux, a NestJS backend, and a server that only ever stores ciphertext.
RCDR1:… press Send
Every send advances a symmetric ratchet, so every message gets a fresh key — watch it change. The demo uses WebCrypto (ECDH P-256 + HMAC chain + AES-GCM); Riddle Chat itself uses X25519 + ChaCha20-Poly1305.
Messages carry the RCDR1 protocol: an initial X25519 ratchet step, then per-message keys from symmetric chains. Old keys can’t decrypt new traffic.
Per-sender chains (GSS1) from a shared group key, wrapped per member. Adding, removing or leaving rotates the key for everyone.
Encrypted on the device with a per-file key, uploaded via presigned URLs to MinIO / S3. The key only travels inside the encrypted message.
Username and password — no email, no phone number. Argon2id on the server, password-derived keys on the client. No recovery, by design.
Socket.IO for messages, delivery and read receipts; short-lived JWT access tokens with refresh rotation.
Straight answer: it’s not Signal-class crypto yet. The threat model documents exactly what is shipped and what isn’t — that’s the list above.
06 Contact Open to full-stack roles · Dresden / remote