Systèmes Distribués

73
Mastère MIAGE, 2006 Systèmes Distribués Fabrice Huet [email protected]

description

Systèmes Distribués. Fabrice Huet [email protected]. P2P : Introduction. Définition historique : Un système distribué où un nœud peut être à la fois client ou serveur Plus vraiment de distinction entre les deux rôles - PowerPoint PPT Presentation

Transcript of Systèmes Distribués

Page 1: Systèmes Distribués

Mastère MIAGE, 2006

Systèmes Distribués

Fabrice [email protected]

Page 2: Systèmes Distribués

2Mastère MIAGE, 2006

P2P : Introduction• Définition historique : Un système distribué

où un nœud peut être à la fois client ou serveur– Plus vraiment de distinction entre les deux rôles

• Définition actuelle : Un système distribué utilisant les ressources localisées aux frontières d’Internet

• Premier système pair à pair connu: Napster– Chaque nœud était à la fois producteur et

consommateur de fichiers mp3• Propriétés

– Décentralisation (Decentralised)– Dynamicité (Dynamic)– Auto configuration (Self configurable)– Auto cicatrisation (Self-healing)

Page 3: Systèmes Distribués

3Mastère MIAGE, 2006

• Classification suivant les ressources partagées– P2P de calcul : seti@home,

folding@home, distributed.net– P2P de fichiers : Napster, Gnutella,

Freenet, edonkey, bittorent • Classification suivant l’organisation

– Non structuré : pas d’ordre entre les pairs

– Structuré : il existe une organisation des pairs

P2P : Introduction

Page 4: Systèmes Distribués

Mastère MIAGE, 2006

1 - Pair à Pair de calcul

Page 5: Systèmes Distribués

5Mastère MIAGE, 2006

Principe• Des calculs nécessitent d’énormes

ressources de calcul– Pas d’ordinateur assez puissant– Pas de moyens financiers

• Des millions d’ordinateurs individuels sont sous utilisés – Un CPU travaille peu et se met souvent en

économie d’énergie– La nuit, certaines entreprises laissent les

ordinateurs allumés• Idée : utiliser ces ordinateurs pour faire

des calculs « utiles »

Page 6: Systèmes Distribués

6Mastère MIAGE, 2006

Principe• Basé sur le volontariat• Un utilisateur voulant participer télécharge un

logiciel et l’installe sur son ordinateurs• Le logiciel se connecte à un serveur et

demande des taches à traiter– Architecture très centralisée (maître – esclave)– Pas de communications entre les pairs

• Possibilité de paramétrer le client– Démarrage à heures fixes ou quand la machine est

inutilisée

• En général, le client fait économiseur d’écran– Affiche au volontaire quelque chose…– Se déclenche automatiquement

Page 7: Systèmes Distribués

7Mastère MIAGE, 2006

Bénéfices

• Pour les fournisseurs de calculs– Accès à des ressources énormes– Peu de frais (coût des serveurs et de

la bande passante)• Pour les utilisateurs

– La satisfaction de participer à une grande cause

– La gloire! (classements journalier)– L’argent parfois

Page 8: Systèmes Distribués

8Mastère MIAGE, 2006

Seti@home• Projet pionnier, démarré en • Des radiotélescopes écoutent le ciel à la recherche de

signaux extra terrestres• Énorme quantité de données• Analyse du signal par FFT

– Répétitif – Pas très bien géré par les processeurs généraux (x86)

• Le logiciel client télécharge des données correspondant à une zone du ciel à une date donnée

• Recherche de signaux anormaux• Résultats:

– Très peu de signaux découverts– Chercheurs en colère : seti@home est plus sexy que d’autres

projets, donc bénéficie de plus de crédits et de temps de radiotélescope

• Récompenses:– Classement régulier– La gloire

Page 9: Systèmes Distribués

9Mastère MIAGE, 2006

Distributed.net• Utilisé pour casser des chiffrements

symétriques • Explore l’espace des clés• Un client télécharge un ensemble de clés à

tester– Un client rapide testera plus de clés et aura donc

plus de chances

• Financé par de grandes compagnies– RSA

• Récompense– Classement– La gloire– L’argent

Page 10: Systèmes Distribués

10Mastère MIAGE, 2006

Problèmes

• Le logiciel de calcul peut contenir des bugs

• Comme tout système ayant une récompense (même symbolique), des gens trichent

• Un client n’effectue pas le calcul demandé– Renvoie de résultats anciens ou aléatoires– Permet de simuler une machine très rapide

• Un client renvoie un résultat faux – Bug dans le client– Tentative de sabotage

Page 11: Systèmes Distribués

11Mastère MIAGE, 2006

Clients ne calculant pas

• Un client retourne toujours « pas la bonne clé » dans distributed.net

• Un client retourne « rien trouvé » dans seti@home

