{"slug": "conversation-stenography-hide-secret-messages-in-normal-looking-conversations", "title": "Conversation Stenography: Hide secret messages in normal looking conversations", "summary": "A new open-source tool called Conversation Stenography lets users hide encrypted secret messages inside innocent-looking chat text generated by a local AI model, bypassing government surveillance of messaging apps. The proof-of-concept tool works with any messaging platform and encrypts messages so that only the intended recipient can decode them.", "body_md": "**Hide secret messages inside normal-looking chat text.**\n\nConversation Stenography lets two people have a completely private conversation through *any* messaging app (WhatsApp, Telegram, Signal, iMessage, email, or even Instagram DMs). Your secret messages are encrypted and then disguised as innocent, natural-sounding text generated by a local AI model. No one reading the chat can tell there's a hidden message.\n\n- Governments are moving toward scanning private messages\n- Sending normal encrypted messages is risky because it might flag you on basis of suspicioun\n- Today it's \"just CSAM.\" Tomorrow god knows what\n\nExample:You type`\"meet me at the coffee shop at 3pm\"`\n\nand Conversation Stenography generates something like`\"Hey, I was just thinking about that recipe you mentioned. It sounds amazing, especially the part about the fresh basil.\"`\n\nwhich is what gets sent in your chat app. Your friend's Conversation Stenography decodes it back to`\"meet me at the coffee shop at 3pm\"`\n\n.\n\n**Your actual messages never leave your device unencrypted.** The messaging platform only ever sees innocent cover text.\n\nCaution\n\n**Educational Use Only**\nThis project is provided for educational and research purposes. Engaging in any unauthorized or illegal activities is strictly prohibited. The creator assumes no liability for any misuse.\n\nWarning\n\nThis is a proof of concept and still has multiple issues\n\n```\n# Clone and build\ngit clone https://github.com/nethical/conversation-stenography.git\ncd conversation-stenography\ngo build -o conversation-stenography ./cmd/conversation-stenography\n./conversation-stenography\n```\n\nOn first run, Conversation Stenography walks you through everything:\n\n- Lets you pick an AI model (with recommendations for your system)\n- Downloads the model automatically\n- Creates your config file\n\nThat's it. You're ready to chat.\n\nYou do not need two computers or phones to verify that Conversation Stenography works. After setup, start a local two-person simulation:\n\n```\n./conversation-stenography simulate\n```\n\nEnter your shared secret phrase when prompted. The terminal starts as Alice:\n\n```\nAlice> Meet me outside at six.\n  Generating and transporting cover text...\n\n  Cover text (what the messaging app would see):\n  <innocent-looking generated message>\n\n  Bob decoded: Meet me outside at six.\n\nBob> That works for me.\n```\n\nEach turn uses two independent protocol participants. One generates the cover text and the other decodes it, then the prompt automatically switches users. This exercises the same encryption, model encoding, decoding, and conversation chain used between separate devices.\n\nSimulation commands:\n\n| Command | What it does |\n|---|---|\n`/switch` |\nSwitch the active user without sending |\n`/show` |\nShow the simulated plaintext conversation |\n`/help` |\nShow simulation help |\n`/quit` |\nExit; simulation state is not saved |\n\nNames and the test conversation can be customized:\n\n```\n./conversation-stenography simulate -user-a Alex -user-b Samir -conversation test-chat\n./conversation-stenography\n```\n\nThe tool prompts you for a conversation name and your name, then drops you into the chat:\n\n```\n  ┌─────────────────────────────────────┐\n  │        🔒  Secure Chat Active       │\n  └─────────────────────────────────────┘\n\n  Conversation:  coffee-plans\n  You are:       alex\n\n  HOW TO USE:\n  • Type a message and press Enter → generates cover text to copy\n  • /paste SENDER → paste a message you received from someone\n  • /help → see all commands\n  • /quit → save and exit\n\nalex>\n```\n\nJust type your secret message:\n\n```\nalex> Hey, can we meet tomorrow at noon?\n  ⏳ Generating cover text...\n\n  ┌─── COPY THIS into your messaging app ───┐\n\n  I was thinking about trying that new place downtown.\n  Have you been there before? I heard they have great pasta.\n\n  └─── END — send as alex ───────────────────┘\n```\n\nCopy the cover text and paste it into WhatsApp/Telegram/Signal.\n\nWhen your friend sends you a response through the messaging app:\n\n```\nalex> /paste bob\n  Paste the exact message received from bob below.\n  Then type /end on a new line when done:\n\nYeah the pasta place sounds great! My friend went last week\nand said the carbonara was incredible.\n/end\n\n  📩 Message from bob:\n  Sure, noon works! See you there.\nYour secret message\n        ↓\n   [AES encryption]\n        ↓\n   [AI model generates innocent text\n    that encodes the encrypted bytes\n    in its token choices]\n        ↓\nNormal-looking chat text  →  WhatsApp/Telegram/Signal  →  Friend's Conversation Stenography\n        ↓                                                       ↓\n   [AI model recovers                                   [Same process\n    the encrypted bytes                                  in reverse]\n    from token choices]                                        ↓\n        ↓                                              Your secret message\n   [AES decryption]\n        ↓\n  Original message\n```\n\n**Key security properties:**\n\n**AES-SIV encryption**— military-grade authenticated encryption** Conversation chain**— every message is cryptographically linked to the previous one; tampering, deletion, or reordering is detected** Local AI model**— the model runs entirely on your device, nothing is sent to the cloud** Shared secret phrase**— derived using PBKDF2 with 600,000 rounds; never stored on disk\n\nBoth people need the **exact same** configuration:\n\n-\n**Meet in person** and agree on:- A\n**secret phrase**(6+ random words, e.g.`\"purple elephant dances under crimson moonlight\"`\n\n) - A\n**conversation name**(e.g.`\"coffee-plans\"`\n\n) - The\n**same model**(e.g. both pick option 1 in the setup wizard)\n\n- A\n-\n**Each person runs:**\n\n```\n./conversation-stenography\n# Enter the same conversation name\n# Enter your own name\n# Enter the shared secret phrase when prompted\n```\n\n-\n**Exchange messages** through any messaging app — just copy/paste the cover text.\n\nImportant\n\nBoth people must process messages **in the exact same order** they appear in the messaging app. If you miss a message, use `/paste`\n\nto process it before sending your next reply.\n\n| Command | What it does |\n|---|---|\n`./conversation-stenography` |\nStart chatting (or first-run setup) |\n`./conversation-stenography setup` |\nRe-run the setup wizard |\n`./conversation-stenography simulate` |\nTest two independent users on one device |\n`./conversation-stenography conversations` |\nList your saved conversations |\n`./conversation-stenography chat -conversation NAME -me NAME` |\nStart with explicit flags |\n\n| Command | What it does |\n|---|---|\n(just type) |\nSend an encrypted message |\n`/paste NAME` |\nDecode a received message from NAME |\n`/send` |\nMulti-line message (end with `/end` ) |\n`/show` |\nShow conversation history |\n`/status` |\nShow sync info (useful for debugging) |\n`/help` |\nList all commands |\n`/quit` |\nSave and exit |\n\nThe setup wizard offers these models:\n\n| Model | Size | Runtime | Best for |\n|---|---|---|---|\nLlama 3.2 3B (4-bit) |\n~2 GB | MLX | Apple Silicon Macs (recommended) |\nLlama 3.2 1B (4-bit) |\n~1 GB | MLX | Apple Silicon (lightweight) |\nLlama 3.1 8B (4-bit) |\n~5 GB | MLX | Apple Silicon (best quality) |\nGPT-2 |\n~500 MB | Transformers | Any system |\nGPT-2 Medium |\n~1.5 GB | Transformers | Any system (better quality) |\n\n**Go 1.22+**(to build)** Python 3.9+**\n\nThe setup wizard creates an isolated virtual environment when necessary and\ninstalls `mlx-lm`\n\n(Apple Silicon) or `torch + transformers`\n\n(other systems),\nplus `huggingface-hub`\n\n. You do not need to install the `hf`\n\ncommand separately.\n\nFor automation and scripting:\n\n| Variable | Purpose |\n|---|---|\n`CONVERSATION_STENOGRAPHY_SECRET` |\nShared phrase (alternative to interactive prompt) |\n`CONVERSATION_STENOGRAPHY_KEY` |\nBase64 key (legacy, prefer `CONVERSATION_STENOGRAPHY_SECRET` ) |\n`CONVERSATION_STENOGRAPHY_CONFIG` |\nPath to config file (default: `conversation-stenography.local.json` ) |\n`CONVERSATION_STENOGRAPHY_MODEL` |\nOverride model path |\n`CONVERSATION_STENOGRAPHY_PYTHON` |\nOverride Python path |\n`CONVERSATION_STENOGRAPHY_RUNTIME` |\nOverride runtime (`mlx` or `transformers` ) |\n\nExisting installations can continue using `decalgo.local.json`\n\n,\n`~/.decalgo/conversations`\n\n, and `DECALGO_*`\n\nvariables while migrating. New\nfiles and documentation use the Conversation Stenography names.\n\nFor shell automation (e.g. bots, CI, automated relays):\n\n```\nexport CONVERSATION_STENOGRAPHY_SECRET='purple elephant dances under crimson moonlight'\n./conversation-stenography chat -conversation coffee-plans -me alex\n```\n\nFor programmatic multi-party message exchange:\n\n```\nexport CONVERSATION_STENOGRAPHY_KEY=\"$(openssl rand -base64 32)\"\n\n# Bob sends\nprintf 'hi alex' | ./conversation-stenography chain-send \\\n  -conversation friends -state bob.state -from bob > record-1.json\n\n# Alex receives\n./conversation-stenography chain-receive \\\n  -conversation friends -state alex.state < record-1.json\n```\n\n**Messages must be copied exactly.** No autocorrect, no formatting, no smart quotes. Copy and paste the cover text byte-for-byte.**Process messages in order.** Both people must paste received messages in the exact order they appear in the messaging app.**Same model required.** Both people must use the same AI model, same version, same settings. The setup wizard handles this.**The secret phrase is never stored.** You'll need to re-enter it each time you start Conversation Stenography (or set`CONVERSATION_STENOGRAPHY_SECRET`\n\n).\n\n- Messages are encrypted with\n**AES-SIV**(Synthetic Initialization Vector), which provides both confidentiality and integrity. - Every message is chained — each carrier authenticates the sender, conversation ID, message index, and the hash of all previous messages.\n- The shared phrase is stretched with\n**PBKDF2-HMAC-SHA-256**(600,000 iterations). - The AI model runs\n**100% locally**. No API calls, no cloud, no telemetry. - Conversation state is encrypted at rest with AES-GCM.\n\n```\ngit clone https://github.com/nethical6/conversation-stenography.git\ncd conversation-stenography\ngo build -o conversation-stenography ./cmd/conversation-stenography\ngo test ./...\n```\n\nSee [LICENSE](/nethical6/conversation-steganography/blob/main/LICENSE) for details.", "url": "https://wpnews.pro/news/conversation-stenography-hide-secret-messages-in-normal-looking-conversations", "canonical_source": "https://github.com/nethical6/conversation-steganography", "published_at": "2026-07-18 00:52:46+00:00", "updated_at": "2026-07-18 01:21:24.760359+00:00", "lang": "en", "topics": ["artificial-intelligence", "ai-safety", "ai-ethics", "ai-policy", "ai-tools"], "entities": ["Conversation Stenography", "WhatsApp", "Telegram", "Signal", "iMessage", "Instagram"], "alternates": {"html": "https://wpnews.pro/news/conversation-stenography-hide-secret-messages-in-normal-looking-conversations", "markdown": "https://wpnews.pro/news/conversation-stenography-hide-secret-messages-in-normal-looking-conversations.md", "text": "https://wpnews.pro/news/conversation-stenography-hide-secret-messages-in-normal-looking-conversations.txt", "jsonld": "https://wpnews.pro/news/conversation-stenography-hide-secret-messages-in-normal-looking-conversations.jsonld"}}