Examen de Systèmes Répartis (2001)

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 5

Université Joseph Fourier

DESS Génie Informatique - année 2001-2002

Examen de Systèmes Répartis


18 décembre 2001

Durée :2 heures ; documents autorisés : ceux distribués en cours

N.B. L’examen comporte 3 problèmes indépendants. Prière de lire attentivement l’ensemble


de l’énoncé avant de commencer à répondre, et de respecter les notations du texte. La
longueur de l’énoncé n’est pas un signe de difficulté, mais est nécessaire pour bien spécifier
les problèmes. La clarté, la précision et la concision des réponses, ainsi que leur
présentation matérielle, seront des éléments importants d’appréciation.

Problème 1. (10 points)


Ce problème est consacré à l’examen de quelques opérations utilisant les techniques de la
cryptographie. On rappelle les notations : si M est un message, on note C={M}K le résultat du
chiffrement de M en utilisant une clé K ; on note M=[C]K le résultat du déchiffrement du
message chiffré C en utilisant une clé K.
Les 3 questions sont indépendantes.
Question 1. Étant donné les avantages des algorithmes de chiffrement à clés publiques,
pourquoi continue-t-on à utiliser des clés secrètes ? Comment combiner les avantages de ces
deux modes de chiffrement ?
Question 2. Pour réaliser un système de paiement électronique, on utilise des “chèques
électroniques” signés par le titulaire du compte, avec un système à clés publiques. Un tel
chèque comporte une information M ainsi qu’une “signature” {D(M)}KSN. D est une fonction de
hachage non inversible, M contient le nom N du titulaire du compte, le nom B de la banque et
la somme S, et enfin KSN est la clé secrète de N. On suppose que la clé publique de N, KPN, est
accessible à tous. Une personne recevant un chèque en paiement l’envoie à la banque.
a) Expliquer comment la banque vérifie l’authenticité de la signature et l’intégrité du chèque
(c’est-à-dire sa non-modification après signature).
b) Le schéma ci-dessus permet à une personne de faire une copie du chèque et de l’envoyer à
la banque pour se faire payer deux fois. Proposez une modification simple pour éviter cela.
Question 3. On veut réaliser un système d’authentification en utilisant la cryptographie à clé
secrète. Soit A et B deux partenaires qui veulent s’authentifier mutuellement, puis
communiquer entre eux en utilisant le chiffrement à clé secrète. Ils font appel à un serveur
d’authentification S qui connaît la clé secrète de A, KA et la clé secrète de B, KB. Le protocole se
déroule comme suit :
Α→Β : I, A, B, {RA, I, A, B}K A où I est un numéro d’ordre (incrémenté à chaque
authentification) et RA un nombre choisi au hasard.
B→S : I, A, B, {RA, I, A, B}KA, {RB, I, A, B}KB où RB est un autre nombre tiré au hasard.
S→B : I, {RA, K}KA, {RB, K}KB, où K est la clé secrète choisie par S pour la communication
entre A et B.
B→A : ???
a) Quel est le dernier message envoyé de B vers A, qui conclut le protocole d’authentification ?
b) Expliquer comment A et B peuvent chacun avoir l’assurance que son correspondant est
bien celui qu’il prétend être. Expliquer le rôle de I, RA et RB.
Problème 2 (10 points)
Les questions de ce problème sont indépendantes.
Question 1. La réalisation d’un appel de procédure à distance fait appel à un service de
gestion de noms, qui comporte trois fonctions :
Enregistrer (nom de service, adresse, numéro de version)
Supprimer (nom de service, adresse, numéro de version)
Chercher (nom de service, numéro de version) : adresse
L’information adresse se compose de l’adresse IP d’un serveur et d’un numéro de porte.
On souhaite modifier le service de gestion de noms de manière qu’un même service puisse
être rendu par plusieurs serveurs différents.
a) Rappeler la place du service de gestion de noms dans la réalisation de l’appel de procédure
à distance.
b) Quel est l’intérêt de la modification demandée ?
c) Proposer une modification de l’interface du service de noms pour permettre un tel
fonctionnement et donner le principe de la réalisation du nouveau service de noms.
Question 2.
Cette question est consacrée à la conception d’un service réparti de gestion de fichiers. On
souhaite que ce service présente les propriétés suivantes :
1) la gestion des noms et la gestion du stockage physique sont séparées,
2) il est possible de déplacer physiquement des fichiers (non en cours d’utilisation) sans que
leur nom soit modifié.
a) Quel est l’intérêt des deux propriétés ci-dessus ?
b) Le service de noms réalise l’association entre un nom symbolique de fichier et un
descripteur interne. Sans donner le détail du fonctionnement du service de noms, ni la forme
des noms symboliques, on demande de définir les fonctions qui constituent l’interface du
service de noms. Comment se fait la liaison entre la gestion des noms et la gestion du stockage
physique ?
c) Chaque fichier possède un descripteur interne qui contient un numéro de volume et un
numéro de fichier dans le volume. Un volume est un ensemble de fichiers ; c’est, par
définition, l’unité de duplication et de mobilité. On ne s’occupera pas du détail de
l’organisation interne des volumes. Indiquer quelles structures de données sont nécessaires
pour réaliser la mobilité des volumes et donner le principe du déplacement d’un volume entre
deux serveurs.
d) On souhaite maintenant pouvoir dupliquer certains volumes, sur des serveurs différents.
Expliquer comment est modifiée l’organisation ci-dessus.