• Solution : Spot Checking– On fait faire par plusieurs clients différents le

même calcul– On garde le résultat le plus couramment

trouvé• Problème: Comment choisir des clients

différents?– Problèmes de clients collaborant pour tricher– Quelle est le % de tels clients qui fausseront le

calcul?

Page 12: Systèmes Distribués

12Mastère MIAGE, 2006

Clients ne calculant pas

• Autre attaque, beaucoup plus évoluée, utilisée contre seti@home– Un client reçoit un bloc de données à analyser– Il effectue 95% de l’analyse– Il envoie a ses amis l’analyse partielle ainsi

que le bloc original– Ceux-ci peuvent finir l’analyse et être crédités

du travail

• Comment est-ce possible?– Seti@home n’associe pas un client avec une

tâche

• L’association a un coût élevé

Page 13: Systèmes Distribués

13Mastère MIAGE, 2006

Résultats faux• Volontaire:

– Spot checking• Bug : très difficile à détecter

– Les clients différents donneront le même résultât faux• Aléatoire:

– Un résultat faux peut être le résultat de circonstances passagères (bug d’un autre logiciel, problème réseau…)

– On ne veut pas se priver de participants trop rapidement

– Mise en place de grey/black lists– Un client en liste grise sera testé plus souvent (période

de probation)– Un client en liste noire sera interdit de travailler

• Limitations:– On ne sait pas bien identifier un client– Login : la création de comptes est gratuite et facile– IP : IP dynamiques ou utilisation de proxy

Page 14: Systèmes Distribués

Mastère MIAGE, 2006

2 - Pair à Pair de fichiers

Page 15: Systèmes Distribués

15Mastère MIAGE, 2006

Principe• Le P2P de fichier est né du « besoin » de partager

– Mettre à disposition des autres des fichiers– Extension du « cercle des amis »

• Chaque pair met à disposition des autres des fichiers– Les downloads se font de pair à pair

• Principalement utilisé à la limite (hors) de la légalité

• Mais fort potentiel– Distribution de fichiers sans serveur centralisé (exemple:

patch dans WoW)– Récupération des espaces libres sur plusieurs machines

dans un LAN• Principaux problèmes

– Recherche– Passage à l’échelle, tolérance aux pannes– Équilibre entre download et uploads– Pollution

Page 16: Systèmes Distribués

16Mastère MIAGE, 2006

Problèmes• Recherche

– Mécanismes pour trouver le fichier recherché– Efficacité

• Utilisation de la bande passante• Nombre de réponses • Temps

• Passage à l’échelle– Combien de pairs le réseau peut supporter en restant

efficace• Résistance aux pannes

– Combien de pairs peuvent disparaître avant que le réseau ne soit plus efficace?

– Liens avec la théorie de la percolation (étude à l’échelon global des effets d’actions locales)

• Équilibre down/up– Partage de fichiers, implique… partage – Comment inciter certains à partager?

• Pollution– Détecter les fichier corrompus – Les éliminer du réseau

Page 17: Systèmes Distribués

Mastère MIAGE, 2006

2 - Pair à Pair de fichiers2.1 - Napster

Page 18: Systèmes Distribués

18Mastère MIAGE, 2006

Napster• Premier systèmes P2P

– Inventé par Shawn Fanning en 1999– Utilise des serveurs centralisés pour l’indexation– Transferts de fichiers en P2P

• Vision utilisateur– Les serveurs sont transparents, tout se passe comme si

le partage se faisait de pair à pair• Pas de tolérance aux pannes

– Un fichier était chargé complètement depuis un autre pair

• Si disparition du pair, disparition du fichier– Dépendant des serveurs

• Les détenteurs de droits ont fait fermer les serveurs, tuant le réseau

• Passage à l’échelle– Utilisation de serveurs multiples

Page 19: Systèmes Distribués

19Mastère MIAGE, 2006

Napster

ServeursPair

Pair

PairPair

Pair

Offre/Recherche

Téléchargement

Page 20: Systèmes Distribués

Mastère MIAGE, 2006

2 - Pair à Pair de fichiers2.2 - Gnutella

Page 21: Systèmes Distribués

21Mastère MIAGE, 2006

Gnutella• Système Pair à Pair totalement décentralisé• Gnutella est un protocole

– Pour partager des fichiers sur un réseau (Internet)– Construit comme remplacent décentralisé de

Napster

• Construit pour être tolérant aux pannes– “Gnutella can withstand a nuclear war and an

army of lawyers”.

• Spécification ouvertes, pas de standardisations– Plein de clients plus ou moins compatibles– Ajout de fonctionnalités

• Les plus connus: BearShare, LimeWire, Gnucleus

Page 22: Systèmes Distribués

22Mastère MIAGE, 2006

Principes• Tous les nœuds sont égaux et ont 3 rôles

