MemGuard
Enclave logiciel pour le stockage d'informations sensibles en mémoire.
Ce paquet tente de réduire la probabilité que des données sensibles soient exposées lorsqu'elles sont en mémoire. Il vise à prendre en charge tous les principaux systèmes d'exploitation et est écrit en Go pur.
Fonctionnalités
- Les données sensibles sont chiffrées et authentifiées en mémoire avec XSalsa20Poly1305. Le schéma utilisé défend également contre les attaques par démarrage à froid.
- L'allocation mémoire contourne l'environnement d'exécution du langage en utilisant des appels système pour interroger directement le noyau pour les ressources. Cela évite les interférences du ramasse-miettes.
- Les tampons qui stockent les données en clair sont renforcés avec des pages de garde et des valeurs sentinelles pour détecter les accès intempestifs et les débordements.
- Des efforts sont faits pour empêcher les données sensibles de toucher le disque. Cela inclut le verrouillage de la mémoire pour empêcher l'échange et la gestion des vidages mémoire.
- L'immuabilité au niveau du noyau est implémentée de sorte que toute tentative de modification des régions protégées entraîne une violation d'accès.
- Plusieurs points d'accès offrent des capacités de purge de session et de terminaison sécurisée, ainsi que la gestion des signaux pour éviter que des données résiduelles ne soient laissées derrière.
- Les attaques par canaux auxiliaires sont atténuées en veillant à ce que la copie et la comparaison des données se fassent en temps constant.
Certaines fonctionnalités ont été inspirées par libsodium, crédits à eux.
La documentation complète et un aperçu complet de l'API sont disponibles ici. Des exemples de code intéressants et utiles se trouvent dans le sous-paquet exemples.
Installation
$ go get github.com/awnumar/memguard
L'API est expérimentale et peut subir des modifications instables. Vous devriez épingler une version. [modules]
Contribuer
- Soumettre des exemples de programmes dans
./examples.
- Signaler des bogues, des vulnérabilités et toute difficulté d'utilisation de l'API.
- Écrire des bibliothèques de sécurité et de cryptographie utiles qui utilisent memguard.
- Implémenter des protections spécifiques au noyau/au processeur.
- Soumettre des améliorations de performances.
Les issues sont réservées aux rapports de bogues et aux discussions sur les propositions. Les pull requests doivent être faites sur la branche master.