nofuture.go - Sicurezza Memguard Post-Quantum

nofuture.go è un sistema di crittografia post-quantum avanzato che utilizza le librerie liboqs-go e memguard per proteggere i dati sensibili.

1️⃣ Start Session (Creazione della coppia di chiavi e session ID)

Per avviare una sessione sicura, nofuture.go genera una coppia di chiavi Kyber1024-90s utilizzando il Key Encapsulation Mechanism (KEM).

kem := oqs.KeyEncapsulation{}
kem.Init("Kyber1024-90s", nil)
pubKey, secKey := kem.GenerateKeyPair()
        

Le chiavi vengono protette con memguard, impedendo l'accesso da parte di malware o root.

2️⃣ Share Session ID (Condivisione sicura dell'ID di sessione)

L'ID della sessione può essere trasmesso su canali standard (chat, email) perché non contiene informazioni sensibili. Tuttavia, l'uso di canali cifrati è raccomandato.

3️⃣ Pair Sessions (Scambio di chiavi e associazione della sessione)

Una volta ricevuta la chiave pubblica, il client genera una chiave segreta condivisa usando KEM:

ct, ss := kem.EncapSecretKey(rand.Reader)
        

Questa chiave viene poi protetta con memguard per evitare leak di memoria.

4️⃣ Encrypt/Decrypt Session (Protezione dei dati trasmessi)

I dati vengono cifrati con un HMAC basato su BLAKE2b e una cifratura sicura come XChaCha20-Poly1305.

5️⃣ End Session (Chiusura sicura della sessione)

Alla chiusura, tutte le chiavi e i buffer di memoria vengono distrutti immediatamente con memguard.Purge().