– Producteur: partage de fichiers avec les autres nœuds – Consommateur : téléchargement de fichiers– Routeur: Maintient de l’infrastructure du réseau

• Chaque nœud a un ensemble (limité) de voisins avec lesquels il peut communiquer– Formation d’un réseau logique (overlay network)– Pas forcément adapté au réseau physique

• Les messages envoyés servent à – Maintenir l’infrastructure– Chercher/annoncer des fichiers

• Un nœud est obligatoirement un routeur, même si aucun fichier n’est partagé

• Le transfert de fichiers se fait entre deux nœuds via http

• Routage = inondation

Page 23: Systèmes Distribués

23Mastère MIAGE, 2006

Page 24: Systèmes Distribués

24Mastère MIAGE, 2006

Inondation• Aucun vision centralisée

– Les nœuds ne connaissent que leurs voisins directs– Aucun serveur d’indexation

• Pour communiquer avec des nœuds autres que ses voisins, on inonde– On envoie le message a tout ses voisins– Qui l’envoient à leurs voisins…

• Difficultés– Un nœud risque de recevoir plusieurs fois le même message (cycle

dans le réseau)– Si pas de limitations, risque de surcharger le réseau

• Chaque nœud se souvient des messages qu’il a fait transiter– Cache limité dans le temps– Casse les cycles

• On fixe un nombre, le TTL (Time To Live) – Un message est envoyé avec une valeur bien choisie– Quand un nœud reçoit un message, il décrémente le TTL– Si TTL > 0, le message est envoyé aux voisins, sinon la retransmission

s’arrête • Cela limite la visibilité

– Un nœud ne peut atteindre que les nœuds qui sont à TTL sauts au maximum

– C’est l’horizon

Page 25: Systèmes Distribués

25Mastère MIAGE, 2006

Inondation (étape 1)

• Le nœud A envoie un message de recherche, avec un TTL de 3

A

Page 26: Systèmes Distribués

26Mastère MIAGE, 2006

• Le TTL est décrémenté par les autres clients, il vaut maintenant 2

Inondation (étape 2)

A

Page 27: Systèmes Distribués

27Mastère MIAGE, 2006

• Le TTL est à nouveau décrémenté, il vaut 1

Inondation (étape 3)

A

Page 28: Systèmes Distribués

28Mastère MIAGE, 2006

• Le nœud B reçoit le message pour la seconde fois, il ne le retransmet pas• Le TTL vaut 0, la transmission s’arrête, le nœud E ne reçoit pas le message

B

E

C

D

Inondation (étape 4)

A

Page 29: Systèmes Distribués

29Mastère MIAGE, 2006

Description du protocole• 5 types de messages

– Ping: un nœud prévient de son existence et demande à ses voisins de s’identifier

• Transmis par inondation– Pong: réponse à un Ping

• Seulement envoyé dans la direction du ping– Query: recherche de fichiers répondant à des criteres

• Transmis par inondation– QueryHit: réponse à une query. Contient la liste des

URLs où le fichier peut être téléchargé• Envoyé seulement dans la direction de la query

– Push: Demande au serveur d’initier le transfert de fichier pour limiter les problèmes de pare-feu.

Page 30: Systèmes Distribués

30Mastère MIAGE, 2006

Gestion des pare-feu• Un pare feu est un programme qui effectue un

filtrage au niveau réseau• Filtrage en entrée et en sortie

– Entrée : autorise une machine distante à contacter un programme local

– Sortie : autorise un programme local à contacter une machine distante

• Souvent, aucun filtrage en sortie, mais blocage en entrée– Une machine distante ne peut contacter un programme

local– Il faut que ça soit le programme qui initie la connexion– Le push est transmis sur une connexion existante et

permet de downloader un fichier sur une machine derrière un pare-feu

Page 31: Systèmes Distribués

31Mastère MIAGE, 2006

• Comment se connecter à un réseau Gnutella?• Il faut pouvoir se connecter à quelqu’un, mais

comment le trouver?– Des nœuds sont « bien connus » et servent

d’entremetteurs– Ex: gnutellahost.com:6346, router.limewire.com:6346

• Un client se connecte à un nœud gnutella• Il envoie ensuite un ping

– Celui-ci se propage par inondation• Les pairs recevant le ping peuvent répondre un

pong– Ces pongs contiennent une référence vers eux– Ces nœuds deviendront nos voisins directes dans le réseau

• En général, les entremetteurs ferment la connexion après le retour des pongs, ils ne participent pas au transfert de fichiers

• Plus un nœud reste longtemps dans le réseau, plus il devient connecté

Connexion à un réseau gnutella

Page 32: Systèmes Distribués

32Mastère MIAGE, 2006

Problèmes• L’inondation ne passe pas à l’échelle

– Quelle que soit la taille du réseau, un nœud est limité par son horizon (en général TTL=7)

