blue_ghost logo

blue_ghost

features

Two Versions. One Protocol.

blue_ghost
Free — always

The full encrypted messenger. Every security feature, every core communication tool, and the complete cryptographic stack — no cost, no ads, no accounts, no limits on what matters.

blue_ghost+
Paid — unlocks everything

Everything in blue_ghost, plus group sessions, live polls, a custom theme editor, Ghost Notes encrypted notepad, and broadcast descriptions.

Core
📡
Bluetooth-Only Messaging

All communication runs exclusively over Bluetooth Low Energy — direct, device-to-device, with zero internet or Wi-Fi involvement. The app holds no INTERNET permission and cannot open a network socket under any condition.

🔒
End-to-End Encryption — Double Ratchet + AES-256-GCM

Every message is encrypted with a unique key derived from a Double Ratchet state machine. An ephemeral ECDH (P-256) handshake seeds the ratchet via HKDF-SHA256. Message keys are deleted immediately after use — no two messages ever share a key.

🔑
Hardware-Backed Identity Keys

Your long-term identity is a P-256 keypair generated inside Android's Trusted Execution Environment via the Keystore API. The private key is non-exportable and never touches the JVM heap — it cannot be extracted even if the OS is compromised.

Forward Secrecy & Break-In Recovery

The symmetric ratchet advances on every message, deleting each key after use. The DH ratchet advances whenever you reply after receiving, re-deriving the root key from a fresh ECDH output. Past messages stay safe even if current state is compromised, and future messages recover automatically after a breach.

🛡️
Replay & Injection Protection

Monotonically increasing sequence numbers are authenticated into every GCM tag via AAD. A 1,024-message sliding window bitmap rejects any duplicate or out-of-window sequence. Tampered, replayed, reordered, or injected packets fail authentication before decryption is attempted.

👻
No Accounts — No Identity

No phone numbers, no usernames, no email, no registration of any kind. A display name is a local label only — it is never used to persistently identify you or cross-reference sessions.

📵
FLAG_SECURE — OS-Level Screen Protection

The FLAG_SECURE window flag is always active. Android's OS blocks all screenshots, screen recordings, and recent-app thumbnails at the system level. No third-party detection logic is needed or used.

Security
🔢
Session Verification — Safety Number

A SHA-256 fingerprint derived from both peers' identity public keys, displayed as 12 groups of 5 digits. If both sides read matching numbers aloud, the session is cryptographically authentic — no man-in-the-middle is present. Uses the same approach as Signal.

🔐
PIN-Protected Sessions

Set an optional PIN that must match during the handshake before a session is established. Peers without the correct PIN are rejected at the protocol layer before any encryption state is created.

🗑️
Secure Message Erase

Any message can be erased from both devices simultaneously. Erase requests are cryptographically signed with your identity key — the peer verifies the signature before honouring the deletion. Forged erase requests are rejected.

⚗️
Seal Ceremony — Secure Session Teardown

When a session ends, a mutual ritual destroys all cryptographic material: root key, send/receive chain keys, every cached skipped message key, all ratchet state, and the full message history. Nothing survives a session end.

⏱️
Inactivity Timeout

Configurable auto-seal trigger. A slider lets you set anywhere from 1 to 60 minutes of inactivity before the session is automatically torn down, or disable it entirely. On timeout, the full Seal Ceremony runs — keys and history are wiped.

🌱
Hardware Sensor Entropy

Accelerometer, gyroscope, and other hardware sensors contribute additional entropy during key generation. Sensors are active only during the scan and handshake windows — never during idle or active chat — to keep battery usage minimal.

⚠️
Root Detection

Runs asynchronously on launch and warns if the host device appears to be rooted. Detection uses file-path checks only and never blocks the UI or adds latency to the startup path.

🔔
Notification Security Levels

Three levels selectable from a picker dialog. Secret: hidden entirely on the lock screen with a lock icon only. Private: visible when unlocked, redacted on the lock screen. None: no notifications at all. Message content is never shown in any notification.

Communication
✍️
Typing Indicators

Named typing events are broadcast as control signals. In group sessions the indicator shows each specific member's name, not just a generic "someone is typing" message.

🕶️
Message Privacy Mode

Obscures all message content on screen until you hold down on a message. Toggled from the chat menu — useful in environments where someone might look over your shoulder.

📝
Encrypted Draft Saving

Unsent message drafts are saved per-peer using AES-256-GCM encryption backed by Android Keystore. Drafts persist between app launches but are never stored in plaintext and never leave the device.

Expressive
🎲
Mini-Games — Dice, Coin Flip, Rock Paper Scissors

Three in-chat games with a cryptographic commit-reveal anti-cheat scheme. The initiator commits a SHA-256 hash of their value and a random nonce before the peer accepts — neither side can change their result after seeing the other's move. All game events (sent, accepted, declined, cancelled, result) appear as system messages in the chat log. For coin flip, the initiator picks heads or tails before sending the challenge.

🌈
Color Pulse

Send a full-screen color wash to your peer — 7 rainbow colors, each fading in and out over roughly one second. Group-aware: in a group session the pulse broadcasts to all connected peers simultaneously.

UX & Polish
🔬
Ratchet Console

A live diagnostic overlay showing real-time Double Ratchet state: current sequence numbers, key fingerprints, and DH ratchet step status — visible during an active session for anyone who wants to verify the cryptographic machinery directly.

🔑
Key Derivation Overlay

A per-message animation showing the ratchet derivation chain: rk → ck → mk → 🔒. Plays on every message send, making the cryptographic flow visible rather than invisible.

🌑
Grayscale Mode

Strips all color from the UI via a ColorMatrix filter. Zero per-frame cost. Toggled from the chat menu.

🔭
GUI Scale

A slider to adjust the interface scale, accommodating different device sizes and accessibility needs without requiring system-wide font changes.

Hide Timestamps

Toggle timestamp visibility on all message bubbles. When hidden, the chat log contains no time metadata whatsoever.

🌠
Constellation Avatar System

Each peer is represented by a unique procedurally generated constellation derived from a seed. Purely local and cosmetic — never used as identity data, never transmitted as anything other than a seed number.

🚀
Boot Screen & Foreground Service

An animated startup sequence runs while the BLE stack initialises. A silent foreground service with VISIBILITY_SECRET keeps active sessions alive when the app is backgrounded, and auto-terminates cleanly when the task is removed.

Feature Comparison

Feature blue_ghost blue_ghost+
BLE-only encrypted 1:1 chat
Double Ratchet + AES-256-GCM
Hardware-backed P-256 identity keys (TEE)
Forward secrecy & break-in recovery
Replay & injection protection
FLAG_SECURE screen protection
Safety Number session verification
PIN-protected sessions
Secure message erase (signed)
Seal Ceremony teardown
Inactivity timeout (1–60 min)
Hardware sensor entropy
Root detection
Notification security levels (3)
Typing indicators (named)
Message privacy mode
Encrypted draft saving (Keystore)
Mini-games (dice, coin flip, RPS)
Color pulse (7 colors)
Ratchet console
Key derivation overlay
Grayscale mode
GUI scale
Constellation avatar system
blue_ghost+ exclusive
Group sessions (hub-and-spoke)
Live polls (group)
Custom theme editor
Broadcast description (BLE)
Ghost Notes (encrypted notepad)

Get blue_ghost

Both versions are available on Google Play. blue_ghost is free, always. blue_ghost+ is a one-time purchase — no subscriptions.