2
Université Joseph Fourier
DESS Génie Informatique - année 2001-2002

Schéma de corrigé pour l’examen 2001

Problème 1.

Question 1. L’avantage principal des algorithmes de chiffrement à clés secrètes est


l’efficacité. C’est ce qui justifie leur utilisation. Les algorithmes à clés publiques sont utilisés
pour la transmission des clés secrètes et pour l’authentification, qui manipulent des données
de taille réduite.

Question 2.
a) Question de cours (voir cours)
b) Il suffit d’ajouter à chaque chèque un identificateur unique (construit par ex . à partir
du code de l’agence émettrice et d’un numéro d’ordre, ainsi que d’une estampille (date
et heure locals). L’agence peut alors vérifier qu’un chèque donné a déjà été débité.

Question 3.
a) Le dernier message est
B→A: I, {RA, K}KA,{I, A, B}K
b) L’authentification repose sur l’hypothèse que A et B ne communiquent
respectivement leur clé KA et KB à personne sauf à S. A est authentifié pour S car il
connaît KA. Le serveur S est authentifié pour B car il est le seul à connaître KB. Donc
A est authentifié pour B à travers S.
B est authentifié pour A car il connaît la clé K, qui a été engendrée par S (car elle est
communiquée à A chiffrée par KA, que S est seul à connaître). Donc K n’a pas pu être
fabriquée par un autre que S.
Le rôle de I (qui peut être une estampille avec la date) est l’identification unique qui
évite le rejeu de messages anciens. Le rôle de RA et RB est de servir à
l’authentification de S pour A et B, car RA et RB sont chiffrés par KA que S est seul à
connaître.

Problème 2.