• La recherche de fichiers se fait par nom– Deux fichiers aux noms différents peuvent avoir le

même contenu – Très sensible à la pollution

• Les messages d’architecture constituent une part importante du trafic de chaque nœud

• Les noeuds sont identifiés par IP et port– Impossible de retrouver un nœud qui a subit une panne

temporaire• Protocole de download primitif (http)

– Source unique– Pas de download en parallèle

Page 33: Systèmes Distribués

33Mastère MIAGE, 2006

Quelques faits • La popularité des recherches suit la même loi

que les pages webs– Les technologies de cache ont de bons résultats – Mettre en cache les résultats de recherches pendant 30

min réduit le trafic de 50%• Free riding (leechers)

– 66% des nœuds ne partagent aucun fichier– 73% des nœuds partagent moins de 10 fichiers– 37% des fichiers sont partagés par 1% des nœuds– Encore très proche du client/serveur

• Certains nœuds prennent une grande importance dans le réseau– Ils partagent beaucoup de fichiers– Ils ont beaucoup de connexions

• Rejoint une structuration à la Napster

Page 34: Systèmes Distribués

34Mastère MIAGE, 2006

Le monde est petit• En 1967, Stanley Milgram effectue une expérience

– Il écrit 160 lettres qu’il donne au hasard à des gens d’Omaha, Nebraska

– Il leur demande de les faire parvenir à un courtier de new-york

– Interdiction d’utiliser la poste, juste passer la lettre de main en main, à des connaissances bien choisies pour se rapprocher du courtier

• À la fin, 42 lettres sont arrivées à destination• En moyenne, les lettres sont passées entre les mains

de seulement 5.5 personnes• Cela montre que le réseau social des états unis (200

millions de personnes) a un diamètre d’environ 6 personnes– Certaines personnes ont beaucoup de relations, ce sont des

ponts entre les communautés– Dans l’expérience de Milgram, 25% des lettres sont passées

par le même marchand, 50% par les même trois personnes• Un petit nombre de ponts suffit à réduire

énormément le nombre de sauts: small world effect

Page 35: Systèmes Distribués

Mastère MIAGE, 2006

2 - Pair à Pair de fichiers2.3 - Edonkey

Page 36: Systèmes Distribués

36Mastère MIAGE, 2006

Edonkey• Similaire à Napster

– Serveurs utilisés pour l’indexation– Transfert direct entre les clients

• Données identifiées par des valeurs de hachage

• Clients sont identifiés par des IDs – HighID :Hachage réversible de l’adresse IP si

pas de pare-feu– LowID : Nombre aléatoire autrement

• Chaque client est connecté à un seul serveur en TCP/IP– Connexions multiples en UDP

Page 37: Systèmes Distribués

37Mastère MIAGE, 2006

Edonkey

• Le contenu à partager est divisé en morceaux (chunk)

• Un client peut télécharger des morceaux en parallèle de plusieurs clients

• Une fois téléchargé, l’intégrité d’un morceau est vérifiée– Utilisation des informations de hachage

• Chaque morceau téléchargé est automatiquement mis en partage– Obligatoire par le logiciel, rien dans le

protocole

Page 38: Systèmes Distribués

38Mastère MIAGE, 2006

Téléchargement

• Le client A envoie une requête à un serveur• Le serveur répond avec une liste d’ID de

clients– Si highID, connexion directe possible– Si lowID, la connexion est établie par

l’intermédiaire du serveur• A envoie une requête au serveur• Le serveur fait suivre cette requête au pair • Le pair ouvre d’ouvrir une connexion avec A• Le transfert a lieu

• Problèmes:– lowIDs augmentent la charge du serveur, et sont

donc souvent rejetés– Si les 2 pairs sont en lowID, pas de connexion

possible

Page 39: Systèmes Distribués

39Mastère MIAGE, 2006

Limitations• Un client ne voit que les fichiers

disponibles sur le serveur auquel il est connecté – Requêtes possibles vers d’autres serveurs en

UDP– Aucune garantie de réponse, et augmente la

charge des serveurs• Toujours des free-riders

– Le ratio down/up est géré par le client– Très facile à contourner avec un client

« maison » (mldonkey) ou du traffic-shapping• Les pairs sont très faciles à identifier

– Transformation highID vers IP possible– Liste des partages de chaque client disponible

(mais peut être interdit)

Page 40: Systèmes Distribués

Mastère MIAGE, 2006

2 - Pair à Pair de fichiers2.4 - Bittorent

Page 41: Systèmes Distribués

41Mastère MIAGE, 2006

Bittorrent • Système P2P avec serveurs (trackers)• Les trackers ne font que coordonner les

clients – Aucune connaissance des données distribuées– Peu gourmand en ressources

