kryptoman kryptoman

Secure messages that never touch the network.

kryptoman is free, end-to-end encrypted messaging that talks in QR codes, not network packets. Two phones trade Double-Ratchet–encrypted messages by showing and scanning codes on screen — so the device holding your keys never needs a SIM, Wi-Fi, or Bluetooth. No servers. No accounts. No cloud.

offline-by-design double-ratchet x448 no-backend zero-javascript
see_it_in_action

A secure messenger, end to end.

Pick a contact, encrypt your message into a QR, and send it over any channel — it self-destructs after a single read.

The welcome screen
// offline secure messenger
Composing a message
// write a message
A message encrypted into a QR code
// it becomes a QR
The encrypted contact list
// your contacts
Pairing — an invite shown as a QR code
// pair by QR
A message counting down to self-destruct
// read once, then gone
how_it_works

Two codes to a private channel.

Pairing swaps two QR codes to build a secure channel. Show them face-to-face, or relay them over Signal / SMS — snap the code with a second, online phone. The key-holding device stays dark.

1

Pair

One of you creates an invite QR; the other scans it and shows a reply. You're now a cryptographic channel — no account, no phone number.

2

Write & encrypt

Type a message in any language. The app encrypts it end-to-end and renders the ciphertext as a QR code.

3

Show or relay

They scan it with the camera. Read once, then it's gone — decrypted, shown, and forgotten.

offline_by_design

The more offline it is, the safer it is.

It talks in QR, not over the air

Messages are shown on screen and scanned by the other party. The device with your keys can live in permanent airplane mode — no SIM, no Wi-Fi, no Bluetooth.

No servers, no accounts, no cloud

There is no backend. Nothing to hack remotely, nothing to subpoena, no central record of who talks to whom.

No radios, no exfiltration path

An air-gapped phone has no network route for malware to smuggle keys out — the way the toughest systems in the world are protected.

Post the ciphertext anywhere

Because messages are encrypted before they become a QR, you can relay them over WhatsApp, email, or in public. Security rests on the cryptography, not on trusting the channel.

message_security

Signal-grade cryptography, conservatively tuned.

The Double Ratchet

Every message uses a fresh key. Forward secrecy: a stolen key can't decrypt past messages. Post-compromise recovery: the conversation heals itself after a break-in.

A high-margin curve — X448

~224-bit security: a deliberately stronger choice than the common X25519.

Even the metadata is encrypted

Message headers — counters and ratchet keys — are encrypted too, not just the body.

Uniform message sizes

Messages are padded to a fixed size, so the QR doesn't betray how long your message was — resisting traffic analysis.

Conversations are never stored

Messages are decrypted, shown, and forgotten. There is no chat history on disk to seize or leak.

Self-destructing reads

A read message visibly counts down and erases itself — by default, gone in five minutes.

quantum_resistance

For the strongest possible guarantee, pair in private.

Today's cryptography already keeps your messages safe — this is about being future-proof even against a machine that doesn't exist yet. Here's exactly why it holds, and the one condition that makes it absolute.

The message layer is already quantum-safe

Every message is sealed with XChaCha20-Poly1305 (256-bit), keyed via HKDF-SHA-512. The best a quantum computer can do here — Grover's algorithm — merely halves symmetric strength: 256 bits down to 128, still astronomically out of reach. Nothing to change.

Exactly one vulnerable step: the pairing

The conversation's root key is derived from the X448 Diffie–Hellman exchanged in the two pairing QR codes. That elliptic-curve step is the only thing a quantum computer (Shor's algorithm) could break — and only if it has captured those public keys.

Everything after is derived forward, one-way

Each message key is folded out of the previous one by a one-way function rooted in that initial secret. The chain can't be run backwards, and can't be started without the root — so capturing later messages yields ciphertext, never keys.

Even the rotating keys are hidden

The ratchet's rotating public keys travel inside the message headers — and the headers themselves are encrypted under that same unseen root. A snooped QR doesn't even expose the public keys a quantum computer would need to attack.

The one condition: exchange the two pairing codes privately — screen to screen, never over a channel someone records. Then the root secret never lands in any capture, there is nothing for a future quantum computer to point Shor's algorithm at, and the conversation stays confidential indefinitely.
at_rest_security

If they take the phone, they get nothing.

Crypto-erase wipe

The database is sealed with a random key that is itself wrapped. Destroy that tiny wrapped key and the whole database is instantly, permanently unrecoverable.

Bound to your physical device

With a secure element (StrongBox / TEE), the vault is locked to that chip — so a stolen copy of the file can't be brute-forced on an attacker's hardware.

Optional device-unlock — a real 2nd factor

The secure element refuses to release the vault until you pass your phone's PIN/biometric in addition to the app PIN, with hardware rate-limiting it enforces itself.

A wipe counter that can't be cheated

After a few wrong PINs the vault self-destructs. The counter is signed by a non-extractable hardware key, so it can't be reset to keep guessing — tampering fails closed.

Panic wipe (duress)

A one-tap wipe right on the lock screen — no PIN needed. About to be seized? Destroy everything instantly. Rather lose your contacts than leak your secrets.

Your PIN never leaves the device

It's never stored or transmitted. Key material is scrubbed from memory after use, and the database is written atomically so a crash can't corrupt it.

the_phone_in_your_drawer

Give an old phone a second life.

Runs on retired hardware

Built for old, cheap, or forgotten Android phones (Android 6+). Turn a drawer phone into a dedicated secure messenger.

Honest about its limits

No secure element? You still get full message confidentiality — the app just tells you the at-rest protection is weaker and to keep the device physically safe. Confidentiality is constant; enforcement scales with the device.

built_to_be_trusted

Small enough to actually read.

A small, auditable core

The cryptography is a compact pure-Go library with no native glue — small enough to review end to end.

Reviewed, twice, adversarially

Two full independent security passes; every finding fixed and locked in with a regression test.

Every scanned byte is hostile

The only untrusted input is the camera. Parsers are bounds-checked and fail-closed — they never crash on a malformed or malicious QR.

Nothing phones home

No analytics, no trackers, no network calls — not in the app, and not even on this page. It runs zero JavaScript.

No magic words. We don't say "unhackable." kryptoman is a tool: strong, modern cryptography plus an air gap that protects the endpoint. Its strength scales with how carefully you run the device — and we tell you exactly where the limits are.
get_kryptoman

Free, on Google Play.

kryptoman is free — no subscription, no in-app purchases, no ads.

// a wylmi project