MemGuard
Enclave software per l'archiviazione di informazioni sensibili in memoria.
Questo pacchetto cerca di ridurre la probabilità che dati sensibili vengano esposti quando sono in memoria. Supporta tutti i principali sistemi operativi ed è scritto in Go puro.
Caratteristiche
- I dati sensibili vengono crittografati e autenticati in memoria con XSalsa20Poly1305. Lo schema utilizzato difende anche dagli attacchi cold-boot.
- L'allocazione di memoria bypassa il runtime del linguaggio utilizzando chiamate di sistema per interrogare direttamente il kernel per le risorse. Questo evita interferenze da parte del garbage collector.
- I buffer che memorizzano dati in chiaro sono fortificati con pagine di guardia e valori canary per rilevare accessi spurii e overflow.
- Viene prestata attenzione per evitare che i dati sensibili tocchino il disco. Ciò include il blocco della memoria per impedire lo swapping e la gestione dei core dump.
- Viene implementata l'immutabilità a livello di kernel in modo che il tentativo di modifica delle regioni protette risulti in una violazione di accesso.
- Molteplici endpoint forniscono funzionalità di purging della sessione e terminazione sicura, oltre alla gestione dei segnali per evitare che rimangano dati residui.
- Gli attacchi a canale laterale vengono mitigati assicurando che la copia e il confronto dei dati vengano eseguiti in tempo costante.
Alcune funzionalità sono state ispirate da libsodium, quindi crediti a loro.
La documentazione completa e una panoramica completa dell'API si trovano qui. Esempi di codice interessanti e utili si trovano nel sottopacchetto examples.
Installazione
$ go get github.com/awnumar/memguard
L'API è sperimentale e potrebbe subire modifiche instabili. Dovresti fissare una versione. [modules]
Contribuire
- Inviare esempi di programma a
./examples.
- Segnalare bug, vulnerabilità e qualsiasi difficoltà nell'uso dell'API.
- Scrivere librerie di sicurezza e crittografia utili che utilizzano memguard.
- Implementare protezioni specifiche per kernel/CPU.
- Inviare miglioramenti delle prestazioni.
Le issue sono per segnalare bug e per discutere proposte. Le pull request dovrebbero essere fatte contro il master.