• Les données distribuées sont décrites dans des fichiers .torrent contenant– Le nom du fichier– Sa taille– Des informations de hachage– L’URL du tracker

• Pas de mécanismes de recherche• Le protocole essaie de forcer le partage

– Probablement le plus réussi actuellement

Page 42: Systèmes Distribués

42Mastère MIAGE, 2006

Bittorrent • Pour télécharger, un client donne au

tracker– Des informations sur ce qu’il recherche – Ses ports disponibles

• Le tracker retourne une liste de pairs ayant le même intérêt

• Les clients peuvent alors se connecter entre eux

• Les données sont divisées en morceaux (typiquement 250KB)

• Les morceaux peuvent être téléchargés chez n’importe quel pair

• Pour démarrer, un pair spécial ayant le contenu complet est nécessaire : la graine (seed)

Page 43: Systèmes Distribués

43Mastère MIAGE, 2006

Bittorrent• Plusieurs algorithmes pour sélectionner le prochain

morceau à télécharger• Priorité stricte (Strict Priority) : dés qu’un sous morceau

est téléchargé, les autres sous morceaux de la même pièce le seront ensuite

• Plus rare (Rarest First): demande du morceau le plus rare en premier– Limite la charge sur la graine– Augmente la probabilité d’avoir le fichier complet

• Aléatoire(Random):– Au démarrage, rien à uploader, les pièces rares ne sont que

sur quelques pairs, donc choix d’une pièce au hasard• Fin de partie (EndGame):

– Quand seulement quelques sous morceaux manquants, on les demande à tous les pairs

– Une fois qu’un téléchargement commence depuis un pair, on annule notre demande aux autres

Page 44: Systèmes Distribués

44Mastère MIAGE, 2006

Connexions• Les connexions entre pairs ont plusieurs états

– interested : indique qu’on veut downloader quelque chose

– chocked : indique qu’on refuse d’uploader • Sert à maintenir des informations entres les

pairs• Utilisé pour décider du sens d’écoulement des

informations• Un pair download ssi

– Il a indiqué interested– Il n’est pas chocked par l’autre pair

• Un pair upload ssi – Il n’a pas chocked l’autre pair– Si l’autre pair est interested

• Il est impératif de maintenir ces 2 états à jour– Un pair chocked indiquera quand même qu’il est

interested

Page 45: Systèmes Distribués

45Mastère MIAGE, 2006

Connexions• Un connexion est marquée interested si le pair a des

pièces qui nous intéressent• Un pair peut temporairement refuser d’uploader vers un

autre pair: il l’étouffe (choke)– Sert à indiquer qu’on ne veut pas envoyer de données, si par

exemple on ne download rien– Un client choke toujours une seed (la seed ne veut pas

recevoir de données)– Utile pour maintenir des connexions ouvertes sans rien

envoyer• Les décisions d’étouffement sont prises toutes les 10

secondes– Évite de basculer trop rapidement entre choked/unchoked

• On dé étouffe les 4 pairs qui ont le meilleur upload (i.e envoient des fichiers vers vous avec le meilleur débit) et sont interested– Permet de maximiser le download

• Les pairs qui ont un meilleur upload mais ne sont pas interested sont dé étouffés– Si ils deviennent interested ils remplacent le(s) plus mauvais

des 4 précédents

Page 46: Systèmes Distribués

46Mastère MIAGE, 2006

Bittorent• Recherche:

– Utilisation de serveurs web recensant des fichiers torrent– Modération, élimination de la pollution

• Certains trackers forcent un ratio download/upload– Si en dessous du ratio, alors un pair ne peut plus

downloader• Rend moins facile la collecte d’informations

– Seuls le tracker et le serveur web ont des informations globales

– Il faut avoir le fichier .torrent et donc avoir une cible– Mais étant donné un tracker, très facile d’avoir la liste

des pairs• Modèle économique

– Chaque pièce à une valeur dans le protocole– Une pièce rare sera demandée par beaucoup de clients,

et donc permettra d’en downloader d’autres– Une pièce très répandue ne sera jamais needed

Page 47: Systèmes Distribués

Mastère MIAGE, 2006

2 - Pair à Pair de fichiers2.5 - Freenet

Page 48: Systèmes Distribués

48Mastère MIAGE, 2006

Freenet

• Système construit pour être tolérant en panne et respecter la confidentialité

• Ian Clarke à l’université d’Edinburgh (1999)• Les documents sont chiffrés, découpés en petits

morceaux, mis en caches et répliques sur certains nœuds

• Les utilisateurs fournissent de l’espace disque et de la bande passante mais ne savent pas– Quels documents sont sur leurs machines – Où leurs documents sont stockés

• Les systèmes de chiffrement utilisés sont extrêmement robustes (cryptographie asymétrique)

• Freenet se concentre sur le stockage de fichiers, et non sur la recherche

Page 49: Systèmes Distribués

