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.
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
root@kitploit:~
$ 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.