Docs

How SimXmil works, under the hood.

Getting started

Install SimXmil from Google Play or the official APK, verify your number with a one-time passcode, and choose a username. Your device generates a private identity key pair locally during setup — this key never leaves your device, even in plaintext backups.

Once you're signed in, start a conversation from the People tab, or create a group. Every conversation, whether 1:1 or group, is end-to-end encrypted from the first message.

Accounts & devices

Your SimXmil identity can be linked to multiple devices. Go to Settings → Device Management to see every device currently linked to your account and revoke access to any of them instantly. Linking a new device requires either scanning a link code from an already-authenticated device, or restoring from an encrypted backup with your passphrase.

To move to a new phone entirely, use Device Transfer, which securely migrates your identity and message history without ever writing an unencrypted copy to disk or to the server.

Encryption model

SimXmil uses a Signal-style protocol built from well-established primitives:

  • ECDH (P-256) for the initial key exchange between two identities.
  • Double Ratchet — a combined Diffie-Hellman ratchet and symmetric-key chain ratchet — so every single message is encrypted with its own unique key. Compromising one message's key does not expose any other message, past or future.
  • AES-256-GCM for authenticated symmetric encryption of message content and media.
  • Non-extractable key storage — private keys are generated and held in device-native secure storage where the platform supports it, and are never transmitted.

The server relays only ciphertext. It cannot read message content, and is architected so that even a full server compromise does not expose historical plaintext, because per-message keys are never stored server-side.

The Double Ratchet, formally

For readers who want the actual construction rather than the plain-English summary above, each ratchet step is an HMAC-based key derivation. Using RK for root key, CK for chain key, and MK for a one-time message key:

  • RK, CK = KDF_RK(RK, DH(dh_self, dh_remote)) — runs once per DH ratchet turn, mixing a fresh ECDH output into the root key.
  • CK, MK = KDF_CK(CK) — runs once per message, advancing the symmetric chain.
  • ciphertext = AEAD_Encrypt(MK, plaintext, associated_data) — using AES-256-GCM as the AEAD primitive, so the ciphertext is both encrypted and authenticated in one step.

Because KDF_CK is a one-way function, deriving CK and MK from a captured MK is computationally infeasible in reverse — this is what gives forward secrecy at the level of a single message rather than a whole session. A worked, plain-language version of this is also in the Double Ratchet blog post.

SymbolMeaning
RKRoot key — long-lived, seeded from the initial ECDH exchange
CKChain key — advances one-way with every message in a sending chain
MKMessage key — one-time, used once to seal a single message with AES-256-GCM
DH()Elliptic-curve Diffie-Hellman on P-256

Group cryptography

Group chats use per-member sender keys: each participant encrypts with their own sending key, which is individually wrapped and distributed to other members over their existing 1:1 encrypted sessions. Sender keys rotate as membership changes, so someone removed from a group cannot decrypt messages sent after they left.

Note: message reactions and read receipts are visible to the server at the same tier as delivery metadata — they are not part of the end-to-end ciphertext payload, the same way most modern messengers handle these light-weight signals.

Backups & export

Encrypted backups are protected client-side with a passphrase run through PBKDF2 at 250,000 rounds before it ever derives an encryption key. The unencrypted passphrase is never sent anywhere, and a lost passphrase means a lost backup — SimXmil has no way to recover it for you, by design.

Key verification

To rule out a man-in-the-middle, open a conversation's Key Verification screen and compare your safety number with your contact's, ideally over a separate channel (in person, or a voice call). If the numbers match, your session is confirmed end-to-end.

Privacy & field toolkit

Beyond messaging, SimXmil ships a built-in toolkit for people operating in higher-risk or field environments: EXIF and document metadata stripping, image steganography, a BLE tracker scanner, and a set of tactical utilities (compass, RF/EMF monitors, offline gazetteer, and more). See the full Features page for details on each.

Steganography internals

The steganography tool hides a secret — text or a small file — inside an ordinary-looking PNG using least-significant-bit (LSB) encoding, so the carrier image looks unchanged to the eye and to anyone who doesn't know a secret is present. The payload itself is never hidden in plaintext:

  • Your passphrase is run through PBKDF2WithHmacSHA256 at 120,000 iterations to derive a 256-bit key, using a random salt generated per-embed.
  • The payload is then sealed with AES/GCM/NoPadding (AES-256-GCM) before a single bit of it is written into the image's pixel data.
  • The result: even if someone suspects an image carries hidden data and extracts the raw bits, they still need the original passphrase to decrypt anything readable.

This is the same PBKDF2 + AES-256-GCM pairing used elsewhere in SimXmil's cryptography — the steganography tool doesn't invent a weaker, separate scheme just because the transport is an image file instead of the network.

FAQ

Is SimXmil free?

The core app is free. Optional paid plans exist for extended storage and advanced features; core end-to-end encryption is never gated behind a paywall.

Can SimXmil read my messages?

No. Message content is encrypted on your device before it is sent, using keys the server never has access to.

What happens if I lose my phone?

Revoke the lost device from another linked device via Device Management, or restore a fresh install from an encrypted backup on your new phone.

Does SimXmil work without an internet connection?

Messaging and calls require connectivity, but several field-toolkit utilities (offline gazetteer, compass, measure tool) are designed to keep working offline.

About the SimXmil name

SimXmil is the current name of the messenger previously developed and shipped under the name Guhya. The underlying account system, encryption, and server infrastructure are unchanged — this is a brand update, not a new product. If you see references to "Guhya" in older material, package identifiers, or support threads, they refer to the same application.

More in-depth guides (API reference, self-hosting notes, and protocol whitepaper) are on the way and will be added to this page.