116 / 736SYBIL

Sybil Attack

Un attaquant derrière de nombreux participants apparemment indépendants

Cent comptes ne représentent pas forcément cent personnes. Une Sybil Attack exploite cette différence : un attaquant se fait passer pour de nombreux participants. Bitcoin ne choisit donc pas son historique en comptant les ordinateurs connectés.

Une Sybil Attack consiste, pour un adversaire, à contrôler de nombreuses identités présentées comme des participants indépendants. Dans Bitcoin, ajouter des connexions réseau ne lui donne, à lui seul, ni puissance de minage supplémentaire ni droit de changer les règles. Cela peut toutefois l’aider à influencer les sources d’information d’un nœud particulier.

Anne choisit un service grâce aux recommandations d’un forum. Des dizaines de comptes le vantent, mais son exploitant les contrôle tous. Leur accord n’est donc pas indépendant. John R. Douceur a décrit le problème correspondant dans les réseaux informatiques dans The Sybil Attack, en 2002 : un adversaire peut se faire passer pour plusieurs participants. Inventer un nom est facile ; obtenir les adresses, serveurs (des ordinateurs qui fournissent des services à d’autres) et connexions nécessaires peut coûter du temps et de l’argent. [1]

Dans le réseau Bitcoin, un pair est simplement un interlocuteur avec lequel votre programme échange des données. Pierre peut exploiter plusieurs nœuds, et une entreprise beaucoup plus. Bitcoin n’exige aucun registre des personnes attribuant un seul nœud à chacune. Une adresse IP désigne un emplacement sur le réseau auquel le programme se connecte. Une autre adresse IP ne prouve donc pas qu’il s’agit d’un autre propriétaire. Exploiter plusieurs nœuds n’est pas en soi une attaque ; le problème est d’abuser de leur apparente indépendance. [1] [3]

Le Full Node de Pierre est un logiciel qui vérifie lui-même les règles de Bitcoin. Signer signifie ici utiliser une clé privée, une valeur numérique secrète, pour créer une preuve vérifiable de l’autorisation du paiement. Les autres peuvent vérifier la signature sans connaître ce secret. Même si tous les pairs connectés au nœud de Pierre lui envoient une transaction portant une signature invalide, il la rejette. Les réponses concordantes ne sont pas des votes. Un bloc regroupe des transactions en un lot ajouté à l’historique commun. Le nœud vérifie aussi les blocs entiers : par exemple, qu’ils ne dépensent pas des fonds déjà dépensés et ne créent pas de récompense interdite. Le réseau fournit les données ; leur validité dépend des règles du nœud, pas de la popularité de l’expéditeur. [2] [6] [9]

Deux branches valides de l’historique peuvent parfois entrer en concurrence. Proof of Work permet de comparer leur travail cumulé, un poids déduit de la difficulté des blocs trouvés. Le minage nécessite de véritables essais de calcul ; renommer un ordinateur n’ajoute aucun travail. Si un attaquant répartit le même matériel de minage entre plusieurs identités, cette répartition n’augmente pas sa puissance totale. Le principe « un compte, une voix » ne s’applique donc pas ici. [2] [6]

Mille connexions ne remplacent pas la clé privée nécessaire pour dépenser les bitcoins d’autrui. Multiplier les identités ne suffit pas non plus à enfreindre les règles d’émission ni à faire accepter un bloc invalide par un nœud qui vérifie correctement. Ce n’est pas une garantie contre toute attaque. L’adversaire peut aussi acquérir de la puissance de minage ou exploiter une faille logicielle. Ces capacités doivent être évaluées séparément, sans les attribuer au seul nombre de comptes. [2] [9]

Revenons au nœud de Pierre. Un attaquant peut tenter de remplir sa liste d’adresses connues et d’occuper ses connexions. S’il contrôle toutes les voies pertinentes vers le reste du réseau, il peut retenir des blocs et lui montrer une situation incomplète ou en retard. Cet isolement est une Eclipse Attack. Une Sybil Attack peut le faciliter, mais de nombreuses identités hostiles ne prouvent pas que l’isolement a réussi. Vérifier les données reçues ne révèle pas celles qu’on vous cache. [3] [5] [8]

Bitcoin Core combine plusieurs obstacles. La sélection automatique des connexions sortantes recherche une diversité de réseaux, tandis que les adresses connues sont réparties en groupes pour empêcher une seule source de dominer facilement tout le choix. De brèves connexions de test, appelées feeler, vérifient si d’autres pairs sont joignables. Ces mécanismes compliquent l’attaque ; ils n’identifient pas le propriétaire réel de chaque serveur et ne garantissent pas l’absence d’isolement. L’implémentation évolue ; les sources présentent ici Bitcoin Core 29.0. [4] [7] [8]

Une adresse IP ou celle d’un service Tor indique au programme où se connecter. Elle ne certifie pas la présence d’une nouvelle personne indépendante à l’autre bout. Un exploitant peut posséder de nombreuses adresses, et plusieurs utilisateurs partager une IP publique ou une partie du trajet réseau. Tor peut protéger la confidentialité de la connexion, mais son adresse ne prouve pas à elle seule l’indépendance d’un pair. Acheminer les messages et pondérer l’historique de Bitcoin sont deux choses distinctes. [3] [4]

Proof of Work répond à une partie importante du problème des fausses majorités, pas à tous les risques de communication. Le réseau P2P — l’échange direct de données entre participants — peut subir saturation, surveillance et rétention de messages. Sa protection inclut donc la gestion des connexions et la limitation de la consommation de ressources. La sécurité dépend de ce que l’attaquant contrôle réellement : des noms, des chemins réseau, de la puissance de calcul ou une combinaison de ces moyens. [1] [5] [6]

Un compteur de nœuds publiquement joignables n’est ni un recensement de personnes ni un vote sur les règles. Leurs sources d’information et leurs propres vérifications comptent aussi. Votre Full Node vous permet de vérifier les blocs reçus, mais il doit rester relié au reste du réseau. Un portefeuille est une application ou un appareil permettant de recevoir et d’envoyer des bitcoins. S’il utilise un serveur tiers, la présence de nombreux nœuds ailleurs ne supprime pas cette dépendance. Davantage de contacts ne signifie pas automatiquement davantage d’indépendance. [1] [3] [9]

Pour une vision complète, lisez aussi Nakamoto Consensus, Eclipse Attack, Selfish Mining, Block Propagation, Bitcoin, Proof of Work. Cette entrée est également citée par Byzantine Generals Problem, Nakamoto Consensus, Eclipse Attack, Selfish Mining.

DOC · 001John R. Douceur — The Sybil AttackSource primaire DOC · 002Satoshi Nakamoto — Bitcoin whitepaperSource primaire DOC · 003Bitcoin Developer Guide — P2P NetworkDocumentation DOC · 004Bitcoin Core v29.0 — Peer connectionsDocumentation DOC · 005Heilman et al. — Eclipse Attacks on BitcoinSource primaire DOC · 006The Bitcoin Backbone ProtocolSource primaire DOC · 007Bitcoin Core v29.0 — Address managerDocumentation DOC · 008Bitcoin Optech — Eclipse attacksDocumentation DOC · 009Bitcoin Core v29.0 — Block validationDocumentation
Révisé le: Sources d’abord · Pas un conseil financier