Améliorer l'accès mémoire sécurisé avec des capacités
Un nouveau design offre une meilleure sécurité pour l'accès à la mémoire dans les systèmes informatiques.
― 7 min lire
Table des matières
- Background
- Sécurité de la Mémoire
- Limitations des Conceptions Existantes
- Une Approche Améliorée
- Fonctionnalités Clés
- Mise en Œuvre
- Évaluation
- Allocation de Mémoire sans Confiance
- Planification de Threads sans Confiance
- Environnements d'Exécution de Confiance
- Enclaves Imbriquées
- Enclaves Temporellement Isolées
- Gestion de Mémoire de Type Rust
- Travaux Connexes
- Futurs Travaux
- Conclusion
- Références
- Source originale
- Liens de référence
L'accès à la mémoire est super important dans les systèmes informatiques, surtout en ce qui concerne la sécurité. Une nouvelle approche pour sécuriser l'accès à la mémoire, appelée isolation de mémoire basée sur des Capacités, a vu le jour. Ce truc permet aux logiciels d'interagir avec la mémoire en utilisant des poignées spéciales, appelées capacités, au lieu de pointeurs classiques. Ce système aide à imposer des règles de sécurité de manière plus naturelle.
Bien que les conceptions existantes comme CHERI offrent un certain niveau de Sécurité de la mémoire, elles ne répondent pas forcément à tous les besoins de sécurité. Cet article discute d'une nouvelle conception de capacités qui vise à fournir une base plus solide pour un accès sécurisé à la mémoire sans dépendre de composants logiciels de confiance.
Background
Sécurité de la Mémoire
La sécurité de la mémoire consiste à protéger une application contre l'accès à des régions de mémoire incorrectes ou nuisibles. Les conceptions basées sur des capacités peuvent améliorer la sécurité de la mémoire en s'assurant que les droits d'accès sont liés aux capacités.
Limitations des Conceptions Existantes
Les architectures de capacités actuelles offrent une sécurité spatiale mais manquent de flexibilité pour d'autres modèles de mémoire dont les applications peuvent avoir besoin. Ce défi peut causer des complications lors de la conception de systèmes nécessitant une variété de protections de mémoire.
Une Approche Améliorée
La conception proposée introduit un modèle de capacité plus expressif qui peut supporter diverses méthodes d'isolation de mémoire. La nouvelle interface est destinée à des environnements où le partage de mémoire et la gestion des accès sont nécessaires sans confiance établie.
Fonctionnalités Clés
Accès Exclusif
Les capacités linéaires aident à garantir un accès exclusif à des régions de mémoire, s'assurant qu'aucune autre capacité ne peut chevaucher les droits d'accès à la mémoire accordés par une capacité linéaire.
Délégation et Révocation
La possibilité de déléguer l'accès à la mémoire à d'autres composants tout en conservant la capacité de révoquer cet accès à tout moment fournit une structure solide pour la gestion de la mémoire à travers différents domaines de sécurité.
Gestion Hiérarchique des Privilèges
La conception prend en charge l'établissement d'une hiérarchie de privilèges qui peut être étendue selon les besoins, améliorant la gestion du partage de mémoire et du contrôle d'accès.
Mise en Œuvre
Un prototype de la conception proposée a été développé pour démontrer son utilité et son efficacité. Ce prototype comprend un émulateur et un compilateur simple pour permettre différents modèles d'isolation de mémoire.
Évaluation
L'évaluation du prototype montre que les opérations d'accès à la mémoire peuvent être effectuées avec un minimum de surcharge de performance. La conception proposée peut soutenir efficacement des modèles de mémoire distincts sans nécessiter d'environnement logiciel de confiance.
Allocation de Mémoire sans Confiance
Allocateur de Mémoire
L'allocateur de mémoire offre des capacités linéaires pour les régions de mémoire allouées, s'assurant que les applications peuvent utiliser la mémoire sans avoir à faire confiance à l'allocateur pour gérer l'accès.
Exemple de Flux de Travail
Quand une application demande de la mémoire, elle reçoit une capacité linéaire qui permet un accès exclusif. Si l'application libère la mémoire, l'allocateur ne peut pas accéder aux données précédemment stockées, maintenant la confidentialité.
Planification de Threads sans Confiance
Mécanisme de Planificateur
Le planificateur de threads fonctionne indépendamment des applications. Il garantit que les applications peuvent fonctionner sans avoir besoin de faire confiance au planificateur pour leurs données, renforçant ainsi la sécurité globale.
Gestion de Contexte
Lorsqu'un thread est changé, le planificateur sauvegarde le contexte du thread pour préserver son état et empêcher l'accès non autorisé aux données protégées.
Environnements d'Exécution de Confiance
Vue d'Ensemble des EEE
Les Environnements d'Exécution de Confiance (EEE) permettent aux applications de s'exécuter en toute sécurité sans avoir à faire confiance au logiciel sous-jacent. La conception de capacité proposée peut faciliter la création d'EEE qui ne nécessitent pas de dépendance à des composants de confiance.
Isolation Spatiale
Une enclave est une région de mémoire privée accessible uniquement à une application spécifique. La conception permet la création et la gestion faciles de telles enclaves, renforçant la sécurité.
Enclaves Imbriquées
Structure et Fonctionnalité
La conception prend en charge les enclaves imbriquées, ce qui signifie qu'une enclave peut créer d'autres enclaves à l'intérieur. Cette structure hiérarchique permet un partage complexe de mémoire et une gestion des privilèges.
Considérations de Sécurité
La superposition des enclaves peut être contrôlée, garantissant que l'accès est réglementé et que les enclaves peuvent maintenir leur intégrité tout en partageant des ressources.
Enclaves Temporellement Isolées
Gestion Dynamique des Permissions
La conception proposée permet des ajustements dynamiques des permissions d'accès à la mémoire au sein des enclaves. Cette approche temporellement isolée permet un partage de ressources plus flexible.
Accès Contrôlé
Les enclaves peuvent définir des politiques d'accès variables dans le temps pour gérer les permissions, s'assurant que les données ne sont accessibles que lorsque c'est approprié.
Gestion de Mémoire de Type Rust
Mécanisme d'Abstraction
La nouvelle conception peut imiter le modèle de propriété et d'emprunt de Rust pour la gestion de la mémoire, permettant une sécurité spatiale et temporelle sans nécessiter de composants de confiance.
Mécanisme de Vérification Dynamique
Grâce à des vérifications à l'exécution, la conception proposée garantit que l'accès à la mémoire suit les contraintes de propriété, empêchant ainsi l'accès non autorisé aux données.
Travaux Connexes
Comparaison avec CHERI
Bien que CHERI offre certaines capacités, il lui manque l'expressivité nécessaire pour supporter efficacement une variété de modèles de mémoire. La conception proposée vise à combler cette lacune et à fournir une solution robuste.
Sécurité de la Mémoire dans la Programmation
De nombreux langages de programmation intègrent des fonctionnalités de sécurité pour garantir un accès correct à la mémoire. La conception proposée s'aligne sur ces principes, cherchant à améliorer la sécurité au niveau architectural.
Futurs Travaux
Une exploration plus poussée est prévue pour passer de la conception proposée d'un cadre théorique à des mises en œuvre matérielles pratiques. L'intention est d'élargir les applications et de peaufiner l'approche en fonction des données et des retours du monde réel.
Conclusion
Une nouvelle conception architecturale basée sur des capacités peut renforcer l'accès sécurisé à la mémoire à travers diverses applications. En soutenant plusieurs modèles d'isolation de mémoire et en garantissant le contrôle d'accès sans dépendre de composants de confiance, cette approche offre une direction prometteuse pour la sécurité informatique future.
Références
Note
Les informations fournies dans cet article sont tirées de diverses études de recherche et de cadres existants liés à la gestion de la mémoire, aux capacités et à la sécurité dans les systèmes informatiques.
Titre: Capstone: A Capability-based Foundation for Trustless Secure Memory Access (Extended Version)
Résumé: Capability-based memory isolation is a promising new architectural primitive. Software can access low-level memory only via capability handles rather than raw pointers, which provides a natural interface to enforce security restrictions. Existing architectural capability designs such as CHERI provide spatial safety, but fail to extend to other memory models that security-sensitive software designs may desire. In this paper, we propose Capstone, a more expressive architectural capability design that supports multiple existing memory isolation models in a trustless setup, i.e., without relying on trusted software components. We show how Capstone is well-suited for environments where privilege boundaries are fluid (dynamically extensible), memory sharing/delegation are desired both temporally and spatially, and where such needs are to be balanced with availability concerns. Capstone can also be implemented efficiently. We present an implementation sketch and through evaluation show that its overhead is below 50% in common use cases. We also prototype a functional emulator for Capstone and use it to demonstrate the runnable implementations of six real-world memory models without trusted software components: three types of enclave-based TEEs, a thread scheduler, a memory allocator, and Rust-style memory safety -- all within the interface of Capstone.
Auteurs: Jason Zhijingcheng Yu, Conrad Watt, Aditya Badole, Trevor E. Carlson, Prateek Saxena
Dernière mise à jour: 2023-03-09 00:00:00
Langue: English
Source URL: https://arxiv.org/abs/2302.13863
Source PDF: https://arxiv.org/pdf/2302.13863
Licence: https://creativecommons.org/licenses/by/4.0/
Changements: Ce résumé a été créé avec l'aide de l'IA et peut contenir des inexactitudes. Pour obtenir des informations précises, veuillez vous référer aux documents sources originaux dont les liens figurent ici.
Merci à arxiv pour l'utilisation de son interopérabilité en libre accès.