49Mastère MIAGE, 2006

Freenet• Le routage dans Freenet est auto-organisé• Chaque fichier a une clé unique associée• Chaque nœud garde localement une table de routage qui

contient les clés des fichiers stockés chez leurs voisins• Ajout d’un fichier

– Une nouvelle clé est calculée– On recherche le nœud qui contient déjà des clés proches– Limitation par TTL

• Recherche de fichier– Principe similaire à l’ajout : passage d’une requête de nœuds

en nœuds dans la bonne direction– Une recherche fructueuse provoque une mise à jour des

tables de routage : adaptation• Un document très demandé sera trouvé plus rapidement• Si une recherche échoue, il est possible d’augmenter le

TTL

Page 50: Systèmes Distribués

50Mastère MIAGE, 2006

Freenet• Un pair peut aussi être candidat pour stocker

une partie d’un fichier (réplication)• Avec ces mécanismes, Freenet converge vers

une architecture à la Gnutella– Un petit nombre de nœuds a d’énormes tables de

routage

• La connexion à un réseau Freenet se fait de manière similaire à Gnutella

Page 51: Systèmes Distribués

Mastère MIAGE, 2006

2 - Pair à Pair de fichiers2.5 – P2P structurés

Page 52: Systèmes Distribués

52Mastère MIAGE, 2006

P2P structurés

• Idées : structurer les réseaux P2P– Éviter la centralisation à la Napster– Éviter la jungle de gnutella

• Solution : Assigner un contenu donné à un nœud donné

• La recherche est simplifiée : on sait à quel(s) pair(s) demander

• Extension des concepts derrière Freenet

Page 53: Systèmes Distribués

53Mastère MIAGE, 2006

Tables de hachage distribuées

• Rappels:– Une table de hachage est une structure

de données qui associe une clé à une valeur

– Connaissant la clé, on peut retrouver la valeur en temps constant

– Même principe que le tableau, mais avec un espace de clés restreint

– Plusieurs façon de gérer les collisions (chaînage ou table ouverte)

Page 54: Systèmes Distribués

54Mastère MIAGE, 2006

• Une table de hachage associe un élément et une clé• L’élément est stocké dans la table à un indice

correspondant à la valeur de hachage de la clé• Si deux éléments ont la même valeur de hachage, alors ils

sont placés dans une chaîne• Dans une DHT, les cases des tables correspondent à des

nœuds différents• Dans un système P2P à base de DHT, le nombre de nœuds

varie, donc le nombre de cases• Solution: utilisation d’un hachage consistant

– Le nombre de valeurs possibles ne dépend pas du nombre de noeuds

– Un élément va sur le nœud dont la valeur de hachage est la plus proche

Tables de hachage distribuées

Page 55: Systèmes Distribués

55Mastère MIAGE, 2006

• Pour ajouter ou supprimer un fichier, il faut connaître le bon nœud

• Problème: on ne peut pas connaître tous les nœuds

• De manière générale, un nœud ne connaît que quelques voisins (organisation en anneau par exemple)

• Trouver un nœud se fait par sauts successifs– Soit le nœud est un de nos voisins– Soit on demande à un voisin plus proche du

nœud recherché • Exemple:

– Pastry (Microsoft Research)

Tables de hachage distribuées

Page 56: Systèmes Distribués

Mastère MIAGE, 2006

3 - Cryptographie

Page 57: Systèmes Distribués

57Mastère MIAGE, 2006

Introduction• Le sécurité d’un système informatique consiste

à protéger les services et données qu’il offre• 4 menaces possibles

– Interception : une personne non autorisée a accès à des données ou services

– Interruption : un service n’est plus disponible (DOS, corruption de données…)

– Modification : une modification non autorisée a été effectuée sur un service ou des données

– Fabrication : des données ou des services ont été crées

• Mécanismes de sécurité– Chiffrement – Authentification : vérification de l’identité– Autorisation : vérifier si l’accès est autorisé par la

politique de sécurité – Audit : conserve une trace des accès

Page 58: Systèmes Distribués

58Mastère MIAGE, 2006

Cryptographie• La cryptographie est l’étude de méthodes permettant de

transmettre une information de manière confidentielle• On applique à un message initial une transformation le rendant

incompréhensible, c’est le chiffrement• Le chiffrement utilise une clé de chiffrement• Le déchiffrement permet de reconstruire le texte en clair à

partir du texte chiffré en utilisant une clé de déchiffrement• L’opération consistant à trouver le texte en clair à partir du

texte chiffré sans utiliser la clé est le décryptement

Texte enclair

Texte chiffré

Texte enclair

Clé de chiffrement

Clé de déchiffrement

chiffrement déchiffrement

décryptement

Texte enclair

Page 59: Systèmes Distribués

59Mastère MIAGE, 2006

