nofuture.go è una web app crittografica post-quantum da usare in un tab del browser, mentre in un altro hai una chat. La comunicazione è cifrata localmente, e le sessioni vengono sincronizzate usando un Session ID. Le chiavi sono protette in RAM con memguard
e vengono eliminate a fine sessione.
Il Session ID rappresenta una sessione univoca sicura tra due dispositivi. Non è una chiave pubblica, ma una combinazione sicura di identificatori derivati da elementi crittografici.
remotePubKey
: chiave pubblica remotanonce
: numero casualesessionKey
: segreto condiviso
hash := sha256.New()
hash.Write(pubKey.Bytes())
hash.Write(nonce[:])
sessionID := hex.EncodeToString(hash.Sum(nil))
Dopo lo scambio dei session-ID
, cliccando su “Pair” l'app avvia un processo automatico per derivare una chiave condivisa sicura.
Nota: Nessuna chiave pubblica viene scambiata manualmente.
nofuture.go
protegge tutte le chiavi in RAM usando memguard, che impedisce accessi anche da parte di root o strumenti di debug.
Minaccia | Contromisura |
---|---|
gdb / lsof | Memoria fuori heap, cifrata |
Accesso root | RAM bloccata con mlock |
Keylogger | Le chiavi non sono mai digitate |
Cold boot | Memoria giĂ purgata |
Per proteggere la digitazione del testo, l’app può usare una tastiera virtuale con disposizione dei tasti casuale a ogni apertura.
nofuture.go is a post-quantum crypto tool used in a browser tab while using a chat app in another. Messages are encrypted locally and exchanged via synchronized Session IDs. Keys are memory-hardened with memguard
and purged after session ends.
The Session ID uniquely identifies a secure session between two peers. It's derived from a mix of cryptographic elements—not a public key.
remotePubKey
: peer’s public keynonce
: random numbersessionKey
: shared secret
hash := sha256.New()
hash.Write(pubKey.Bytes())
hash.Write(nonce[:])
sessionID := hex.EncodeToString(hash.Sum(nil))
After exchanging session-IDs
, just click “Pair”. The system automatically derives a shared key using Kyber post-quantum KEM.
No manual key sharing is needed.
All key materials are protected with memguard, which allocates encrypted memory buffers off-heap, blocks OS access (even root), and purges everything on termination.
Threat | Mitigation |
---|---|
gdb / lsof | Data is not in readable heap |
Root access | Memory protected with mlock |
Keyloggers | Keys never typed |
Cold boot | Memory purged |
A virtual keyboard with randomized layout protects text from keyloggers. No keystroke events are triggered.