ASIM team
LIP6 Laboratory
Paris, France

next up previous
Next: Mesures de performances Up: Noyau de communication sécurisé Previous: Passage de messages en

Sécurité et intégrité du système

Avant l'appel à la primitive Send ou Receive, les données doivent être verrouillées. Si les données font partie de l'espace en mémoire d'un processus, celui-ci peut les déverrouiller par erreur (appel système munlock()) en cours de transfert. Du côté émetteur, on risque ainsi d'envoyer le contenu de pages physiques d'autres processus chez le récepteur, ce qui pose le problème de la confidentialité des données. Du côté récepteur, on risque de voir des données venir se déposer dans des zones allouées entre temps à d'autres processus, voire même au noyau, et on se trouve donc également confronté au problème de l'intégrité du système. On pourrait imaginer interdire l'appel système munlock() pendant les transferts, mais la fin prématurée du processus repose les mêmes problèmes. La solution, mise en uvre au sein de la sous-couche VMR (Virtual Memory Referencer), consiste à créer et gérer de façon adéquate une carte de la mémoire au sein du système de mémoire virtuelle de Mach, du même type que celles qui décrivent les espaces en mémoire des processus et du noyau. Cette carte n'est associée à aucun processus. Dès qu'une opération Send ou Receive intervient dans un quelconque processus, on recherche un espace libre dans la carte de la mémoire pour y insérer des entrées référençant entièrement les objets de la mémoire Mach correspondants (le plus souvent il s'agit d'une zone du tas ou de la pile). On simule alors des fautes de page sur ces entrées de carte de la mémoire puis on les verrouille. On a alors la garantie que même si le processus vient à les déverrouiller, les références de notre carte de la mémoire empêcheront les données de réellement quitter la mémoire physique, par exemple pour retourner dans la zone de pagination sur disque.

Plutôt que de libérer la carte de la mémoire à chaque fin de transaction, une opération périodique de ramasse-miettes se charge de la mettre à jour. Le coût de la couche VMR est le suivant : il faut 6 µs sur un Pentium 200 pour vérifier qu'une zone en mémoire de 4 Ko est déjà référencée dans la carte de VMR, alors qu'il faut plus de 200 µs pour l'y insérer.

La figure 1 présente l'empilement des couches de protocoles, depuis le pilote de périphérique, jusqu'à la couche de plus haut niveau adaptée aux opérations en adresses virtuelles. La figure 3 présente les messages en jeu dans un échange Send/Receive sans faute (MICP n'intervient donc pas).






next up previous
Next: Mesures de performances Up: Noyau de communication sécurisé Previous: Passage de messages en

Server design A. Fenyö
mpc@mpc.lip6.fr - contact people
About this Web Site
$Date: 1998/02/19 01:30:00 $
Copyright © 1997-1998 UPMC/LIP6
All rights reserved