Cryptographie - 2• Principe de Kerkhoff: un ennemi connaît

en détail vos algorithmes de cryptographie• Corollaire: la sécurité d’un système

cryptographique ne doit reposer que sur la clé et non sur le secret de l’algorithme

• Si la clé de chiffrement et la clé de déchiffrement sont identiques: – chiffrement symétrique ou à clé secrète

• Si elles sont différentes– Chiffrement à clé publique clé privée

Page 60: Systèmes Distribués

60Mastère MIAGE, 2006

Attaques classiques• Attaque exhaustive

– On essaie toutes les clé possibles– Bien adapté au chiffrement symétrique– Si l’espace des clé est grand, impossible en pratique

• Attaque par observation du texte chiffré– Étude du texte chiffré pour en déduire des

informations sur la clé• Attaque à texte clair connu

– On compare un texte en clair et sa version chiffrée pour en déduire la clé

• Impersonnation– On s’interpose entre les parties désirant

communiquer en toute sécurité et on se fait passer pour l’une auprès de l’autre

Page 61: Systèmes Distribués

61Mastère MIAGE, 2006

Limitations des systèmes à clé secrète

• Toutes les personnes impliquées doivent avoir une copie de la clé– Nécessaire d’avoir un moyen sécurisé pour

la distribuer (valise diplomatique…)– Augmente le risque que la clé tombe entre

les mains de l’adversaire • Si une personne reçoit les messages de

n autres– Clé unique: un membre peut lire les

messages d’un autre– Nécessite n clés différentes pour assurer le

secret entre les n membres• Combien pour avoir une confidentialité

n vers n-1 ?

Page 62: Systèmes Distribués

62Mastère MIAGE, 2006

Échange d’un secret sur un canal non sécurisé

• Le protocole Diffie-Hellman (1976) permet à deux ordinateur de générer une clé privée

• Cette clé pourra ensuite être utilisée pour un chiffrement symétrique

• Il n’y a pas besoin de canal sécurisé• Permet de résoudre le problème de la

distribution des clés• Utilise la notion de racine primitive (ou

générateur primitif)– Soit p un nombre premier, une racine primitive

g est un nombre tel que, quand n va de 1 à p-1, gn mod p prend toutes les valeurs de 1..p-1

Page 63: Systèmes Distribués

63Mastère MIAGE, 2006

Diffie-Hellman• Alice et Bob veulent communiquer• Ils choisissent 2 nombres premiers g et p avec p grand

(> 512 bits) et g racine primitive de p• Ces deux nombres n’ont pas besoin d’être gardé secrets• Alice et Bob choisissent chacun un grand nombre

aléatoire (resp. a et b) et le gardent secret • Alice calcule A = ga mod p et l’envoie a Bob• Bob calcule B = gb mod p et l’envoie a Alice• Bob et Alice calculent leur clé privée

– Alice: K=Ba mod p = (gb)a mod p– Bob: K=Ab mod p = (ga)b mod p

• Cette clé peut maintenant être utilisée pour un codage symétrique

• Une attaque nécessiterait de calculer a à partir de A et b à partir de B, ce qui est extrêmement difficile

• Vulnérable à l’impersonnation

Page 64: Systèmes Distribués

64Mastère MIAGE, 2006

Systèmes à clé publique clé privée• Inventé en 1976 par Whitfield Diffie et Martin Hellman • Idée: avoir 2 clefs, une publique servant a chiffrer, une

privée servant a déchiffrer• La clé publique est … publique(!), n’importe qui peut l’avoir

sans compromettre le système• La clé privée sert a déchiffrer et doit rester secrète • Avantages:

– Plus besoin de canal sécurisé de distribution des clés: on met les clés publiques sur Internet

– Communications de n vers 1 privées • Principe général

– On fabrique une clé privée– On en déduit (par une fonction mathématique) une clé publique– Toute la force repose sur le fait que retrouver une clé privée

depuis une clé publique est impossible en un temps fini, même pour un ordinateur

– On utilise pour cela des fonctions dites à sens unique (one way)

Page 65: Systèmes Distribués

65Mastère MIAGE, 2006

Cryptosystème RSA

• Inventé en 1987 par Rivest, Shamir, et Adleman

• Donné naissance à la compagnie RSA en 1992

• Système à clé publique clé privée• Basé sur la théorie des grands

nombres

Page 66: Systèmes Distribués

66Mastère MIAGE, 2006

Rappels mathématiques• Tout nombre peut se décomposer en un produit unique

de nombres premiers– 1176 = 2 * 2 * 2 * 3 * 7 * 7

• Deux nombres sont premiers entre eux si leur PGCD vaut 1– PGCD(21,10) = 1– PGCD(15,10) = 5

• Inverse modulo– L’ inverse de e modulo n est d tel que e*d = 1 mod n

