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)
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
Mastère MIAGE, 2006
1 - Pair à Pair de calcul
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 »
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
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
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
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
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
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?
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é
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
Mastère MIAGE, 2006
2 - Pair à Pair de fichiers
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
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
Mastère MIAGE, 2006
2 - Pair à Pair de fichiers2.1 - Napster
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
19Mastère MIAGE, 2006
Napster
ServeursPair
Pair
PairPair
Pair
Offre/Recherche
Téléchargement
Mastère MIAGE, 2006
2 - Pair à Pair de fichiers2.2 - Gnutella
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
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
23Mastère MIAGE, 2006
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
25Mastère MIAGE, 2006
Inondation (étape 1)
• Le nœud A envoie un message de recherche, avec un TTL de 3
A
26Mastère MIAGE, 2006
• Le TTL est décrémenté par les autres clients, il vaut maintenant 2
Inondation (étape 2)
A
27Mastère MIAGE, 2006
• Le TTL est à nouveau décrémenté, il vaut 1
Inondation (étape 3)
A
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
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.
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
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
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
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
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
Mastère MIAGE, 2006
2 - Pair à Pair de fichiers2.3 - Edonkey
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
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
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
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)
Mastère MIAGE, 2006
2 - Pair à Pair de fichiers2.4 - Bittorent
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
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)
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
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
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
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
Mastère MIAGE, 2006
2 - Pair à Pair de fichiers2.5 - Freenet
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
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
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
Mastère MIAGE, 2006
2 - Pair à Pair de fichiers2.5 – P2P structuré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
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)
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
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
Mastère MIAGE, 2006
3 - Cryptographie
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
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
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
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
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 ?
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
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
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)
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
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
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
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
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/
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…
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
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é)
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
Top Related