Question 1.
a) Le service de gestion de noms sert au client (plus précisément au talon client) à
connaître l’adresse réseau (par. ex. l’adresse IP et le numéro de porte) qu’il faut
appeler pour exécuter la procédure. Ces informations ont été préalablement
enregistrées par le talon serveur. Le service de gestion de noms peut résider sur le
site du serveur ou sur un site indépendant. L’adresse réseau et le numéro de porte
de ce service doivent être connus à l’avance (de la même façon que ceux du
serveur DNS).
b) La modification demandée a un double intérêt. 1) Pour la tolérance aux fautes, en
assurant que le service sera rendu même si N serveurs sont défaillants (si on en
prévoit N+1). 2) Pour l’efficacité. En effet, si on a plusieurs serveurs, on peut
choisir le moins chargé (si on peut connaître la charge) ou le plus voisin, pour
réduire le temps d’attente (latence).
Plusieurs solutions sont possibles. Par exemple, on peut utiliser pour les serveurs de noms
un schéma (serveur primaire, serveurs de secours). On a donc une liste fixée de couples
(adresse IP, numéro de porte), connue de tous les clients et serveurs, le premier de la liste
étant le serveur primaire, les suivants les serveurs de secours, dans l’ordre de
remplacement. Dans ce cas, l’interface ne change pas, mais chaque primitive est appelée
à l’intérieur d’une boucle comportant un délai de garde. Si le délai est écoulé sans
réponse, on appelle le serveur suivant sur la liste. Si au contraire on utilise le schéma de
la duplication active, on n’a rien à changer. On suppose dans les deux cas que les
serveurs appliquent un protocole interne (voir cours) pour rester cohérents entre eux.

Un atre schéma non développé ici consiste à appeler le service à travers une procédure
qui permet de déterminer le serveur le plus efficace.

NB. Il suffisait de donner une seule solution, les diverses possibilités sont données à titre
indicatif.

Question 2.
a) L’intérêt de la modification proposée est d’une part l’indépendance entre service
logique et gestion physique, d’autre part la facilité d’évolution et l’adaptabilité du
service (indépendance mutuelle des différentes modifications), enfin la commodité
pour l’utilisateur (le changement de support d’un fichier est invisible à
l’utilisateur).

b) Une interface possible du service de noms est la suivante.


      id = nouveau_id(params) : créer un nouvel identificateur interne. Les
paramètres (facultatifs) peuvent comporter des préférences relatives au fichier
(taille initiale, volume préféré).
      associer (f, id) : associe l’identificateur interne id et le nom de fichier f. On
peut aussi proposer une procédure qui combine nouveau_id et associer.
      id = rechercher(f) : trouver l’identificateur interne id associé au nom de fichier
f (ou renvoyer nil si pas trouvé).
      supprimer (f) : supprime le nom de fichier f et libère l’identificateur id associé
(utilisé lors de la destruction d’un fichier).
La liaison entre les service de noms et la gestion du stockage physique se fait
uniquement par l’intermédiaire de l’identificateur interne, ce qui réalise
l’indépendance de ces deux fonctions.

c) Il suffit d’avoir sur chaque serveur une table d’implantation des volumes qui sont
actuellement stockés sur ce support, et sur chaque site utilisateur une table de
correspondance entre numéro de volume et nom de serveur Ainsi, pour tout
fichier, on peut déterminer son volume à l’aide de son id et ensuite le serveur sur
lequel il se trouve grâce à la table de correspondance. C’est la solution adoptée
dans AFS.

Pour déplacer un volume, il faut bloquer l’accès à tous les fichiers de ce volume,
puis attendre que les accès en cours soient terminés. Ensuite, on transfère
physiquement le volume (par recopie ou par montage d’un support physique), et
on met à jour la table d’implantation sur le serveur. Enfin, on diffuse à tous les
sites la modification à apporter à la table de correspondance (une association
(volume, serveur) a changé). Puis on libère l’accès aux fichiers du volume. Ces
opérations sont réalisées par un programme du système, sous contrôle de
l’administrateur.

d) Pour gérer des volumes dupliqués, il faut changer la structure de la table de


correspondance, pour permettre d’avoir des entrées de la forme (n° de volume,
liste de serveurs) au lieu de (n° de volume, serveur). L’accès à un volume nécessite
un algorithme de choix entre les différents serveurs qui gèrent le volume (par
exemple essayer le premier de la liste ; si pas disponible, prendre le suivant, etc ;
ou des algorithmes plus raffinés prenant en compte la charge ou la proximité, ce
qui suppose de tenir ces informations à jour).

      

Vous aimerez peut-être aussi