Introduction au réseau P2P
L’architecture Peer to Peer
Parmi les recherches réalisées pour entamer ce mémoire, différentes approches ont été trouvées pour définir un réseau P2P. Voici quelques définitions parmi beaucoup d’autres : « Le système P2P ou « égal à égal » est un système dans lequel les noeuds du réseau ont les mêmes rôles. Chaque noeud est à la fois client et serveur. Les systèmes P2P permettent la décentralisation, le partage de l’ensemble des ressources du réseau P2P, la communication et collaboration des noeuds de manière directe. Dit autrement, les systèmes P2P permettent l’exploitation par un noeud de l’ensemble des ressources du réseau . »[2] « Le terme « Peer-to-Peer », « poste à poste » ou « pair à pair » en français (ou plus couramment P2P), désigne un modèle de réseau informatique dont les éléments (les noeuds ou « peer ») sont à la fois clients et serveurs lors des échanges. Grâce à ce modèle on a pu décentraliser les réseaux, en opposition aux architectures traditionnelles client/serveur. Ce modèle a pu offrir la possibilité aux pairs d’avoir des communications directes, d’égal à égal comme son nom indique, entre les différents noeuds du réseau, qui peuvent alors échanger différents types d’informations sans passer par un serveur central. ».[3] Peer-to-Peer Networking est surtout connu sous la marque de Napster. Dans cette application, le concept de réseau Peer-to-Peer est utilisé pour partager des fichiers, à savoir l’échange de fichiers audio compressés MPEG Layer3 (mp3). Cependant, Peer-to-Peer ne concerne pas seulement le partage de fichiers, mais aussi l’établissement de réseaux de communication multimédia basés sur des concepts Peer-to-Peer ou le partage de ressources.[4]
Aperçu historique en 1969, le réseau ARPANET (Advanced Research Projects Agency) met en oeuvre un réseau d’interconnexion non centralisé qui s’appuie sur la commutation de paquet et les protocoles TCP/IP publier en 1974 [5], sont devenues les bases techniques de l’internet et la norme de tous les réseaux informatique à partir des années 80.[6] Nul protocole ni application P2P n’ont vu le jour, jusqu’à 1999, ou Napster a été la première application peer-to-peer pour les usagers conçue et développée par Shawn Fanning, dans un premier temps il avait pour but de seulement échanger et chercher des fichiers entre internautes sans avoir à passer par les moteurs de recherche. Des faits de piratage entraineront la fermeture de Napster durant l’été 2001, soit deux ans après sa création.
Cette disparition donnera naissance a des applications peer-to-peer nouvelles: AudioGalaxy, eDonkey, Gnutella, iMesh ou encore Kazaa. Qui connaissent par la suite un succès immédiat (plus de 3 milliards de fichiers téléchargés durant l’été 2001). L’année 2001 verra également l’apparition des protocoles BitTorrent et WinMX. L’apport principal de ces nouvelles applications réside dans leur mode 100% Peer-to-Peer, aucun serveur central n’est utilisé pour l’établissement des connexions entre utilisateurs. Seuls quelques serveurs dits annuaires sont utilisés pour initialiser les applications avec une première liste d’ordinateurs peers. C’est ainsi que le Peer-to-Peer fut connu et émergé dans l’univers du partage de fichier .[4]
Le modèle décentralisé (purs)
Les réseaux totalement décentralisés sont dits « pure ». Dans ce type d’architecture, l’ensemble des noeuds sont égaux et jouent le même rôle. Chaque peer gère donc les recherches et le partage, sans passer par un serveur central ou des super-peer, en utilisant en général des techniques de « flood » ou inondation. Gnutella est le premier réseau peer-to-peer décentralisé non structuré par inondation (flooding), crée en mars 2000 par Justin Frankel et Tom Pepper. Pour rejoindre le réseau Gnutella, le client commence par envoyé un message à ses voisins disponible (le ping), qui l’envoient a leur tour a leur voisins et ainsi de suite. Les noeuds qui ont reçu le message de connexion répondent en fournissant leur adresse IP, le numéro de port ainsi que la liste et la taille des données qu’ils partagent (le pong). Pour lancé une recherche le client envoie une requête (Query) a tous ses voisins qui vont eu même la transmettre à leurs voisins et ainsi de suite jusqu’à TTL=0. Tous les noeuds qui sont concerné par la requête vont répondre à l’émetteur du signal (Queryhit). La réponse remonte de proche en proche jusqu’au client initial qui va par la suite envoyer une requête de téléchargement directement au client qui possède le fichier. Si les données sont derrière un firewall un message Push est utilisé. Les requête sont stoppée par l’expiration de TTL qui a une valeur fixé au début ceci pour éviter de parcourir la totalité du réseau et retourner une réponse négative.
L’algorithme AES
L’Advanced Encryption Standard, ou Rijndael a été officialisé en octobre 2000 en remportant le concoure pour créer un successeur au DES, lancé par NIST ( National Institute of Standards and technology) en janvier 1997, cet appel à la candidature reçoit 15 proposition d’algorithme, 5 seulement furent choisis pour accomplir l’évaluation plus poussé en avril 1999 : MARS, RC6, RIJNDAEL, SERPENT et TOWFISH [21]. Au finale la NIST élit RIJNDAEL comme étant le nouveau standard pour joan Daemen et Vincent Rijmen devaient respecter certaines conditions comme la rapidité du chiffrement, simplicité de l’algorithme ou encore une large portabilité.[15] L’algorithme AES est un algorithme symétrique de chiffrement par blocs de 128 bits (soit 16 octets) avec une clé de 128, 192 ou 256 bits. L’AES applique un certain nombre de rounds dépendent de la taille de la clé: 10 tours pour une clé de 128 bits, et 14 tours pour une clé de 256 bits, et il travaille sur des blocs rectangulaires de 4 rangées et Nc colonnes, où chaque terme xi,j (appelé octet ou byte) est composé de 8 bits (b = b7b6b5b4b3b2b1b0) et peut être représenté algébriquement en degré polynôme ≤ 7 (b = b7X7 + b6X6 + b5X5 + + b4X4 b3X3 + b2X2 + b1x + B0) avec des coefficients dans {0,1}.le chiffrement et le déchiffrement s’effectuent de la même manière.
L’algorithme de Blowfish
Blowfish a été créé en 1993 par Bruce Schneier comme une alternative rapide et gratuite aux algorithmes de cryptage existants. Blowfish est un algorithme de chiffrement symétrique qui peut être utilisé efficacement pour le cryptage et la sauvegarde des données. Il faut une clé de longueur variable allant de 32 bits à 448 bits; 128 bits par défaut, ce qui le rend idéal pour sécuriser les données et qui peut être utilisé comme un remplacement pour l’algorithme DES. Blowfish n’est pas breveté, sans licence, et est disponible gratuitement pour tous les utilisateurs. Blowfish est basé sur une structure de type “réseau de Feistel”, itérant une fonction de cryptage simple 16 fois. La taille du bloc est de 64 bits, et la clé peut être n’importe quelle longueur jusqu’à 448 bits. Blowfish est un chiffrement de bloc avec clé de longueur variable. Il convient aux applications où la clé ne change pas souvent, comme un lien de communication ou un chiffreur automatique de fichiers.
Conclusion général
L’aspect principal de ce projet a été la sécurisation des messages par la cryptographie symétrique dans une application P2P décentralisé en utilisant la technologie JXTA. De ce fait pour atteindre cet objectif posé il a fallu combiner à la fois le système pair à pair (P2P), la plateforme JXTA ainsi que la cryptographie symétrique et asymétrique, et la programmation en langage java. Nous avons donc vu dans ce projet les notions de base du Peer-to-Peer et les types de cette architecture et nous avons compris son utilité pour la transmission des messages instantanée et le partage de fichiers. Nous nous somme introduit à la cryptographie moderne en se focalisant sur les algorithmes de cryptage adoptés dans notre application, sans oublier de présenter les concepts de la plateforme JXTA et ses protocoles, sachant qu’il existe dans le noyau de JXTA une bibliothèque de cryptage simple, prédéfinie et prenant en charge des algorithmes de cryptage symétriques (RC4) et Des algorithmes cryptographiques asymétriques (RSA). Notre travail peut aider les nouveaux développeurs des applications P2P qui s’appuient sur JXTA à se familiariser avec ce nouveau concept. Le projet a abouti au but fixé initialement, malgré les difficultés qu’on a eu pour se documenter sur JXTA qui sont rares et nous a fait perdre du temps, sans parler des restrictions à respecter pendant la programmation pour se limiter au protocoles et service propre à JXTA. Toutefois, on aimerait intégrer plus d’option de partage et ajouter d’autres sous services afin d’étendre cette infrastructure au sein d’une large communauté.
|
Table des matières
Table des figures
Table des tableaux
Introduction générale
Chapitre1 Introduction au réseau P2P
Introduction
1.L’architecture client-serveur
1.1. Avantages de l’architecture client-serveur
1.2. Inconvénients de l’architecture client-serveur
2.L’architecture Peer-to-Peer
2.1. Les avantages du P2P
2.2. Les inconvénients du P2P
3.Comparaison entre Client /serveur et P2P
4.Aperçu historique
5.Type de réseaux Peer-to-Peer
5.1. Peer-to-Peer non structurés
5.1.1. Le modèle centralisé
5.1.2. Le modèle Semi-décentralisé (Hybride)
5.1.3. Le modèle décentralisé (purs)
5.2. Peer-to-Peer structurés
5.2.1. Le protocole Chord
5.2.2. Le protocole CAN :
Conclusion
Chapitre2 Cryptographies
Introduction
1.Histoire de la cryptographie :
2.La terminologie de la cryptographie
3.Définition de la cryptographie :
4.Objectif de cryptographie :
Technique de cryptographie moderne
Cryptographie Asymétrique
6.1. Avantage et inconvénients du chiffrement Asymétrique
6.2. Algorithme de chiffrement à clé publique
L’algorithme RSA
7.Cryptographie Symétrique
7.1. Avantage et inconvénient du chiffrement symétrique
7.2. Algorithme de chiffrement à clé secrète
7.2.1. Chiffrements symétrique par flux
L’algorithme RC4
L’algorithme A5
7.2.2. Chiffrement symétrique par bloc
Le réseau de Feistel
L’algorithme DES :
L’algorithme AES
L’algorithme de Blowfish
Conclusion
Chapitre3 Introduction à JXTA
Introduction
Le projet JXTA
La structure de JXTA
Objectifs de JXTA :
Sécurité de JXTA
Les concepts de base de JXTA
Les Peer Group services :
Les protocoles JXTA
Conclusion
Chapitre 4 Conception et réalisation de l’application
Introduction :
Problématique
Objectifs
Caractéristiques de l’application :
Outils de travail :
Fonctionnement de notre application :
Interface graphique
Conclusion et perspective :
Conclusion général
Acronymes
Références
Résumé
Abstract
Télécharger le rapport complet