====== Algorithmes de Réseaux P2P ====== Cette page est un peu fourre-tout car la compréhension des notions de réseau est nécessaire pour ranger tout ça. On souhaite en fait évoquer les technologies sous-jacentes utilisées par les P2P, les noms d'algorithmes, la recherche de noeuds, le routage... On pourra aussi voir la page [[:p2p:autres]] qui recense des projets utilisant ces technologies. ===== Non-classé ===== * [[wpfr>WebRTC]], intégré aux navigateurs web, permet de faire du P2P ===== Protocoles de routage ===== ==== Présentation succinte ==== Passons d'abord par [[http://ctvr.tcd.ie/undergrad/4ba2.05/group6/index.html|une présentation en anglais]] de quelques algos de routage. On y voit le routage naïf mis en oeuvre par Gnutella. L'utilisation d'une table de hachage distribuée est par contre plus difficile à comprendre. Le modèle de Chord est pris comme exemple avec une fonction de hachage appliquée à la fois aux données et aux IPs des noeuds du réseau. On comprend que les noeuds forment une chaîne en forme de cercle, qui permet à un noeud effectuant une recherche d'avoir une idée du noeud auprès duquel effectuer sa demande. Est également évoqué le routage sémantique, qui remplace les topologies de routage classique en mesurant le degré de confiance et de réussite des noeuds selon le type de ressources recherché. Finalement, l'article témoigne aussi que l'anonymat dans un réseau P2P passe par des choix particuliers de routage. Freenet est pris en exemple. La méthode d'anonymisation est d'abord que lors de la mise en partage, il n'est pas évident de distinguer s'il s'agit vraiment d'une mise en partage de nouvelle ressource, ou de la simple propagation d'une requête pour une ressource. Chaque noeud intermédiaire peut prétendre être à l'origine de la donnée.\\ Pour ce qui est de l'efficacité du routage dans Freenet, chaque noeud a une table de routage, dans laquelle est estimée l'efficacité des noeuds à fournir des réponses pour des clés particulières, ainsi que la qualité du lien (temps de réponse, débit). Concernant les "types" de clés, il s'agit justement uniquement d'une similitude entre les clés, et non pas d'une similitude sémantique sur les contenus. ==== D'autres algos ==== * Babel: http://www.pps.univ-paris-diderot.fr/~jch/software/babel/ ([[http://linuxfr.org/news/p2p-hacker-fr-premier-etat-de-l-art-sur-la-decentralisation#comment-152427|source]]) * IPOP: http://ipop-project.org/ ([[http://linuxfr.org/news/p2p-hacker-fr-premier-etat-de-l-art-sur-la-decentralisation#comment-152427|source]]) * CJDNS: http://cjdns.info/ ([[http://linuxfr.org/news/p2p-hacker-fr-premier-etat-de-l-art-sur-la-decentralisation#comment-152427|source]]) * Telehash: [[wp>Telehash]] (protocole mesh chiffré) ===== Distributed Hash Table (DHT) ===== * [[def>dht|DHT]] * [[wp>Chord_(DHT)]] * [[wp>Kademlia]] * [[wp>Pastry_(DHT)]] * [[wp>Koorde]] * [[wp>Tapestry_(DHT)]] * [[wp>Content_addressable_network]] * [[wp>Distributed_hash_table]] ===== Autres ===== Anonymisation de la couche réseau (via un mixnet), pas spécialement P2P : * Nym - https://linuxfr.org/users/e3ms6vyx/liens/nym-un-reseau-anonyme-chiffre - https://nymtech.net/nym-whitepaper.pdf * https://changelog.complete.org/archives/10478-easily-accessing-all-your-stuff-with-a-zero-trust-mesh-vpn : un article sur les couches réseau assimilées à du VPN décentralisé ===== Challenges des réseaux P2P ===== * [[wp>Sybil_attack]], un principe de vulnérabilité qui s'applique notamment à Kademlia * [[wp>Modèle_Byzantine_Altruistic_Rational]] * [[wp>Problème_des_généraux_byzantins]], sur la faillibilité et l'intégrité des interlocuteurs des réseaux de communication * Une faille (mineure) découverte dans une extension du protocole BitTorrent: http://torrentfreak.com/attackers-can-steal-bandwidth-bittorrent-users-research-finds-140819/