• Fonction phi d’Euler (n) = combien de nombres entre 1 et n-1 premiers avec n

• Théorèmes (P*Q) = (P-1)*(Q-1) if P et Q sont des nombres premiers– Si PGCD(T,R) = 1 et T < R, alors T(R) =1 mod R

Page 67: Systèmes Distribués

67Mastère MIAGE, 2006

RSA - algorithme• Choisir aléatoirement 2 grands nombres

premiers p et q (> 100 chiffres chacun)• Calculer n = pq• Choisir un petit entier impair e premier avec

(n). Combien vaut (n)?• Calculer d inverse de e modulo (n).• La clé publique P est P = (e,n)• La clé secrète S est S = (d,n) • Chiffrement(M) = Me mod n• Déchiffrement(C) = Cd mod n

Page 68: Systèmes Distribués

68Mastère MIAGE, 2006

RSA - exemple

• Chiffrez et déchiffrez le message "2" avec l’algorithme RSA en prenant p=3,q=17 et e=7– On pourra utiliser le fait que ab mod n = (a mod n * b mod n)

mod n

Page 69: Systèmes Distribués

69Mastère MIAGE, 2006

Casser RSA• Étant donne un message chiffré, comment retrouver le

message initial?• L’ attaquant possède

– L’algorithme– La clé publique (e,n)

• Il faut retrouver la clé privée (d,n) ce qui revient à trouver d– On cherche donc à factoriser n pour retrouver p et q– Ce qui nous donnera (n), e et finalement d

• Est-ce difficile?– Extrêmement, les meilleurs algo sont proches de l’exponentielle!

• Exemple: nombre de Pentium 500Mhz et mémoire requise pour factoriser une clé en 1 an en utilisant le General Number Field Sieve (GNFS)

Taille (bits) Machines Mémoire

430 1 trivial

760 215 000 4 Go

1020 342 000 000

170 Go

1620 1.6x1015 120 To

http://www.rsasecurity.com/

Page 70: Systèmes Distribués

70Mastère MIAGE, 2006

Signature électronique• Comment authentifier la provenance d’un

message?– On le signe

• Mais comment relier une signature avec une personne?

• Utilisation d’un système de cryptographique asymétrique– Tout le monde connaît la clé publique– Mais une seule personne connaît la clé privée

• Bob chiffre le message avec sa clé privée• Alice déchiffre le message avec le clé publique

– Seul Bob a pu l’écrire, donc nous avons authentifié l’expéditeur

• Mais tout le monde peut le déchiffrer…

Page 71: Systèmes Distribués

71Mastère MIAGE, 2006

Hachage• Une fonction de hachage prend en entrée un

message de longueur arbitraire, et produit en sortie un nombre fixe de bits

h = H(m)• Fonction à sens unique (one way)

– Il est impossible de trouver m connaissant h • Résistance aux collisions faible

– Il est très difficile en pratique de trouver m’ tel que H(m)=H(m’) avec mm’

• Résistance aux collisions forte– Il est impossible en pratique de trouver m’ tel que

H(m)=H(m’) avec mm’• Une fonction de hachage permet donc de

vérifier qu’une donnée n’a pas été modifiée• Implémentation célèbre : MD5

Page 72: Systèmes Distribués

72Mastère MIAGE, 2006

Signature électronique - 2• Comment avoir l’authentification et la

confidentialité?• Alice calcule un résumé (par hachage) du

message m• Alice chiffre le résumé avec sa clé privée• L’ensemble (m et résumé chiffré) est

chiffré avec la clé publique de Bob• Bob déchiffre avec sa clé privée

– Il peut lire le message– En utilisant le clé publique d’Alice, il vérifie

que le résumé vient bien d’Alice (authentification) et que le message n’a pas été modifié (confidentialité)

Page 73: Systèmes Distribués

73Mastère MIAGE, 2006

Le futur: informatique quantique• Dans les ordinateurs classiques, un bit vaut 0 ou 1 exclusivement• Dans un ordinateur quantique, un quantum bit (qbit) peut

prendre la valeur, 0, 1 ou une superposition des 2– Quand un qbit a la valeur 0 et 1, on peut imaginer qu’il se trouve

dans 2 univers, un où il aurait la valeur 0, l’autre où il aurait la valeur 1

• Effectuer une opération sur un tel qbit revient à faire 2 opérations en même temps

• Donc si 2 qbits, on peut faire 4 opérations classiques, sur 3 qbits …

• Plus on a de qbits plus on a de parallélisme quantique• Avec de tels ordinateurs, des algorithmes exponentielles

deviennent polynomiaux!• Mais c’est encore très théorique

– On a les algorithmes (Shor pour factoriser les nombres par exemple)– Il faut construire les ordinateurs…– Record: IBM, 7 qbits en 2001 pour factoriser 15 en 5*3 avec Shor