Ephemeral Post-Quantum Text Encryption Plugin for Mainstream Chats
Version 0.5.0 | Built with love and defiance | Privacy is a human right, not a feature
NoFuture-Memguard-PQ is a browser-based encryption tool that acts as an external cryptographic plugin for any instant messaging platform. You use it in one browser tab while your mainstream chat runs in another tab. Messages are encrypted locally in your browser, and only the ciphertext is transmitted through the untrusted mainstream channel.
Key Concept: Your plaintext and cryptographic keys never enter the mainstream chat application. The chat platform only sees encrypted data it cannot decrypt.
If NoFuture-Memguard-PQ were an official plugin integrated into WhatsApp, Telegram, or any mainstream platform, it would not be trustworthy because:
NoFuture-Memguard-PQ is completely separate from mainstream chat platforms:
| Component | Where It Lives | Who Controls It |
|---|---|---|
| Your private keys | NoFuture tab (protected RAM) | You (not the chat platform) |
| Plaintext messages | NoFuture tab (protected RAM) | You (not the chat platform) |
| Encryption/Decryption | NoFuture tab (client-side) | You (not the chat platform) |
| Ciphertext only | Mainstream chat tab | Chat platform (but it's useless to them) |
The security of NoFuture-Memguard-PQ is based on defense in depth, with multiple independent protection layers working simultaneously:
Memguard is a Go library for handling sensitive data in memory. It is the primary security mechanism protecting both your cryptographic keys and plaintext messages.
| Attack Vector | Memguard Protection |
|---|---|
| Memory dumps (even by root) | Data stored in encrypted memory pages outside the Go heap |
| Swap file analysis | mlock() system call prevents swapping to disk |
| Debugger attachment (gdb, lldb) | Memory is encrypted in RAM; debugger sees only ciphertext |
| Core dumps on crash | Automatic purge on crash via memguard.CatchInterrupt() |
| Garbage collector inspection | Sensitive buffers are off-heap, invisible to GC |
| Cold boot attacks | Memory wiped on process exit; no residual data |
While memguard protects data in memory, post-quantum cryptography protects data in transit and at rest against future quantum computer attacks.
| Layer | Purpose | Protection Against |
|---|---|---|
| Detached Architecture | Isolation from mainstream platforms | Backdoors, ChatControl, platform compromise |
| Authenticated Encryption (AEAD) | XChaCha20-Poly1305 | Tampering, bit-flipping, MITM attacks |
| Session Isolation | Unique keys per session | Cross-session attacks, replay attacks |
| Rate Limiting | 60 requests/minute per IP | Brute force, DoS attacks |
| Request Size Limits | Max 1MB per request | Memory exhaustion, DoS |
| Session Timeout | 24 hours max lifetime | Abandoned sessions, stale keys |
| Total Key Destruction | Secure wipe on session end | Forensic recovery, future access |
Usage Scenario: Alice wants to send a secure message to Bob using WhatsApp Web (or any chat platform).
Alice opens NoFuture-Memguard-PQ in a browser tab and clicks "Start New Session".
// What happens under the hood:
1. Generate Curve25519 key pair (32-byte private + public keys)
2. Generate random 24-byte nonce
3. Create Session ID = SHA256(publicKey + nonce)
4. Store all keys in memguard.LockedBuffer (encrypted RAM)
5. Return Session ID to Alice
Alice copies her Session ID and sends it to Bob via WhatsApp Web.
Bob also starts a session and gets his own Session ID. Both Alice and Bob paste each other's Session IDs into NoFuture-Memguard-PQ and click "Pair Sessions".
// What happens under the hood:
1. Alice's browser fetches Bob's public key via Session ID
2. Compute shared secret using NaCl box precomputation:
sharedSecret = box.Precompute(myPrivateKey, theirPublicKey)
3. Store sharedSecret in memguard.LockedBuffer
4. Sessions are now synchronized
No manual key exchange needed. The shared secret is derived automatically using Diffie-Hellman key exchange (Curve25519).
"Meet me at 3pm"memguard.LockedBuffer (protected RAM)memguard.LockedBufferWhen Alice or Bob clicks "End Session":
// What happens under the hood:
1. session.PrivateKey.Destroy() // Secure wipe
2. session.PublicKey.Destroy() // Secure wipe
3. session.SharedSecret.Destroy() // Secure wipe
4. session.Nonce.Destroy() // Secure wipe
5. Delete session from server memory
6. memguard.Purge() on process exit
One conversation. One key. One chance to read. No future access.
NoFuture-Memguard-PQ includes an optional on-screen virtual keyboard with a randomized layout to protect against local keyloggers and spyware.
| Threat | Virtual Keyboard Protection |
|---|---|
| Hardware keyloggers | No physical keyboard events generated |
Software keyloggers (reading /dev/input) |
Mouse clicks only; no keystroke events |
| Screen recording malware | Randomized layout changes each session (partial mitigation) |
- Go 1.21 or later
- Linux/macOS/Windows (memguard works on all platforms)
git clone https://github.com/yourusername/nofuture-memguard-pq.git
cd nofuture-memguard-pq
go mod download
go build -o nofuture main.go
./nofuture
Server starts on http://localhost:8080
http://localhost:8080 in one browser tab| Feature | WhatsApp E2EE | Signal | NoFuture-Memguard-PQ |
|---|---|---|---|
| Keys stored by provider | Backup keys (optional) | No | ❌ Never (detached) |
| Memory protection | Standard heap | Standard heap | ✅ Memguard (encrypted RAM) |
| Resistant to root access | No | No | ✅ Yes (mlock + encrypted buffers) |
| ChatControl/backdoor risk | Possible (integrated) | Possible (integrated) | ❌ Impossible (detached) |
| Post-quantum ready | No (ECDH) | No (X25519) | 🔄 Roadmap (Kyber/Dilithium) |
| Forward secrecy | Yes (Double Ratchet) | Yes (Double Ratchet) | ⚠️ Per-session only (v0.5) |
| Metadata protection | No | Partial (sealed sender) | ✅ Yes (mainstream sees only ciphertext) |
MIT License - Free and open source
This project is built with love and defiance. Contributions are welcome. Please:
For questions, feature requests, or security reports, open an issue on GitHub.
Built with love and defiance against mass surveillance.
Plugin di Crittografia Effimera Post-Quantum per Chat Mainstream
Versione 0.5.0 | Costruito con amore e sfida | La privacy è un diritto umano, non una funzionalità
NoFuture-Memguard-PQ è uno strumento di crittografia basato su browser che agisce come plugin crittografico esterno per qualsiasi piattaforma di messaggistica istantanea. Lo usi in una scheda del browser mentre la tua chat mainstream è aperta in un'altra scheda. I messaggi vengono cifrati localmente nel tuo browser e solo il testo cifrato viene trasmesso attraverso il canale mainstream non fidato.
Concetto Chiave: Il tuo testo in chiaro e le chiavi crittografiche non entrano mai nell'applicazione di chat mainstream. La piattaforma di chat vede solo dati cifrati che non può decifrare.
Se NoFuture-Memguard-PQ fosse un plugin ufficiale integrato in WhatsApp, Telegram o qualsiasi piattaforma mainstream, non sarebbe affidabile perché:
NoFuture-Memguard-PQ è completamente separato dalle piattaforme di chat mainstream:
| Componente | Dove Si Trova | Chi Lo Controlla |
|---|---|---|
| Chiavi private | Tab NoFuture (RAM protetta) | Tu (non la piattaforma chat) |
| Messaggi in chiaro | Tab NoFuture (RAM protetta) | Tu (non la piattaforma chat) |
| Cifratura/Decifratura | Tab NoFuture (client-side) | Tu (non la piattaforma chat) |
| Solo testo cifrato | Tab chat mainstream | Piattaforma chat (ma è inutile per loro) |
Memguard è una libreria Go per gestire dati sensibili in memoria. È il meccanismo di sicurezza primario che protegge sia le chiavi crittografiche che i messaggi in chiaro.
| Vettore di Attacco | Protezione Memguard |
|---|---|
| Dump di memoria (anche da root) | Dati memorizzati in pagine di memoria cifrate fuori dall'heap Go |
| Analisi file di swap | Chiamata di sistema mlock() previene lo swapping su disco |
| Collegamento debugger (gdb, lldb) | La memoria è cifrata in RAM; il debugger vede solo testo cifrato |
| Dump del core in caso di crash | Purge automatico al crash tramite memguard.CatchInterrupt() |
| Ispezione garbage collector | I buffer sensibili sono fuori heap, invisibili al GC |
| Attacchi cold boot | Memoria cancellata all'uscita del processo; nessun dato residuo |
Mentre memguard protegge i dati in memoria, la crittografia post-quantum protegge i dati in transito e a riposo contro futuri attacchi di computer quantistici.
L'utente apre NoFuture-Memguard-PQ e clicca "Avvia Nuova Sessione".
L'utente copia il suo Session ID e lo invia al contatto tramite WhatsApp Web.
Entrambi gli utenti incollano i Session ID reciproci e cliccano "Associa Sessioni".
I messaggi vengono cifrati in NoFuture-Memguard-PQ e il testo cifrato viene copiato nella chat mainstream.
Quando si clicca "Termina Sessione", tutte le chiavi vengono distrutte in modo sicuro.
Una conversazione. Una chiave. Una possibilità di lettura. Nessun accesso futuro.
NoFuture-Memguard-PQ include una tastiera virtuale opzionale su schermo con layout casuale per proteggere contro keylogger e spyware locali.
- Go 1.21 o successivo
- Linux/macOS/Windows
git clone https://github.com/yourusername/nofuture-memguard-pq.git
cd nofuture-memguard-pq
go mod download
go build -o nofuture main.go
./nofuture
Costruito con amore e sfida contro la sorveglianza di massa.